diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9945370 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,46 @@ +# Changelog + +Tutte le modifiche rilevanti a questo progetto sono documentate in questo file. + +Il formato segue [Keep a Changelog](https://keepachangelog.com/it/1.1.0/), +il progetto aderisce al [Semantic Versioning](https://semver.org/lang/it/). + +--- + +## [0.1.0-alpha] — 2026-03-25 + +Prima versione alpha dell'app BitePlan. + +### Aggiunto + +- **Piano Pasti** — pianificazione settimanale su 7 giorni × 3 pasti (colazione, pranzo, cena) + - Aggiunta e rimozione di voci per ogni pasto + - Card accordion per giorno, giorno corrente aperto di default + - Persistenza automatica su LocalStorage +- **Convertitore crudo/cotto** — conversione bidirezionale del peso + - Ricerca alimento in tempo reale + - 14 alimenti con metodi di cottura multipli + - Swap diretto tra crudo → cotto e cotto → crudo +- **Lista della spesa** — checklist con aggiunta, spunta e rimozione elementi + - Separazione visiva tra elementi completati e da completare + - Funzione svuota lista con conferma +- Navigazione bottom bar (Piano Pasti, Convertitore, Lista della spesa) +- Pannello info app con versione, autore e licenza +- Icona app personalizzata (launcher e favicon) +- Build APK Android tramite Docker (pipeline riproducibile su host x86_64) + - `build.sh --head` per build riproducibile dall'ultimo commit git + - `dist/` montato come volume, non copiato nell'immagine +- Icona app personalizzata (launcher Android e favicon browser) +- Pannello info app con versione dinamica da `package.json`, autore e licenza +- Licenza EUPL v1.2 +- Documentazione: README, guida utente, tabella coefficienti conversioni con fonti + +### Tecnico + +- Vue 3 + Vite, CSS mobile-first (max 480px), touch target ≥ 44px +- Capacitor Android per il packaging APK +- Dockerfile basato su `eclipse-temurin:21-jdk-jammy` + Node.js 20 via NodeSource +- Icone Android generate con ImageMagick da `assets/icon-only.png` (5 densità mipmap) +- Versione APK sincronizzata con `package.json` tramite script Node inline + +[0.1.0-alpha]: https://github.com/davide3011/biteplan/releases/tag/v0.1.0-alpha diff --git a/README.md b/README.md new file mode 100644 index 0000000..5cef7a8 --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# BitePlan + +App mobile-first per la gestione della dieta quotidiana. + +## Funzionalità + +- **Piano Pasti** — pianifica colazione, pranzo e cena per ogni giorno della settimana +- **Convertitore crudo/cotto** — calcola il peso cotto a partire dal crudo (e viceversa) con coefficienti di resa per 14 alimenti +- **Lista della spesa** — checklist con aggiunta, spunta e rimozione elementi + +## Stack + +| Livello | Tecnologia | +|---|---| +| Frontend | Vue 3 + Vite | +| Persistenza | LocalStorage | +| UI | CSS mobile-first (max 480px) | +| Mobile | Capacitor Android | +| Build APK | Docker | + +## Avvio in sviluppo + +```bash +npm install +npm run dev +``` + +Aprire [http://localhost:5173](http://localhost:5173) in Chrome con DevTools in modalità mobile (viewport 360×640). + +## Build APK Android + +Richiede Docker su host **x86_64**. + +```bash +bash docker/build.sh +``` + +L'APK viene generato in `dist/biteplan.apk`. Vedi [docker/README.md](docker/README.md) per i dettagli. + +## Documentazione + +- [Guida utente](docs/guida-utente.md) +- [Fonti e documentazione conversioni](docs/conversioni.md) +- [Changelog](CHANGELOG.md) + +## Licenza + +[EUPL v1.2](LICENSE) — Davide Grilli diff --git a/docs/conversioni.md b/docs/conversioni.md new file mode 100644 index 0000000..bbf756b --- /dev/null +++ b/docs/conversioni.md @@ -0,0 +1,81 @@ +# Conversioni crudo/cotto — Fonti e documentazione + +## Formula + +``` +yield = peso_cotto / peso_crudo + +peso_cotto = peso_crudo × yield +peso_crudo = peso_cotto / yield +``` + +Un `yield` > 1 indica che l'alimento assorbe acqua durante la cottura (es. riso, pasta). +Un `yield` < 1 indica che l'alimento perde acqua (es. carni, verdure). + +--- + +## Tabella coefficienti + +### Proteine animali + +| Alimento | Metodo | Yield | Fonte | +|---|---|---|---| +| Pollo | Forno | 0.75 | [da verificare](https://example.com) | +| Pollo | Padella | 0.70 | [da verificare](https://example.com) | +| Manzo | Forno | 0.70 | [da verificare](https://example.com) | +| Manzo | Padella | 0.72 | [da verificare](https://example.com) | +| Maiale | Forno | 0.68 | [da verificare](https://example.com) | +| Maiale | Padella | 0.70 | [da verificare](https://example.com) | +| Salmone | Forno | 0.80 | [da verificare](https://example.com) | +| Salmone | Padella | 0.78 | [da verificare](https://example.com) | +| Tonno | Forno | 0.75 | [da verificare](https://example.com) | +| Uova | Bollite | 0.88 | [da verificare](https://example.com) | + +### Carboidrati + +| Alimento | Metodo | Yield | Fonte | +|---|---|---|---| +| Riso | Bollito | 2.50 | [da verificare](https://example.com) | +| Pasta | Bollita | 2.20 | [da verificare](https://example.com) | +| Lenticchie | Bollite | 2.30 | [da verificare](https://example.com) | + +### Verdure + +| Alimento | Metodo | Yield | Fonte | +|---|---|---|---| +| Zucchine | Padella | 0.80 | [da verificare](https://example.com) | +| Zucchine | Bollite | 0.85 | [da verificare](https://example.com) | +| Carote | Bollite | 0.90 | [da verificare](https://example.com) | +| Carote | Forno | 0.85 | [da verificare](https://example.com) | +| Patate | Forno | 0.75 | [da verificare](https://example.com) | +| Patate | Bollite | 0.90 | [da verificare](https://example.com) | +| Spinaci | Padella | 0.35 | [da verificare](https://example.com) | +| Spinaci | Bolliti | 0.30 | [da verificare](https://example.com) | +| Broccoli | Bolliti | 0.85 | [da verificare](https://example.com) | +| Broccoli | Forno | 0.80 | [da verificare](https://example.com) | + +--- + +## Fonti di riferimento + +I coefficienti sono stati derivati da dati medi di letteratura nutrizionale e banche dati alimentari ufficiali: + +- **Alimenti & Nutrizione — CREA** + Banca dati di composizione degli alimenti per studi epidemiologici in Italia: + [https://www.alimentinutrizione.it/](https://www.alimentinutrizione.it/) + +> I valori presenti nell'app sono medie indicative. La perdita effettiva dipende dalla dimensione del pezzo, dalla temperatura, dai tempi di cottura e dal metodo specifico. + +--- + +## Aggiungere o modificare alimenti + +I dati sono definiti in `src/data/conversions.json`. Per aggiungere un nuovo alimento: + +```json +"nome-alimento": { + "metodo": { "yield": 0.XX } +} +``` + +Il nome e il metodo devono essere in minuscolo. Sono supportati più metodi per lo stesso alimento. diff --git a/docs/guida-utente.md b/docs/guida-utente.md new file mode 100644 index 0000000..9062332 --- /dev/null +++ b/docs/guida-utente.md @@ -0,0 +1,80 @@ +# Guida utente — BitePlan + +## Navigazione + +BitePlan è organizzata in tre sezioni accessibili dalla barra in basso: + +| Icona | Sezione | Funzione | +|---|---|---| +| Calendario | Piano Pasti | Pianifica i pasti della settimana | +| Bilancia | Convertitore | Converti peso crudo/cotto | +| Lista | Lista della spesa | Gestisci la spesa | + +--- + +## Piano Pasti + +La sezione mostra i sette giorni della settimana. Il giorno corrente è aperto di default. + +### Aggiungere un alimento + +1. Tocca il giorno per espandere la card +2. Vai al pasto desiderato (Colazione, Pranzo o Cena) +3. Scrivi il nome dell'alimento nel campo di testo +4. Premi **+** o il tasto Invio per aggiungerlo + +### Rimuovere un alimento + +Tocca il pulsante **×** a destra dell'elemento. + +### Persistenza + +I dati vengono salvati automaticamente sul dispositivo (LocalStorage). Non è necessario premere nessun pulsante di salvataggio. + +--- + +## Convertitore crudo/cotto + +Calcola il peso cotto a partire dal crudo, o viceversa, in base ai coefficienti di resa di ogni alimento. + +### Utilizzo + +1. Cerca l'alimento nel campo di ricerca (es. `pollo`, `riso`) +2. Seleziona il metodo di cottura dall'elenco risultati +3. Scegli la direzione: **Crudo → Cotto** o **Cotto → Crudo** (pulsante swap) +4. Inserisci il peso in grammi +5. Il risultato appare in tempo reale + +### Alimenti disponibili + +Proteine: pollo, manzo, maiale, salmone, tonno, uova +Carboidrati: riso, pasta, lenticchie +Verdure: zucchine, carote, patate, spinaci, broccoli + +Per l'elenco completo con metodi di cottura e coefficienti, vedi [conversioni.md](conversioni.md). + +--- + +## Lista della spesa + +### Aggiungere un elemento + +Scrivi il nome nel campo in alto e premi **+** o Invio. + +### Spuntare un elemento + +Tocca la casella a sinistra dell'elemento. Gli elementi completati vengono spostati in fondo con testo barrato. + +### Rimuovere un elemento + +Tocca il pulsante **×** a destra dell'elemento. + +### Svuotare la lista + +Premi **Svuota lista** in fondo alla pagina. Viene richiesta conferma prima di procedere. + +--- + +## Informazioni app + +Tocca il pulsante **ⓘ** in alto a destra per visualizzare la versione dell'app, l'autore e la licenza.