davide 296a622d82 feat: aggiungi controllo aggiornamenti con dialog all'avvio
All'avvio l'app chiama l'API GitHub releases per confrontare la versione
installata con l'ultima disponibile (comparazione semantica major.minor.patch).
Se esiste una versione più recente, mostra un AlertDialog con i pulsanti
"Più tardi" e "Scarica" — quest'ultimo apre releases/latest nel browser.
Il controllo è silenzioso in caso di assenza di rete o errori, e disabilitato
su Flutter web (dart:io non disponibile).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 16:17:53 +02:00
2026-03-24 23:22:14 +01:00

BitePlan

App Android per la gestione della dieta quotidiana — pianificazione pasti, conversione crudo/cotto e lista della spesa.

Funzionalità

Piano Pasti

  • Pianificazione settimanale su 7 giorni × 3 pasti (colazione, pranzo, cena)
  • Card accordion per giorno, giorno corrente aperto di default
  • Aggiunta e rimozione di voci per ogni pasto
  • Generazione automatica della lista della spesa con aggregazione duplicati (es. "zucchine (x2)")
  • Condivisione del piano via QR code tra dispositivi
  • Persistenza automatica su SharedPreferences

Convertitore crudo/cotto

  • Conversione bidirezionale del peso (crudo → cotto e cotto → crudo)
  • Ricerca alimento in tempo reale
  • Oltre 50 voci tra cereali, legumi, verdure, carni, pesce e uova
  • Fino a 4 metodi di cottura per alimento: bollitura, padella, forno, friggitrice ad aria
  • Coefficienti di resa documentati con fonti — vedi docs/conversioni.md

Lista della spesa

  • Checklist con aggiunta manuale o importazione dai pasti pianificati
  • Separazione visiva tra elementi da completare e completati
  • Rimozione singola e svuota lista con conferma

Stack

Livello Tecnologia
Framework Flutter 3.41.9 / Dart 3.11.5
State management Provider
Persistenza shared_preferences
QR code qr_flutter + mobile_scanner
Build APK Docker (headless)

Sviluppo

Il container dev avvia un web server Flutter accessibile dal browser, con hot reload.

cd docker/dev
docker compose up
# → http://localhost:5173

Con il container attivo, in un altro terminale:

docker compose attach dev
# r → hot reload  |  R → hot restart  |  q → esci

Vedi docker/README.md per i dettagli e la build APK.

Test

La suite copre unit test e widget test. Richiede l'immagine Docker biteplan-build (creata automaticamente al primo bash docker/build/build.sh).

# Tutti i test (dalla root del progetto)
docker run --rm -v "$(pwd):/workspace" -w /workspace biteplan-build \
  bash -c "flutter pub get && flutter test"

# Un singolo file
docker run --rm -v "$(pwd):/workspace" -w /workspace biteplan-build \
  bash -c "flutter test test/features/meal_planner/qr_test.dart"

Struttura

test/
├── helpers/
│   └── pump_app.dart                     # estensione pumpApp per widget test
└── features/
    ├── converter/
    │   ├── models/conversion_entry_test.dart
    │   └── providers/converter_provider_test.dart
    ├── meal_planner/
    │   ├── models/meal_plan_test.dart
    │   ├── providers/meal_planner_provider_test.dart
    │   ├── widgets/meal_card_test.dart
    │   └── qr_test.dart
    └── shopping_list/
        ├── models/shopping_item_test.dart
        ├── providers/shopping_list_provider_test.dart
        └── widgets/shopping_item_tile_test.dart

Build APK

bash docker/build/build.sh           # debug  → dist/biteplan-debug.apk
bash docker/build/build.sh --release # release → dist/biteplan-release.apk

Vedi docker/README.md per i requisiti della firma release.

Documentazione

Licenza

EUPL v1.2 — Davide Grilli

S
Description
No description provided
Readme 9.9 MiB
Languages
Dart 96.9%
Shell 1.6%
Dockerfile 0.8%
Kotlin 0.7%