Files
traccia-calorica/CLAUDE.md
emanuele 7fd03a99ba chore: initial project setup with documentation and design assets
Add project foundation: CLAUDE.md, requirements tracking system,
technical architecture docs, Firestore setup guide, device testing guide,
and Stitch design mockups for Precision Vitality app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 09:44:35 +02:00

97 lines
3.8 KiB
Markdown

# 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