( caso studio /05 )App · Cross-platform

Tap.meuna codebase, tre piattaforme

Un tocco su un cerchio giallo per dire “sto bene” a chi ti vuole bene. Dietro la semplicità: iOS, Android e PWA sulla stessa codebase, con notifiche push unificate.

1codebase condivisa
3piattaforme: iOS · Android · PWA
1backend e progetto Firebase per tutte
/01

Il contesto

Tap.me è un'app sociale nata con la Fondazione Anna e Marco: un "Tap" è un segnale di presenza — tocca il giallo e i tuoi contatti sapranno che sei OK. Pensata per persone anziane o fragili e per chi si preoccupa per loro, con una scelta di privacy radicale: l'app non accede alla rubrica. I contatti si inseriscono a mano, e l'invito viaggia via WhatsApp.

/02

L'esperienza utente

Quattro schermate essenziali: la Home con il grande cerchio giallo e il cooldown tra un Tap e l'altro, gli Amici (fino a 20 contatti, con invito WhatsApp integrato), lo storico dei saluti ricevuti e il Profilo con il messaggio personalizzato che accompagna ogni Tap. Design claymorphism con il giallo del brand, modalità scura, e un promemoria gentile se non si manda un Tap da 48 ore. Tutto è progettato per utenti non tecnici: zero configurazione, zero frizione.

/03

Il problema tecnico: push unificate

La parte difficile di un'app "una codebase, tre piattaforme" sono le notifiche: il web usa lo standard Web Push, iOS e Android nativi usano Firebase Cloud Messaging con requisiti diversi tra loro. La soluzione di Tap.me:

  • Due canali che coesistono sullo stesso utente: il backend conserva sia le subscription web push sia i token FCM nativi, e all'invio di un Tap risolve i contatti e spedisce su entrambi i canali con un payload duale APNs + Android nello stesso messaggio.
  • Registrazione del token a prova di race condition: all'avvio, ad ogni login e ad ogni refresh del token Firebase — i tre momenti in cui un token può cambiare o non essere ancora pronto.
  • Auto-pulizia: i token scaduti che generano errori vengono rimossi automaticamente dal database.
  • Dettagli iOS che fanno la differenza: background handler registrato prima del bootstrap dell'app (obbligatorio perché le notifiche arrivino a app chiusa) e reset del badge in tre punti del ciclo di vita.
/04

CI/CD in cloud

Le build non passano da un Mac sulla scrivania: due workflow Codemagic producono rispettivamente APK/AAB firmati per Android e l'archivio iOS con firma manuale, pubblicato direttamente su App Store Connect dalla pipeline. Certificati e keystore vivono cifrati nelle variabili d'ambiente della CI. Il backend su Railway si rideploya ad ogni push.

/05

Dove siamo

iOS su TestFlight, Android in testing sul Play Store, PWA in produzione — tutte e tre sullo stesso backend. Il login è stato ridisegnato in corsa su richiesta del cliente e consegnato come patch coordinata per le tre piattaforme. È il caso studio ufficiale della metodologia cross-platform SuperNova.

/ST

Scheda tecnica

React Native 0.81React 19Firebase Cloud MessagingNode.js + MongoDBRailwayCodemagic CI/CD