Unwaste
App italiana per la gestione di dispensa e frigorifero: traccia le scadenze, riduce gli sprechi alimentari e suggerisce ricette in base a quello che hai gia’ in casa.
Struttura del repository
app_mobile/ App Flutter (Android)
backend/ API Spring Boot + dashboard di moderazione
docs/ Privacy policy e materiale per Play Store
Funzionalita’ principali
- Inventario: aggiunta prodotti via scan barcode o manuale, tracking scadenza (anche post-apertura), location personalizzate (frigo/dispensa/cantina…)
- Notifiche: promemoria push per prodotti in scadenza
- Ricette: ricerca ricette in base agli ingredienti disponibili, database curato + ricette create dagli utenti (con flusso di moderazione), filtri per regime alimentare
- Famiglia condivisa: piu’ utenti sullo stesso inventario tramite codice invito
- Gamification: badge per incentivare la pubblicazione di ricette e la riduzione degli sprechi
- Premium: funzionalita’ a pagamento (scan barcode illimitati, altre in arrivo), gestibili on/off da dashboard senza redeploy
- Dashboard admin: moderazione ricette, gestione utenti/premium, codici promozionali, segnalazioni prodotti errati, feature flag
Stack tecnico
- Backend: Java 21, Spring Boot 3.3, PostgreSQL 16, Flyway, JWT auth, Google Sign-In, Firebase Cloud Messaging
- App: Flutter, mobile_scanner (barcode), flutter_secure_storage
- Dashboard: Thymeleaf server-side, sessione Spring Security separata dall’auth JWT dell’app
Avvio in locale
Backend
cd backend
docker compose up -d
Il backend espone l’API su :8081 (vedi docker-compose.yml). Richiede un file .env con le variabili di configurazione (client ID Google, JWT secret, credenziali Firebase) — vedi le chiavi in application.yml.
App
cd app_mobile
flutter pub get
flutter run --dart-define=GOOGLE_SERVER_CLIENT_ID=<client-id>
L’IP del backend va configurato in lib/core/env.dart (o via --dart-define=API_BASE_URL=...) — localhost non funziona da un device fisico, serve l’IP LAN della macchina che fa da backend.
Privacy e termini