Uso personale

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.

Progetto privato — in uso personale
  • Flutter
  • Dart
  • Node.js
  • Express
  • Prisma
  • PostgreSQL
  • Docker
Bookfits — Case Study

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”

Flutter App (iOS + Android)Node.js / Express API· HTTPS / JWTNode.js / Express APIPostgreSQL 15Dashboard AdminPostgreSQL 15Node.js / Express APIGroq Cloud · Llama 3.3 70BDashboard AdminGroq Cloud · Llama 3.3 70B· config a runtime

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