Growlog is a full-stack productivity tracker for converting daily intent into durable execution logs. Users can register, add and complete tasks, review weekly or monthly analytics, and optionally sync generated progress logs to a GitHub repository.
- FastAPI backend with token-based authentication and task, analytics, and repository endpoints
- Next.js frontend with a dashboard for task capture, completion tracking, and productivity insights
- Daily and monthly log generation designed for personal accountability and Git-backed journaling
- Test coverage for task-domain rules and authenticated API flows
frontend/ Next.js 16 app router UI
backend/ FastAPI application, SQLAlchemy models, services, and tests
logs/ Generated local logs used during development
Backend responsibilities:
- authentication and user profile management
- task creation, listing, and completion
- analytics aggregation for dashboard charts
- log regeneration and optional Git sync
Frontend responsibilities:
- authentication screens
- dashboard, settings, and repository setup flows
- task and analytics data fetching
- interactive productivity UI components
- Backend: FastAPI, SQLAlchemy, Pydantic, Passlib, python-jose
- Frontend: Next.js, React, TypeScript, TanStack Query, Tailwind CSS
- Database: PostgreSQL in local/prod configuration, SQLite for tests
backend/
main.py FastAPI entrypoint
routers/ HTTP routes
services/ Business logic
models/ SQLAlchemy models
schemas/ Request and response contracts
tests/ Unit and integration coverage
frontend/
src/app/ App Router pages
src/components/ UI and layout components
src/features/ API hooks and feature logic
Create a virtual environment, install dependencies, and run the API:
cd backend
python -m venv venv
.\venv\Scripts\activate
# install the backend dependencies used by your local environment
uvicorn main:app --reloadThe API runs at http://127.0.0.1:8000.
Note: the repository currently does not include a backend lockfile, so dependency installation is environment-managed.
Install packages and start the Next.js app:
cd frontend
npm install
npm run devThe frontend runs at http://localhost:3000.
Backend configuration is environment-driven:
GROWLOG_DATABASE_URLGROWLOG_JWT_SECRETGROWLOG_JWT_ALGORITHMGROWLOG_ACCESS_TOKEN_EXPIRE_MINUTESGROWLOG_CORS_ORIGINS
Example:
$env:GROWLOG_DATABASE_URL="postgresql://postgres:postgres123@localhost:5432/growlog"
$env:GROWLOG_JWT_SECRET="replace-me"
$env:GROWLOG_CORS_ORIGINS="http://localhost:3000"Backend tests are designed to run against SQLite automatically:
.\backend\venv\Scripts\python.exe -m unittest discover backend/testsCurrent coverage includes:
- task title normalization, deduplication, and validation
- idempotent completion behavior
- weekly analytics correctness
- authenticated API integration tests for register, login, tasks, and analytics
Core endpoints:
POST /registerPOST /loginGET /user/mePOST /set-repoPOST /tasks/createGET /tasks/pendingGET /tasks/completedPUT /tasks/complete/{task_id}GET /analytics/weeklyGET /analytics/monthly
- The backend separates routers, schemas, and services to keep HTTP concerns out of business logic.
- Task creation accepts batched input and normalizes titles consistently before persistence.
- Tests pin the backend to an isolated SQLite database so CI and local runs are deterministic.
- Error responses now use a consistent envelope and every response includes an
X-Request-IDheader for tracing.
- structured API error envelopes and request tracing
- database migrations with Alembic
- stronger repository sync observability
- deployment and CI automation
This project currently has no declared license.