The single API serving the web app, the native mobile app, and this documentation site. Spring Boot 4.1 on Java 25 with virtual threads, PostgreSQL 17 behind a Flyway-owned schema, and 37 REST controllers under /api/v1.
What lives here
The domain: categories, habits, tasks, goals, and routines, with the gamification engine on top: the check-in XP formula, the quadratic level curve, derived streaks, daily routine snapshots with XP decay, and the signed per-day XP ledger.
The study notebook: topics laid out as roadmap boards of pages, with flashcards scheduled by SM-2. Sources (PDF, link, pasted text) are read in the background into passages, and a grounded study AI answers from them with citations. Study cycles rotate topics through a queue of time and goal blocks, fed by pomodoros and logged sessions.
Security: stateless JWT auth with rotating refresh tokens, e-mail verification, two-factor account deletion, fifteen rate-limit tiers plus a login lockout, a link fetcher that refuses SSRF, and boot-time validators that refuse a misconfigured production.
The AI agent: a chat with 78 tools over the same domain services, streamed by SSE, running on a five-provider free-tier LLM fallback chain, plus the stateless onboarding suggestion endpoint.
The docs system: imports this documentation from GitHub into Postgres and serves the public read and search API the docs site runs on.
How it ships
Merging to main is the deployment: CI runs the tests, builds the image and publishes it to GHCR, and Flux's image automation on the production cluster records the new digest in Git and rolls it out. Caffeine caches sit in front of the hot reads, and Micrometer metrics feed the Grafana dashboards, with errors reporting to the self-hosted GlitchTip.
Deep dives
The architecture topics cover this repo in detail: the domain model, security, gamification, the AI agent, the study notebook, caching, AOP logging, the email service, and the docs system all have their own pages.