Bookfits — Case Study
App mobile fitness all-in-one (workout, nutrizione, social, coaching AI) per iOS e Android, sviluppata in autonomia dal database al rilascio sugli store.
- Flutter
- Dart
- Node.js
- Express
- Prisma
- PostgreSQL
- Docker

App mobile fitness all-in-one per iOS e Android che unisce allenamento, nutrizione, recupero fisico, coaching AI e componente social in un unico prodotto. Modello freemium (free + ads, trial 7 giorni, abbonamento premium mensile/annuale, tier B2B per personal trainer). Stack progettato e sviluppato interamente in autonomia: app Flutter, backend Node.js, infrastruttura Docker, dashboard admin interna.
Il problema
Le app fitness sul mercato si specializzano su un'unica area (solo workout, solo nutrizione, solo tracking), costringendo l'utente a usare 3-4 app diverse che non comunicano tra loro. Obiettivo di Bookfits: un prodotto unico che copra l'intero ciclo fitness con un coach AI che attinge a tutti i dati insieme, non a silos separati.
Architettura
L'app Flutter (iOS + Android, Dart 3, GetX, Material 3) comunica via HTTPS/JWT con un'API Node.js/Express containerizzata (Prisma ORM, porta 4531), affiancata da una dashboard admin interna (porta 9091). Backend e dashboard condividono lo stesso database PostgreSQL 15, anch'esso in Docker.
- Frontend: Flutter/Dart, GetX per state management e routing, Material 3, 40+ schermate, dark/light theme e i18n multilingua completo.
- Backend: Node.js/Express con architettura modulare (26 route module indipendenti, pattern router→controller→model), Prisma ORM su PostgreSQL 15.
- Infrastruttura: containerizzato con Docker Compose, deploy su server dedicato con avvio automatico via Task Scheduler, hot reload in sviluppo.
- Database: schema relazionale da 35 tabelle che copre account, workout, nutrizione, dati corporei, social, gamification e AI coach.
- AI Coach ("Buck"): integrazione con Groq Cloud (Llama 3.3 70B) per chat coaching, generazione piani di allenamento su misura, weekly summary e workout "lazy" generati da prompt libero — con configurazione (modello, prompt, temperatura) modificabile a runtime dalla dashboard admin, senza redeploy.
Architettura
Client
Flutter App (iOS + Android)
Backend
Node.js / Express API
26 route module
Dashboard Admin
Dati
PostgreSQL 15
AI
Groq Cloud · Llama 3.3 70B
AI Coach “Buck”
Feature principali
- Workout intelligente: piani personalizzati, Ghost Mode (confronto in tempo reale con la sessione precedente), Adaptive Overload (suggerimenti di progressione automatici), Symmetry Score (bilanciamento push/pull), muscle heatmap SVG, PR predictor.
- Nutrizione: diario pasti con scanner barcode, macro tracking, integrazione Open Food Facts, obiettivi calorici personalizzati.
- Analytics: grafici su peso, volume, cardio, sonno, mood; export CSV GDPR-compliant.
- Social & gamification: leaderboard, follow, sfide 1v1 con codice univoco, achievement, streak.
- B2B: modalità dedicata per personal trainer con gestione clienti e assegnazione piani.
- Monetizzazione: in-app purchase (StoreKit/Google Play Billing) con validazione receipt server-side, AdMob per il tier free.
Sfide tecniche affrontate
- Sicurezza end-to-end: token JWT con rotation e sliding window, refresh token opachi salvati in DB, storage cifrato lato client (Keychain/EncryptedSharedPreferences), validazione upload via magic byte (non estensione), rate limiting differenziato su endpoint sensibili, header di sicurezza HTTP centralizzati (Helmet, CORS con allowlist rigida, HSTS/CSP), startup checks che bloccano il boot in produzione se mancano segreti critici.
- Scheduler dinamico: task ricorrenti (cleanup token, calcolo streak, achievement check) configurabili da database invece che hardcodati, per poter modificare la cadenza senza riavviare il server.
- Resilienza di rete lato client: retry automatico con backoff esponenziale su errori transitori, refresh token trasparente con lock anti-concorrenza, gestione offline con sync al ripristino della connessione.
- Dashboard admin interna: pannello di controllo per monitorare utenti, sessioni, log ed errori, e per pilotare in tempo reale la configurazione del coach AI (modello, prompt, parametri).
40+
schermate
35
tabelle database
26
moduli route
Stack tecnico
Flutter, Dart, GetX, Material 3, Firebase Cloud Messaging, HealthKit/Health Connect, flutter_secure_storage, fl_chart, Node.js, Express, Prisma, PostgreSQL, JWT, bcrypt, Helmet, Groq SDK, node-cron, Docker, Docker Compose, Windows Server, nodemon