A personal dashboard web application for tracking metrics, logging progress, and managing day-to-day productivity. Built from scratch to explore full-cycle software architecture with a modern stack.
| Layer | Technology |
|---|---|
| Frontend | React 19 + Vite |
| Backend | FastAPI (Python) |
| Database | SQLite via SQLAlchemy |
| Auth | JWT (PyJWT) + bcrypt password hashing |
- User authentication - register, login, logout
- Passwords hashed with bcrypt (never stored in plaintext)
- JWT-based sessions (24h expiry), persisted across page reloads via
localStorage - Protected API routes via FastAPI dependency (
GET /auth/me) - Secret key loaded from
backend/.env(gitignored)
- Task list - Add and Remove tasks, Check tasks off.
- Owner differentiated by ID, tasks only visible and manageable by owner.
- Productivity tracker
- Project management
- Budget management
- AI integration
- Reviews tasks and assists with getting started
- Integrated chat UI for quick access
- Future Expansion
- Timer and Reminder for tasks. Order by urgency.
- Additional organization tools: Grouping tasks, creating own list order.
- Better UI with additional simple features
- Google Account integration for calender.
backend/
main.py # App setup: CORS, db, router
auth.py # Password hashing, JWT create/verify, current-user dependency
models.py # SQLAlchemy table models (User, Task)
schemas.py # Pydantic request/response shapes
database.py # Engine, session factory, get_db dependency
routers/
auth.py # /auth routes: register, login, me
tasks.py # /tasks routes: list, create, update, delete
frontend/
src/
App.jsx # Session handling, auth-gated app shell
AuthForm.jsx # Login/register form
api.js # Fetch helpers for the backend API
- Python 3.14+ with a virtual environment at
backend/.venv - Node.js 22.12+ (or 20.19+)
cd backend
.venv\Scripts\python.exe -m pip install -r requirements.txt
Create backend/.env with a random secret (generate one with
python -c "import secrets; print(secrets.token_hex(32))"):
AUTH_SECRET_KEY=<your-generated-secret>
AI was utilized in this project for code consultation, including review, debugging, and guidance surrounding features unfamiliar to me. Code was written by me.
# Terminal 1 — backend (http://localhost:8000)
cd backend
.venv\Scripts\python.exe -m uvicorn main:app --reload
# Terminal 2 — frontend (http://localhost:5173)
cd frontend
npm run dev
Open http://localhost:5173 for the app, or http://localhost:8000/docs for the interactive API explorer.