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>
97 lines
3.8 KiB
Markdown
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
|