Caso studio: Athleex, un SaaS con app mobile
Come abbiamo costruito il nostro prodotto per personal trainer: una piattaforma web, le app per iOS e Android, gli abbonamenti, le notifiche. Le scelte, gli errori, cosa rifaremmo.

In sintesi
- Prodotto
- SaaS per personal trainer e coach, con app per gli atleti
- Piattaforme
- Web, iOS e Android
- Tecnologia
- Next.js, PostgreSQL con Prisma, Capacitor
- Infrastruttura
- Server europei (Hetzner) gestiti dal gruppo
- Rilasci e dati
- CI su GitHub Actions, backup notturni fuori sede
- Online
- athleex.com
Quale problema risolve Athleex?
Per un personal trainer il lavoro non finisce in palestra. Ci sono schede da scrivere e aggiornare, progressi da seguire, messaggi a ogni ora, pagamenti da ricordare, nuovi contatti da richiamare. Spesso tutto questo vive tra fogli di calcolo, chat e note sul telefono.
Il costo più alto è quello che non si vede: un atleta che smette di allenarsi e se ne va senza dirlo. Quando te ne accorgi, è già tardi. Athleex nasce per mettere in un solo posto il lavoro con gli atleti e i numeri dell'attività, e per accorgersi prima di chi sta per andarsene.
Un trainer non perde un cliente in un giorno: lo perde in settimane di silenzio che nessuno misura.
Cosa fa il prodotto?
Athleex è un SaaS per personal trainer e coach, con un'app per i loro atleti. Il trainer lavora dalla piattaforma web; l'atleta riceve il programma sul telefono e lo segue giorno per giorno.
Accanto al lavoro c'è l'attività. Chi vende abbonamenti vive di ricavi ricorrenti e di abbandoni, e quei numeri devono stare dove si lavora, non in un foglio a fine mese.
- Schede di allenamentoCreate dal trainer, consegnate all'atleta nell'app.
- Profili e progressiLa storia di ogni atleta in un posto solo.
- Pagina pubblicaPer raccogliere nuovi contatti.
- Dashboard di businessRicavi ricorrenti, abbandoni e valore dei clienti.
- Churn RadarSegnala in anticipo gli atleti a rischio di abbandono.
- App per gli atletiSu iOS e Android.
Com'è fatta l'architettura?
Una sola applicazione web in Next.js, con un database PostgreSQL gestito attraverso Prisma. L'interfaccia è in più lingue: prevederlo dall'inizio costa molto meno che aggiungerlo dopo, quando ogni testo è già sparso nel codice.
Gira su server europei (Hetzner) che gestiamo noi: decidiamo noi dove stanno i dati e come cresce l'infrastruttura. Ogni modifica passa da una CI automatica su GitHub Actions prima di andare in produzione, e il database ha backup notturni con una copia conservata fuori sede.
Sono scelte poco spettacolari, ed è il punto: un SaaS che incassa ogni mese deve essere noioso proprio dove i clienti non guardano.
- Applicazione
- Next.js
- Database
- PostgreSQL, con Prisma
- Lingue
- Interfaccia multilingue
- Server
- Europei (Hetzner), gestiti da noi
- Rilasci
- CI su GitHub Actions
- Backup
- Notturni, con copia fuori sede
Perché le app iOS e Android con Capacitor?
La piattaforma di Athleex è una web app. Per arrivare sui telefoni avevamo due strade: riscrivere il prodotto in Swift e in Kotlin, con tre basi di codice da tenere allineate, oppure portare la stessa base sui telefoni. Abbiamo scelto la seconda, con Capacitor.
Capacitor mette la web app dentro un guscio nativo e collega le funzioni del telefono, come le notifiche push e gli acquisti in-app, attraverso plugin nativi. Una funzione nuova si scrive una volta, per il web e per i telefoni, dallo stesso team.

