fitness-web/AGENTS.md

2.2 KiB

Fitness Web Agent Notes

Project Overview

Multi-user fitness tracking web app with AI coaching. Replaces the fitness-agent markdown-based training repo.

  • ~/git/fitness-agent — Training markdown logs, agent config, historical data, Juggernaut cycles
  • This repo (fitness-web) is the web app successor. When this is fully operational, the old repo can be archived.

Architecture

  • FastAPI — async Python web framework
  • Jinja2 + Pico.css — server-rendered templates with minimal CSS framework (CDN)
  • SQLite + SQLAlchemy 2.0 async — database with aiosqlite driver
  • opencode serve — AI coach service (Big Pickle model, free). Runs as a separate process/container.

Key Files

  • app/main.py — App factory, route registration, lifespan
  • app/config.py — Environment-based configuration
  • app/auth.py — Password hashing, session management, get_current_user dependency
  • app/models/ — SQLAlchemy ORM models
  • app/routers/ — Route handlers (one per feature)
  • scripts/schema.py — DB initialization
  • scripts/seed.py — Seed data (exercises, phases)
  • opencode/fitness-trainer.md — Agent config for AI coach (copied from fitness-agent)

Commands

uv sync                          # Install deps
uv run python scripts/schema.py  # Create DB tables
uv run python scripts/seed.py    # Seed initial data
uv run uvicorn app.main:app --reload  # Dev server on :8000

Key Decisions

  • Session-based auth with DB-backed tokens (simple, no OAuth dependencies)
  • SQLAlchemy async with aiosqlite (works well with FastAPI async handlers)
  • SSE streaming for chat responses
  • Pico.css from CDN (no build step)
  • Chat messages stored in DB per session for history
  • Docker Compose for deployment (opencode serve service commented out until ready)

Next Steps / TODOs

  1. Seed exercises and phases (done via python scripts/seed.py)
  2. Add exercise progress chart (matplotlib or chart.js)
  3. Enable opencode serve integration (uncomment docker-compose service)
  4. Migrate existing markdown logs from fitness-agent repo into DB
  5. Migrate Juggernaut training xlsx data into DB
  6. Add calendar view for training history
  7. PWA manifest + service worker for offline-capable mobile use