docs: allinea CLAUDE.md, README e docker/README al codice reale
CLAUDE.md: rimossi riferimenti a noVNC/Vue3/sop.md, aggiornata architettura reale (features/*/presentation/), rimossi file fantasma (checkbox_item.dart, conversion_service.dart), aggiunta feature guide, corretta struttura test, aggiornati comandi Docker. README.md: riscritto per Flutter (rimosso stack Vue3/Node.js), aggiunta sezione test con comandi e struttura cartelle, link docs/. docker/README.md: aggiunta sezione test completa con comandi per tutti i test, singolo file e singola feature; aggiornato flusso completo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+63
-26
@@ -1,12 +1,13 @@
|
||||
# Docker — BitePlan
|
||||
|
||||
Due container distinti: uno per lo sviluppo, uno per la build APK.
|
||||
Due container distinti: uno per lo sviluppo con hot reload, uno per la build APK headless.
|
||||
Tutti i comandi vanno eseguiti dalla **root del progetto** (`~/biteplan`), non da `docker/`.
|
||||
|
||||
---
|
||||
|
||||
## Container dev (`docker/dev/`)
|
||||
|
||||
Avvia un web server Flutter con hot reload accessibile dal browser.
|
||||
Avvia un web server Flutter accessibile dal browser, con hot reload.
|
||||
|
||||
```bash
|
||||
cd docker/dev
|
||||
@@ -15,17 +16,19 @@ docker compose up
|
||||
|
||||
Apri **http://localhost:5173** nel browser.
|
||||
|
||||
**Hot reload** — con il container attivo, in un altro terminale:
|
||||
### Hot reload
|
||||
|
||||
Con il container attivo, in un altro terminale:
|
||||
|
||||
```bash
|
||||
docker compose attach dev
|
||||
# premi 'r' → hot reload | 'R' → hot restart | 'q' → esci
|
||||
# r → hot reload | R → hot restart | q → esci
|
||||
```
|
||||
|
||||
Le modifiche ai file `.dart` sull'host sono visibili subito nel container
|
||||
grazie al volume montato — basta premere `r` per ricaricare.
|
||||
Le modifiche ai file `.dart` sull'host sono visibili subito nel container grazie al volume
|
||||
montato — basta premere `r` per ricaricare.
|
||||
|
||||
> Prima esecuzione: scarica Flutter SDK (~500 MB), richiede 5-10 minuti.
|
||||
> Prima esecuzione: scarica l'immagine Flutter (~500 MB), richiede 5-10 minuti.
|
||||
> Le successive usano la cache Docker e sono molto più rapide.
|
||||
|
||||
---
|
||||
@@ -34,16 +37,9 @@ grazie al volume montato — basta premere `r` per ricaricare.
|
||||
|
||||
Build headless riproducibile per generare l'APK Android.
|
||||
|
||||
**Prerequisito**: la cartella `android/` deve esistere nel progetto.
|
||||
Se non esiste, generala con Flutter installato localmente o nel container dev:
|
||||
|
||||
```bash
|
||||
flutter create --project-name biteplan --org com.biteplan .
|
||||
```
|
||||
|
||||
### Build debug
|
||||
|
||||
APK firmato con il debug keystore di Android — adatto per test su dispositivo.
|
||||
APK firmato con il debug keystore di Android — adatto per installazione diretta sul dispositivo.
|
||||
|
||||
```bash
|
||||
bash docker/build/build.sh
|
||||
@@ -63,7 +59,7 @@ keytool -genkey -v \
|
||||
-keyalg RSA -keysize 2048 -validity 10000
|
||||
```
|
||||
|
||||
> `docker/biteplan.jks` è in `.gitignore` — non verrà mai committato.
|
||||
> `docker/biteplan.jks` è in `.gitignore` e non verrà mai committato.
|
||||
> Conservalo in un posto sicuro: senza di esso non puoi pubblicare aggiornamenti.
|
||||
|
||||
**2. Esegui la build release**
|
||||
@@ -73,25 +69,65 @@ bash docker/build/build.sh --release
|
||||
# → dist/biteplan-release.apk
|
||||
```
|
||||
|
||||
Il keystore viene montato nel container come volume read-only e non viene
|
||||
mai copiato nell'immagine Docker.
|
||||
Il keystore viene montato nel container come volume read-only e non viene mai copiato
|
||||
nell'immagine Docker.
|
||||
|
||||
> Prima esecuzione: scarica Flutter SDK + Android SDK (~1-2 GB), richiede 10-15 minuti.
|
||||
|
||||
### Installazione sul dispositivo
|
||||
|
||||
```bash
|
||||
adb install dist/biteplan-debug.apk
|
||||
# oppure copia manualmente dist/biteplan-release.apk via USB o Drive
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test
|
||||
|
||||
I test non richiedono il container dev — usano l'immagine `biteplan-build`, creata
|
||||
automaticamente al primo `bash docker/build/build.sh`.
|
||||
|
||||
```bash
|
||||
# Tutti i test (110 test — unit + widget)
|
||||
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"
|
||||
|
||||
# Una singola feature
|
||||
docker run --rm -v "$(pwd):/workspace" -w /workspace biteplan-build \
|
||||
bash -c "flutter test test/features/shopping_list/"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Prima configurazione (android/ assente)
|
||||
|
||||
Se la cartella `android/` non esiste ancora, lo script `build.sh` la genera
|
||||
automaticamente tramite `flutter create` all'interno del container — non è necessario
|
||||
avere Flutter installato sull'host.
|
||||
|
||||
---
|
||||
|
||||
## Flusso completo
|
||||
|
||||
```
|
||||
# 1. Sviluppo
|
||||
cd docker/dev && docker compose up
|
||||
→ http://localhost:5173 (sviluppo con hot reload)
|
||||
↓
|
||||
flutter create --project-name biteplan --org com.biteplan .
|
||||
(una volta sola, genera android/)
|
||||
↓
|
||||
bash docker/build/build.sh # → dist/biteplan-debug.apk
|
||||
bash docker/build/build.sh --release # → dist/biteplan-release.apk
|
||||
↓
|
||||
→ http://localhost:5173 (hot reload con 'r')
|
||||
|
||||
# 2. Test
|
||||
docker run --rm -v "$(pwd):/workspace" -w /workspace biteplan-build \
|
||||
bash -c "flutter pub get && flutter test"
|
||||
|
||||
# 3. Build
|
||||
bash docker/build/build.sh # → dist/biteplan-debug.apk
|
||||
bash docker/build/build.sh --release # → dist/biteplan-release.apk
|
||||
|
||||
# 4. Installazione
|
||||
adb install dist/biteplan-debug.apk
|
||||
```
|
||||
|
||||
@@ -102,3 +138,4 @@ adb install dist/biteplan-debug.apk
|
||||
- App ID: `com.biteplan.biteplan`
|
||||
- Android target: API 34
|
||||
- Il keystore non viene mai copiato nell'immagine Docker (volume read-only)
|
||||
- `dist/` è in `.gitignore`
|
||||
|
||||
Reference in New Issue
Block a user