Il prezzo sono i dettagli nativi: permessi, notifiche, pagamenti e revisione degli store seguono le regole di Apple e Google, non quelle del web. È lì che abbiamo imparato di più.
Una sola base di codice per web, iOS e Android: un team, un modo di lavorare, un posto dove correggere.
Cosa ci ha insegnato la pubblicazione sugli store?
Tre lezioni, tutte dall'app iOS e tutte arrivate da problemi veri. Valgono per qualunque app che vende abbonamenti o manda notifiche.
Una revisione respinta per gli acquisti in-app
Apple ha respinto una versione per le regole sugli acquisti in-app, la linea guida 3.1.1. Abbiamo integrato gli acquisti in-app con StoreKit 2, l'interfaccia di Apple per i pagamenti dentro le app, e la versione è passata. La lezione: come si paga dentro un'app si decide prima della prima revisione, non dopo.
Notifiche push: tre cause, non una
Le notifiche push su iOS non arrivavano. Le cause erano tre, indipendenti tra loro: configurazione, permessi e consegna. Risolverne una non bastava, perché le altre due restavano: vanno verificate una per una.
La valuta e iCloud Private Relay
Con iCloud Private Relay il paese di un utente può risultare diverso da quello reale. Se la valuta si decide solo dall'indirizzo IP, qualcuno vede il prezzo nella moneta sbagliata: va decisa con criterio, non solo dall'IP.
Gli store non sono l'ultimo passaggio: sono una parte del prodotto, con regole loro.
Perché i numeri del business stanno dentro il prodotto?
Perché chi vende abbonamenti vive di ricavi ricorrenti e di abbandoni, e quei numeri servono nel posto dove si lavora ogni giorno. La dashboard di Athleex mostra ricavi ricorrenti, abbandoni e valore dei clienti.
Il Churn Radar fa un passo in più: segnala in anticipo gli atleti a rischio di abbandono, così il trainer può farsi sentire prima che sia tardi. È lo stesso ragionamento che portiamo alle startup: le metriche che contano (MRR, churn, valore del cliente, spiegate nel glossario startup) devono essere sotto gli occhi di chi può cambiarle.
Cosa rifaremmo, e cosa faremmo prima?
Rifaremmo quasi tutto. Alcune cose, però, le faremmo prima.
Rifaremmo
- Una sola base di codice per web, iOS e Android, con Capacitor.
- Server europei gestiti da noi.
- CI automatica e backup notturni con copia fuori sede.
- L'interfaccia in più lingue.
- I numeri del business dentro il prodotto, non accanto.
Faremmo prima
- Decidere gli acquisti in-app prima della prima revisione di Apple.
- Trattare le notifiche push come tre problemi separati, da subito.
- Scegliere la logica della valuta prima di mostrare un prezzo.
Sono le stesse scelte che portiamo nei progetti delle startup, dallo sviluppo SaaS allo sviluppo di app per iOS e Android. Athleex è online su athleex.com; il suo ruolo nel gruppo è raccontato nella pagina del brand Athleex.
Domande su Athleex
Che cos'è Athleex?
È il SaaS di MPN Group per personal trainer e coach, con app per gli atleti: schede di allenamento, profili e progressi, pagina pubblica per i contatti, dashboard di business e Churn Radar. È un prodotto del gruppo, non un progetto fatto per un cliente.
Con quale tecnologia è costruito Athleex?
La piattaforma è una web app in Next.js con PostgreSQL (tramite Prisma), su server europei gestiti dal gruppo. Le app iOS e Android sono costruite con Capacitor sulla stessa base web, con CI automatica su GitHub Actions e backup notturni fuori sede.
Perché Apple aveva respinto l'app?
Per le regole sugli acquisti in-app, la linea guida 3.1.1. Abbiamo integrato gli acquisti in-app con StoreKit 2 e la versione è stata approvata.
Cos'è il Churn Radar?
È la funzione di Athleex che segnala in anticipo gli atleti a rischio di abbandono, così il trainer può intervenire prima che smettano. Lavora accanto alla dashboard con ricavi ricorrenti, abbandoni e valore dei clienti.
Potete costruire un prodotto simile per la mia startup?
Sì: è il lavoro che facciamo con le startup, dal SaaS all'app mobile. Scrivici e partiamo dal tuo caso.
Vuoi costruire il tuo SaaS, con o senza app?
Rispondiamo entro un giorno lavorativo.
Parliamone
