Projectum
Everything that piles up around a folder of work — projects, playlists, todos, notes — in one window, connected.
No servers, no account, no telemetry. Your data is a JSON file sitting next to your work.
How it works
Point Projectum at a folder. Every subfolder becomes a project you can mark
done or tested, tag, pin, and annotate with live-rendered Markdown. The same
window holds your todos, a notebook of notes, and your YouTube study
playlists (fetched with yt-dlp, watched-state per video). All of it lives
in one .projectum.json inside the folder — it travels with your work and
diffs cleanly in Git.
Then there are relations: link anything to anything — a project to a playlist, a todo to a span of days, a note to a project. Date relations come together on the Calendar, a month view where scheduled work draws as bars across the weeks.
|
Calendar — anything linked to a date shows on that day; spans draw as bars. (Midnight) |
Playlists — paste a URL, tick videos off, keep notes per video. (Light) |
|
Notes — live Markdown; syntax markers hide until your cursor enters the phrase. (Paper) |
Todo — quick folder-scoped tasks, schedulable on the calendar. (Gruvbox) |
Install
Use a virtual environment with 64-bit CPython 3.10 or newer. The compatible Python version also depends on your OS and the available PySide6 wheels; see installation requirements and troubleshooting.
Linux / macOS:
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install projectum
.venv/bin/projectum
Windows (PowerShell or Command Prompt):
py -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\python -m pip install projectum
.venv\Scripts\projectum
Or a package manager:
brew install --cask wleeaf/tap/projectum # macOS
scoop bucket add wleeaf https://github.com/wleeaf/scoop-bucket && scoop install projectum # Windows
yay -S projectum # Arch (AUR)
Or grab a standalone build from the latest release:
| Platform | File | Notes |
|---|---|---|
| Linux | Projectum-x86_64.AppImage |
chmod +x, run — bundles Python, Qt, yt-dlp |
| Windows | Projectum-windows-x64.exe |
unsigned: SmartScreen → More info → Run anyway |
| macOS | Projectum-macos.dmg |
unsigned: right-click → Open |
Or from source: git clone, pip install -r requirements.txt, python main.py.
Projectum keeps itself up to date: when a new release ships it installs in place and offers a one-click restart (off by a toggle in Settings).
Highlights
- Filesystem-first projects — size, last-modified, git branch and dirty state per project, read off the UI thread. Tags with sidebar filters, pin, drag to reorder, expand a folder of repos into nested projects.
- Live Markdown everywhere — headings, bold, code, lists, links render as you type; markers stay hidden until the cursor enters the phrase. The document underneath is always plain Markdown.
- Relations — undirected, untyped links between any two things, including dates, date spans, and bare durations ("2 weeks"). Backlinks show up on both sides; the detail panels show clickable chips.
- Command palette (
Ctrl+K) across projects, playlists, videos, tags, and notes. - 19 themes, dark and light — every one CI-checked against WCAG contrast floors, switching crossfades. Any font, any size.
- Resilient — atomic saves; metadata for a renamed or deleted folder is parked and restored when it comes back.
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Ctrl+K |
Command palette |
Ctrl+1 … Ctrl+5 |
Switch tab (Projects / Playlists / Todo / Calendar / Notes) |
Ctrl+O |
Open a folder |
Ctrl+F |
Focus the sidebar search |
Ctrl+D |
Toggle the selected project's done state |
Ctrl+T |
Jump to Todo and start a new task |
Ctrl+N |
Focus the project notes editor |
Ctrl+R |
Refresh the current folder |
Esc |
Close a popup |
Where your data lives
- Per-folder:
<folder>/.projectum.json— projects, playlists, tags, notes, ordering. Commit it next to your work or.gitignoreit. Writes are atomic. - Global:
~/.config/projectum/— window state, theme, andlinks.json, the relation graph. Relations can cross folders, so they live here rather than in any one folder's file — the one part of your data that doesn't travel with a folder.
Development
Dependencies are PySide6-Essentials, yt-dlp, and the standard library. CI
lints, byte-compiles, runs the test suite, and boots the window headless on
Linux/macOS/Windows across Python 3.10–3.14. It also installs the wheel and
source distribution in a clean environment and boots the installed entry point
outside the checkout before publishing to PyPI.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt pytest
QT_QPA_PLATFORM=offscreen pytest -q # tests
python main.py # run
Packaging recipes (AppImage, Flatpak, AUR) live in packaging/,
the release process in RELEASING.md.
Support
Projectum is free and MIT-licensed, and stays that way. If it's useful, you can sponsor it on GitHub — completely optional.
License
MIT — © 2026 wleeaf.
Metadata
Release files for projectum 2.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| projectum-2.4.1.tar.gz | 138.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| projectum-2.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 256.0 kB
Release files / projectum-2.4.1.tar.gz
| Download URL | projectum-2.4.1.tar.gz |
|---|---|
| Size | 138.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3171100b3c240e074612037c66092442cf7faf827c5ad27df6eabcceecb2e286
|
|
BLAKE2b-256 checksum How to use checksums |
d3a41f9efcf45a5e6cd104296e3500dbdaedc56283597e18e67e31d6037bed6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logRelease files / projectum-2.4.1-py3-none-any.whl
| Download URL | projectum-2.4.1-py3-none-any.whl |
|---|---|
| Size | 117.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39964b440938cae2b6eb26147317fe61e62cb443916e3e86c27ea10be564c38d
|
|
BLAKE2b-256 checksum How to use checksums |
808f2dc40d365f1864f1f44d0b8a6362a6f1cfe83c0f8a6ec9320729bd207207
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logSecurity for projectum 2.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for projectum-2.4.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.