← 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

Life Tracker login screen

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

Links