Life is a river: continuous, flowing, yet still. Inspired by Hermann Hesse's Siddhartha.
Project Nagi is a habit journalling application built for mindful self-tracking. Create habits with flexible schedules, organize them into color-coded categories, log entries with customizable attribute fields, and review your history in a daily journalling view.
| Layer | Technology |
|---|---|
| Frontend | React, Tailwind CSS, Vite |
| Backend | Python, FastAPI, SQLAlchemy |
| Database | PostgreSQL (production), SQLite (development/testing) |
client/ — React frontend
server/
infrastructure/ — Adapters (SQLAlchemy UoW + repositories)
models/ — SQLAlchemy ORM models
ports/ — Interfaces (IUnitOfWork, IRepository protocols)
routes/ — FastAPI routers (HTTP layer)
schemas/ — Pydantic request/response schemas
usecases/ — Application logic (use cases)
auth.py — JWT auth helpers
config.py — Centralized settings (Pydantic BaseSettings)
dependencies.py — FastAPI dependency providers (get_uow)
tests/ — pytest test suite (unit + integration)
# Backend
source .venv/bin/activate
cd server
uvicorn server.main:app --reload
# Frontend
cd client
npm install
npm run dev- Habits — Create and manage habits with daily, weekly, or monthly schedules
- Categories — Organize habits with color-coded categories
- Attributes — Define custom input fields per habit (number, text, date, boolean, select, and more)
- Journalling — Tasks grouped by day with completion tracking and data entry
- Keep After Due Date — Habits that persist beyond their due date with optional expiration
See .github/instructions/workflow.md for contribution guidelines.