Self-hosted personal task manager with GTD-style workflows, natural-language capture, and a REST API designed to be read by other tools.
Reference implementation, extracted from a private monorepo where development continues.
-
Raycast quick capture — Drop tasks from anywhere via a one-line Raycast script that hits
POST /api/quick-add. Natural-language parsing runs server-side, so"Follow up with Alex tomorrow #work 30m high energy"becomes structured fields before it lands in your inbox. Seescripts/raycast_quick_add.sh. -
Readable by Work Assistant as an ingest source — TaskFlow exposes a clean REST API (
GET /api/tasks,POST /api/quick-add, etc.) that Work Assistant'staskflow_sync.pypolls for inbox and today tasks. Captured tasks enter the same synthesis pipeline as Slack and JIRA, then merge into your Obsidian task list. TaskFlow is the capture layer; Work Assistant is the intelligence layer. -
Natural-language parsing with energy levels — Quick Add extracts due dates, time estimates, tags, priority markers, Eisenhower quadrant hints, people references, and energy level (
high,medium,low) from plain text. -
Auto-priority from due-date proximity — Overdue and due-today tasks rise to priority 5 automatically; tomorrow, this week, and later each map to configurable buckets. Manual overrides stick.
Beyond that: inbox/today/waiting/done lifecycle, Eisenhower Matrix, people-aware task linking, full-text search, sprint archives, and keyboard-first navigation throughout.
Captured from a demo instance (seed_demo.py) — no real task data.
Today — suggested next task, time estimates, and priority sorting:
Inbox — triage captured tasks before scheduling:
Matrix — Eisenhower quadrants with drag-to-reprioritize:
Requires Docker and Compose (docker-compose or the docker compose plugin).
cp .env.example .env
docker-compose up --build -d
docker-compose exec backend python init_db.pyOpen http://localhost:5174.
Optional — load fictional demo data (for screenshots or local exploration):
docker-compose exec backend python seed_demo.py| Component | Technology | Port |
|---|---|---|
| Frontend | React, Vite, Tailwind | 5174 |
| Backend | Flask REST API | 5000 (proxied via frontend at /api) |
| Database | PostgreSQL 15 | 5432 |
Deployment is defined in docker-compose.yml at the repo root.
- API reference — endpoints, request/response shapes
- Product overview — workflow, features, architecture, threat model
MIT — see LICENSE.


