# CalorieTracker (Precision Vitality) — CLAUDE.md ## Progetto App mobile per il tracciamento calorico giornaliero con stima AI dei pasti. Nome UI: **Precision Vitality** | Nome progetto: **CalorieTracker** ## Stack Tecnologico - **Frontend**: Ionic 7+ / Angular 17+ / TypeScript - **Capacitor**: 5+ (Android + iOS) - **Database**: Firebase Firestore (Spark plan gratuito) - **Auth**: Firebase Anonymous Auth (upgrade Google Sign-In futuro) - **AI**: Anthropic Claude API (claude-haiku-4-5-20251001) via proxy sicuro - **Chart**: Chart.js + ng2-charts - **Storage locale**: @ionic/storage-angular ## Repository - **Remote**: git.i-a.run (Gitea) — `emanuele/traccia-calorica` - **Branch principale**: `main` - **Lingua codice**: inglese (variabili, commenti tecnici) - **Lingua UI**: italiano ## Design System — "Precision Vitality" - Riferimento design: `stitch_calorietracker_design_brief_brief/` - **Font**: Lexend (dati/numeri) + Plus Jakarta Sans (UI) - **Colori primari**: Verde `#006b1b`, Accent arancione `#FF7043`, Errore `#F44336` - **Background**: `#f6f6f6` (surface), `#f0f1f1` (container-low), `#ffffff` (cards) - **Testo**: `#2d2f2f` (primario), `on-surface-variant` (secondario) - **Regola NO-LINE**: niente bordi 1px — separazione solo tramite tonal shifts - **Elevazione**: tonal layering, no drop shadows su card statiche - **Icone**: Material Icons (Outlined/Two-Tone, mai Filled pesanti) ## Struttura Tab (da design) 1. **JOURNAL** (Home) — diario pasti + FAB arancione 2. **STATS** — statistiche giornaliere/settimanali 3. **PLANS** — (futuro) piani alimentari 4. **PROFILE** — (futuro) profilo utente ## Struttura Cartelle ``` src/ app/ core/ # Servizi singleton, guards, interceptors services/ meal.service.ts calorie-estimator.service.ts auth.service.ts shared/ # Componenti, pipe, direttive condivise features/ home/ # Tab Journal/Home modals/ # Manual input + LLM input modals stats/ # Tab Statistiche (daily + weekly) search/ # Ricerca pasti profile/ # Tab Profile (futuro) assets/ data/ food-dictionary.md environments/ environment.ts environment.prod.ts ``` ## Convenzioni - Lazy loading per ogni feature module - Servizi in `core/services/` — singleton con `providedIn: 'root'` - Componenti condivisi in `shared/` - Ogni modal è un componente standalone - Commit messages in inglese, descrittivi - Branch naming: `feature/REQ-XXX-descrizione`, `fix/REQ-XXX-descrizione` ## Documenti di Progetto - `docs/REQUIREMENTS.md` — requisiti funzionali completi - `docs/TRACKING.md` — tracciamento stato requisiti sessione per sessione - `docs/TECHNICAL.md` — architettura e decisioni tecniche - `docs/FIRESTORE_SETUP.md` — guida configurazione Firebase/Firestore - `docs/DEVICE_TESTING.md` — test su device e build APK senza Android Studio ## Decisioni Architetturali - **Proxy API Claude**: Firebase Cloud Function (free tier) — API key mai nel bundle - **Cancellazione pasti**: hard delete (semplice, niente soft delete per ora) - **Obiettivo calorico**: salvato in @ionic/storage locale (default 2000 kcal) - **Ricerca**: client-side su ultimi 30 giorni ## Comandi Utili ```bash ionic serve # Dev server ionic build # Build produzione npx cap sync # Sync Capacitor npx cap open android # Apri in Android Studio ``` ## Note per Claude - Leggere sempre il design in `stitch_calorietracker_design_brief_brief/` prima di implementare UI - Seguire il DESIGN.md (Precision Vitality) per colori, tipografia e componenti - Aggiornare `docs/TRACKING.md` dopo ogni sessione di lavoro - Non esporre mai API keys nel codice client - Verificare `docs/TRACKING.md` per sapere cosa è stato completato nelle sessioni precedenti