← Back to projects
Full-Stack · Work in progress
Life Tracker
Full-stack personal productivity app built with Django and HTMX. Tracks tasks, meals, workouts, water intake, and goals through a server-rendered dashboard — deployed on Render and in daily personal use.
Stack
- Python
- Django
- HTMX
- SQLite
- Tailwind CSS
- Render
Overview
- Session-based authentication with password reset via email
- Dashboard aggregation layer combining tasks, nutrition, workouts, and hydration into a unified daily overview
- HTMX-driven partial updates for in-place task completion and meal logging without full-page reloads
- Modular Django app structure — each feature domain (tasks, nutrition, workouts, goals) is an isolated app
- SQLite persistence with Django ORM; deployed to Render and in daily personal use
Screenshots
Session-based authentication entry point. Django handles credential validation and session management server-side, with no client-side auth state.
1 / 6
Architecture
- Django project split into isolated apps per domain: tasks, nutrition, workouts, hydration, goals, dashboard
- Server-rendered templates using Django's template engine; HTMX handles partial DOM updates without a separate API layer
- SQLite as the persistence layer — appropriate for single-user personal use; Django ORM manages all queries
- Dashboard view aggregates daily data across all apps in a single request-response cycle
- Deployed to Render as a single Django process with gunicorn
Engineering Challenges
- Achieving interactive feel without JavaScript: HTMX hx-swap and hx-target attributes enable partial page updates driven entirely by server responses
- Keeping the dashboard performant: aggregation queries across five data domains are composed with Django's ORM select_related and annotate, avoiding N+1 patterns
- Structuring Django apps so each feature is independently testable while still sharing a common auth and template context
What I'd improve
- Migrate to React frontend for richer interactivity and client-side state management
- Add data visualisation for weekly and monthly trend analysis
- Improve mobile layout for on-the-go logging
- Replace SQLite with PostgreSQL for production-grade concurrency