A comprehensive productivity application combining Task Management, 12-Week Year Goal Tracking, Pomodoro Timer, and Context-Aware Music Player.
- Task Management: Create, organize, and prioritize daily tasks.
- 12-Week Year: Track long-term goals in 12-week cycles with daily progress heatmaps.
- Pomodoro Timer: Focus timer with customizable work/break intervals and audio notifications.
- Music Player: Manage playlists for Work and Break contexts, with automatic switching based on timer phase.
- Frontend: Next.js 14 (App Router), TypeScript, Tailwind CSS, React Query, Zustand.
- Backend: FastAPI, Python 3.11, SQLAlchemy, SQLite.
- Deployment: Docker, Docker Compose.
- Docker and Docker Compose
- Node.js 18+ (for local development)
- Python 3.10+ (for local development)
- Clone the repository.
- Run with Docker Compose (v2 syntax preferred):
If you only have the legacy
docker compose up --build
docker-compose(v1) binary, use that instead, but see the troubleshooting note below about theContainerConfigerror. - Open http://localhost:3000 in your browser.
- The API docs are available at http://localhost:8000/docs.
For testing purposes or local development, you can run the backend and frontend separately in two terminal windows.
- Navigate to the backend directory:
cd packages/backend - Install dependencies and set up environment with
uv:uv sync
- Start the server:
The API will be available at
uv run uvicorn app.main:app --reload --port 8000
http://localhost:8000.
- Navigate to the frontend directory:
cd packages/frontend - Install dependencies (using pnpm):
pnpm install
- Start the development server:
pnpm dev
- Access the application at
http://localhost:3000.
- Port Conflicts: Ensure ports 3000 (frontend) and 8000 (backend) are free. Stop any process using these ports before
docker compose up. - ContainerConfig error (legacy docker-compose v1): If you see
KeyError: 'ContainerConfig'while recreating containers, remove old containers and rerun, or switch to the newer CLI:With legacy v1:docker compose down --remove-orphans docker compose up --build
docker rm -f productivity-frontend productivity-backend && docker-compose up --build. - Database: If you encounter database errors, you can delete the
packages/backend/data/productivity.dbfile to reset the database. It will be recreated on the next backend startup.
The project follows a monorepo structure:
packages/backend: FastAPI applicationpackages/frontend: Next.js applicationpackages/shared: Shared types/utilities (if any)
The application uses SQLite by default. The database file is stored in packages/backend/data/productivity.db (or mapped volume in Docker).
On first run, the application initializes the database and creates default playlists and settings.

