Initial import: LifeTrack v1 (santé, vape, finances)

Tracker de vie auto-hébergé : suivi poids/calories/sport avec planning de
pesées, sevrage tabac (vape) avec modèle de coût DIY et économies, et
finances personnelles avec import de relevés bancaires.

Architecture : FastAPI + SQLAlchemy 2.0 + PostgreSQL 16, React 18 + TS +
Vite + Tailwind + ECharts, déploiement Docker Compose. Modules
auto-découverts des deux côtés (pkgutil / import.meta.glob) et framework
de connecteurs à deux voies (importeurs de fichiers + ingestion JSON)
pour brancher de nouvelles sources sans toucher au noyau.

Validé : 292 tests pytest, tsc + vite build, contrat API/web vérifié
contre le schéma OpenAPI, et déploiement Docker réel sur PostgreSQL 16
(28 tables, SPA servie par nginx, wizard de premier démarrage).

Documentation : README.md, docs/GUIDE.md, CONVENTIONS.md, et les
documents de conception et de recherche dans docs/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-14 10:48:57 +02:00
co-authored by Claude Opus 5
commit 93f0689c1e
273 changed files with 80746 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
# Development overlay (hot reload). Usage:
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up
# Or run only postgres in Docker and uvicorn/vite on the host:
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up postgres
services:
postgres:
ports:
- "5432:5432" # reachable from a host-run uvicorn
api:
command:
[
"uvicorn",
"app.main:app",
"--reload",
"--host",
"0.0.0.0",
"--port",
"8000",
]
volumes:
- ./apps/api/app:/srv/app
environment:
LIFETRACK_CORS_ORIGINS: '["http://localhost:5173"]'
# The published port comes from the base file (API_PORT, default 8000):
# re-declaring it here would publish the API twice.
web:
build:
context: .
dockerfile: docker/web.Dockerfile
target: build # stop at the node stage (deps installed, no nginx)
image: lifetrack-web-dev
working_dir: /build
command: ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]
# No nginx in this stage: the vite dev server proxies /api itself
# (apps/web/vite.config.ts), so the image healthcheck does not apply.
healthcheck:
disable: true
volumes:
- ./apps/web/src:/build/src
- ./apps/web/index.html:/build/index.html
- ./apps/web/vite.config.ts:/build/vite.config.ts
- ./apps/web/tailwind.config.ts:/build/tailwind.config.ts
- ./apps/web/postcss.config.js:/build/postcss.config.js
- ./apps/web/tsconfig.json:/build/tsconfig.json
ports:
- "5173:5173"