Portfolio Manager¶
A personal desktop application for managing, scheduling, and executing work across a portfolio of creative and technical projects using time-boxed sessions.
Overview¶
Portfolio Manager is a single-user Tkinter desktop app backed by SQLite. It gives you one place to:
- Track active projects with traffic-light status indicators and priority 1–5 ordering
- Schedule and log time-boxed work sessions (15–480 min, default 90 min) against a configurable weekly hour budget
- Track milestones with a full five-state lifecycle and per-project plan documents with live Mermaid diagram preview
- Run weekly planning and review cycles, with a browsable history of past reviews
- See a dashboard score for every project, the overall portfolio, and a "This Week" focus panel showing upcoming milestones
The design philosophy is low-friction and forgiving: no required save actions, no failure messages for missed sessions, and a dashboard you can understand after four weeks away.
Quick Start¶
Option 1 — macOS Dock shortcut¶
git clone <repo-url> portfolio-manager
cd portfolio-manager
bash create_shortcut.sh
Drag ~/Applications/Portfolio Manager.app to the Dock.
Option 2 — Shell script¶
bash launch.sh
launch.sh creates a .venv on first run and launches the app every time.
Option 3 — Development¶
python3 -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
python -m portfolio_manager
First Launch¶
On first launch with no existing data:
~/.portfolio_manager/config.tomlis written with defaults.- The SQLite database is created at
~/.portfolio_manager/portfolio.db. - The full schema (v1 migration) is applied.
- The app opens on the empty Dashboard.
Configuration¶
Edit ~/.portfolio_manager/config.toml to change defaults:
[app]
log_level = "INFO" # DEBUG | INFO | WARNING | ERROR
theme = "light" # light | dark (coming in future release)
[session]
default_duration_minutes = 90
weekly_budget_hours = 12
[database]
path = "~/.portfolio_manager/portfolio.db"
Updating¶
git pull origin main
.venv/bin/pip install -e .[dev] --quiet
No rebuild required — the macOS .app always calls launch.sh from the repo.