Discovery & threat model
Threat model (custodia, gestione delle chiavi, perimetro carte di pagamento), inventario feature da web a mobile, revisione della postura KYC, mappatura della gestione dati GDPR + CCPA.
Caso di studio · FinTech · Crypto · Mobile
Come abbiamo rilasciato un'app mobile companion di produzione per una piattaforma crypto custodial — client nativi iOS e Android su un unico codebase Flutter, sblocco biometrico, trasferimenti P2P, un ponte fiat-crypto integrato e una postura audit-ready che regge al vaglio di GDPR e CCPA negli Stati Uniti e nell'Unione Europea.
Il cliente gestiva una piattaforma crypto custodial con un frontend web funzionante e un backend che già elaborava denaro reale. Mancava l'esperienza mobile — e il pubblico acquirente di crypto negli Stati Uniti e nell'Unione Europea è quasi interamente mobile-first. La sfida non era costruire un wallet da zero: le chiavi, la custodia e il matching degli ordini esistevano già. La sfida era trasferire la logica finanziaria complessa dal web al mobile senza perdere la precisione acquisita dal prodotto web, consegnando al contempo una UX che nasconde ogni grammo di complessità crypto dietro un'interfaccia da app bancaria. Abbiamo scelto Flutter per i client mobile, mantenuto il backend Laravel esistente come sistema di riferimento, e costruito sei flussi principali in parallelo: registrazione con KYC, gestione asset, trasferimenti P2P, ponte fiat-crypto, exchanger in-app e uno storico transazioni che regge a qualsiasi verifica.
Uno sguardo a ciò che la build dell'app Crypto Wallet Companion ha consegnato su web, mobile e sistemi di back-office nel primo ciclo di produzione.

Il cliente disponeva già di una piattaforma web funzionante e di un backend che la alimentava — quello che mancava era un’esperienza mobile che rispettasse il comportamento reale degli utenti crypto. Gli acquirenti di crypto negli Stati Uniti e nell’Unione Europea vivono sullo smartphone: controllano i saldi durante gli spostamenti, reagiscono alla volatilità dal divano e raramente si siedono davanti a un browser desktop. Un layer mobile web è stato testato in anticipo e scartato — la latenza, le integrazioni share-sheet e i flussi di sblocco biometrico hanno tutti sofferto rispetto a una build nativa.
Abbiamo scelto Flutter per i client mobile. Un unico codebase Dart rilascia iOS e Android con rendering pixel-perfect coerente, l’hot-reload accelera il ciclo design-ingegneria, e l’escape hatch del canale di piattaforma mantiene accessibili le API native StoreKit, Google Pay e biometrica quando necessario. Il backend Laravel che già serviva la piattaforma web ha servito i client mobile senza riscrittura — l’unica aggiunta è stato un contratto REST tipizzato.
| Dimensione | Flutter (scelto) | React Native | Nativo iOS + Android |
|---|---|---|---|
| Codebase da rilasciare | Un codebase Dart | Un codebase JS + moduli nativi | Due codebase indipendenti |
| Pipeline di rendering | Skia — pixel-consistente su entrambe le piattaforme | Widget nativi con bridge JS | Widget set nativo di ciascuna piattaforma |
| Prestazioni grafici crypto | 60 fps su un Android di fascia media da €200 | Limitato dal bridge su ridisegni pesanti | Nativo — il tetto dipende dalle competenze del team |
| Time-to-market su entrambi gli store | ~5 mesi per un MVP multi-feature | ~5–6 mesi — simile | 7–10 mesi — team doppio |
| StoreKit / Google Play Billing | Disponibile tramite canali di piattaforma | Disponibile tramite moduli nativi | API native di prima classe |
| Sblocco biometrico | Plugin local_auth — maturo | react-native-biometrics | LocalAuthentication / BiometricPrompt |
| Economia del team | Una coppia Flutter rilascia entrambi gli store | Una coppia RN — simile | Due team dedicati — costoso |
Riferimenti: Flutter, Apple StoreKit, Google Play Billing.

Il client iOS avvolge il binario Flutter in un host Swift sottile che gestisce lo sblocco biometrico tramite LocalAuthentication, gli acquisti in-app tramite StoreKit e i deep link da Safari, Mail e messaggi condivisi. Il flusso di sblocco è biometrico-first: Face ID o Touch ID all’avvio, con un fallback PIN a sei cifre che limita aggressivamente i tentativi. Un singolo errore non disconnette l’utente, ma cinque entro dieci minuti azzerano le chiavi di sessione in memoria e forzano una ri-autenticazione completa.
La dashboard asset è la schermata principale dell’app iOS: card di saldo per valuta, valore totale del portafoglio in cima, e un singolo tap nel dettaglio per asset con grafico del prezzo e visualizzazione dello storico transazioni. I tassi di cambio live vengono trasmessi in streaming su un WebSocket a lunga durata al backend Laravel, con un fallback HTTP poll sulle reti che bloccano i WebSocket (un problema reale sul Wi-Fi di hotel e conferenze sia negli USA che in UE). I campi di input per gli importi di trasferimento vengono validati rispetto al saldo reale dell’utente, al minimo della rete e alla precisione decimale dell’asset prima che il pulsante “invia” si attivi mai — non è possibile inviare accidentalmente 0,000000001 BTC a causa di un errore del tastierino. Questo è lo stesso livello di dettaglio che applichiamo a ogni progetto di sviluppo di app mobile in cui è in gioco del denaro.

Il client Android è lo stesso binario Flutter con un host Kotlin sottile che gestisce BiometricPrompt, Google Play Billing e l’Android share intent. Il comportamento dell’ottimizzatore batteria sulle famiglie di dispositivi Samsung, Xiaomi, OnePlus e Pixel è stato ottimizzato per-OEM durante il QA — il timing di riconnessione del WebSocket e la policy delle notifiche in primo piano differiscono abbastanza che la build “funziona su Pixel” non funzionava effettivamente su uno Xiaomi finché la matrice per-OEM non è stata completata.
I trasferimenti peer-to-peer sono il cuore sociale dell’app. Un utente può inviare fondi a un altro utente per nome utente, tramite QR code scansionato da una stampa su carta o dallo schermo di un altro telefono, oppure tramite deep link condiviso attraverso qualsiasi messenger. Il flusso ha un aspetto volutamente bancario: inserire l’importo, scegliere il destinatario, confermare con biometrica, tracciamento dello stato in tempo reale da “inviato” a “confermato on-chain”. Un piccolo exchanger integrato consente all’utente di convertire tra asset supportati al tasso mid-market live con un’informativa trasparente sulle commissioni nella schermata di conferma — nessuna sorpresa, nessuno spread nascosto. Lo stesso team di ingegneria gestisce iOS e Android in parallelo come parte della nostra pratica di ingegneria iOS e Android.

Un’app companion per crypto wallet è un prodotto ricco di minacce anche quando non detiene mai fondi direttamente. Il compito del wallet è essere la superficie visibile di un backend custodial — saldi, trasferimenti, depositi, prelievi — senza mai esporre le chiavi private al dispositivo mobile. Le chiavi private risiedono sul backend in vault isolati hardware con accesso registrato per audit; l’app mobile riceve token bearer a breve durata che autorizzano operazioni specifiche, e ogni operazione che sposta denaro richiede una nuova conferma biometrica indipendentemente dalla recenza dell’autenticazione dell’utente.
I depositi e i prelievi collegati a carte passano attraverso un gateway di pagamento che gestisce il perimetro PCI: l’app mobile non vede mai un numero di conto principale, solo una rappresentazione tokenizzata della carta salvata dell’utente. I documenti KYC raccolti all’onboarding sono memorizzati in un blob store cifrato con accesso registrato per audit, e il calendario di conservazione dei dati è allineato con gli obblighi del GDPR per gli utenti nell’Unione Europea e gli obblighi CCPA / CPRA per gli utenti in California e negli Stati Uniti in generale.
Postura di conformità: Conforme al GDPR · Pronto per ISO 27001 · SOC 2 Type II in corso · Compatibile HIPAA · CCPA riconosciuto.
Una build in cinque fasi che ha portato l’app companion per crypto wallet dalla specifica di prodotto alla pubblicazione su entrambi gli store negli Stati Uniti e nell’Unione Europea.
Threat model (custodia, gestione delle chiavi, perimetro carte di pagamento), inventario feature da web a mobile, revisione della postura KYC, mappatura della gestione dati GDPR + CCPA.
Struttura del progetto Flutter, contratto REST tipizzato contro il backend Laravel esistente, streaming dei tassi via WebSocket, flussi di sblocco biometrico e fallback PIN.
Sei flussi principali in parallelo — registrazione con KYC, dashboard asset, trasferimenti P2P, ponte fiat-crypto, exchanger in-app, storico transazioni.
Matrice Android battery-optimizer per-OEM, ri-autenticazione biometrica su ogni azione che sposta denaro, isolamento perimetro PCI del gateway di pagamento, QA della gestione delle chiavi in memoria.
Submission su App Store e Google Play per gli store US e UE, rollout del monitoraggio degli utenti reali, handoff del supporto, documentazione di conformità GDPR + CCPA.
L’exchanger in-app è il più piccolo dei sei flussi principali ma quello che genera più fiducia giorno per giorno. Un utente che guarda un saldo Bitcoin può convertirne una parte in Ethereum o stablecoin senza uscire dall’app, al tasso mid-market live, con un’informativa trasparente sulle commissioni che dettaglia lo spread e la stima del gas prima che l’utente confermi. Il flusso gira sullo stesso servizio di order-matching Laravel utilizzato dalla piattaforma web, il che significa che la liquidità è condivisa e le quotazioni sono coerenti tra web e mobile. L’accesso all’exchanger — e a limiti di transazione più elevati, prelievi fiat e determinati asset — è condizionato dal livello KYC completato dell’utente, che l’app mobile legge dal backend a ogni avvio di sessione. Un utente che completa il KYC sulla piattaforma web vede il proprio aggiornamento di livello riflesso sul mobile entro un minuto, e un utente che avvia il KYC sul mobile lo completa attraverso un flusso di upload documenti che utilizza la fotocamera nativa con OCR on-device per la validazione lato client prima che il documento lasci mai il dispositivo. L’intero sottosistema è stato costruito con l’estensibilità in mente: aggiungere un nuovo asset, una nuova valuta fiat, un nuovo gateway di pagamento o un nuovo livello KYC è una modifica di configurazione al servizio di entitlement, non un rilascio di codice.
L’app companion per crypto wallet è stata lanciata su Apple App Store e Google Play con store attivi negli Stati Uniti e nell’Unione Europea. La build in lingua inglese serve gli utenti in California, New York, Texas, Florida e Washington negli USA, e gli utenti nei Paesi Bassi, Germania, Francia, Irlanda e Svezia nell’UE, senza un codebase separato per regione. I flussi di consenso sono consapevoli della regione a livello client: gli utenti nell’UE e nel SEE ricevono una schermata di consenso granulare in stile GDPR con toggle separati per eventuali analytics di prodotto opzionali; gli utenti in California ricevono un’informativa in stile CCPA “Do Not Sell or Share My Personal Information” nello stesso flusso. Le pratiche di gestione dei dati sono allineate al GDPR per gli utenti europei e al patchwork delle leggi sulla privacy degli stati USA — CCPA / CPRA (California), VCDPA (Virginia), CPA (Colorado), CTDPA (Connecticut), UCPA (Utah), TDPSA (Texas) e Oregon CPA. Le informative specifiche per il crypto su volatilità, custodia e portata della dichiarazione fiscale vengono presentate all’onboarding piuttosto che sepolte in un link ai termini di servizio.
Il backend era già attivo per il prodotto web, quindi il lancio mobile ha riutilizzato la flotta esistente su data center UE e USA — nodi nei Paesi Bassi, Germania, Francia, Svezia e Irlanda per la copertura UE; US East e US West per il Nord America — con routing del traffico per regione ereditato dalla piattaforma web. Sia il rating per età dell’App Store che il rating dei contenuti di Google Play sono stati calibrati per la categoria delle app finanziarie, e la privacy policy in-app è stata redatta per documentare l’architettura sopra descritta, citando gli obblighi GDPR e gli obblighi CCPA della California direttamente. Il team di ingegneria dietro la build opera nell’orario CET con sovrapposizione con la costa est degli USA (dalle 9:00 alle 13:00 ET) per stand-up, coordinamento delle revisioni degli store e risposta agli incidenti — la finestra di fuso orario che consente a un team di prodotto USA e a un team di ingegneria UE di condividere quattro ore di sovrapposizione live ogni giorno.
La roadmap attiva di sviluppo software su misura per il wallet include un flusso di accoppiamento hardware wallet per gli utenti self-custody, un sottosistema di notifiche push per gli alert sui prezzi, una funzionalità multi-account “profili” per gli utenti che separano wallet personali e di trading, e un client desktop costruito su Flutter per desktop per condividere la business logic con il codebase mobile. Livelli KYC più profondi sono pianificati per gli utenti istituzionali US e UE, con il sottosistema di entitlement già strutturato per il feature gating basato su livelli. I piani infrastrutturali includono ulteriore automazione del backend e un harness interno di verifica continua per il piano di custodia nell’ambito della roadmap cloud & DevOps.
Se state pianificando un crypto wallet, un’app companion mobile custodial, o qualsiasi build mobile FinTech in cui la postura biometrica e l’audit-readiness devono coesistere con una UX di livello bancario per audience negli USA e in UE, abbiamo rilasciato questo stack end-to-end e possiamo comprimere significativamente la timeline di build. Il build di riferimento è documentato alla referenza del caso, e il team di ingegneria dietro di esso fa parte di YuSMP Group. Lavoriamo a prezzo fisso per MVP ben definiti e con team di sviluppo dedicati per la consegna continuativa, con una giornata lavorativa CET e una finestra garantita di sovrapposizione con la costa est degli USA (dalle 9:00 alle 13:00 ET) per stand-up, demo e risposta agli incidenti.
Un MVP focalizzato per app companion crypto wallet che copre client iOS e Android su Flutter, sblocco biometrico, dashboard saldo, trasferimenti P2P e pubblicazione sugli store costa tipicamente €120k–€280k. Aggiungere un ponte fiat-crypto con gateway carta, exchanger in-app, KYC multilivello, accoppiamento hardware wallet e gestione dati audit-ready porta un prodotto completo a €320k–€680k. I principali fattori di costo sono il lavoro di matrice Android per-OEM, l’isolamento dello scope PCI del gateway di pagamento e la gestione delle revisioni App Store e Google Play per le app finanziarie.
Flutter rilascia iOS e Android da un unico codebase Dart con rendering pixel-consistente via Skia, fondamentale quando i grafici crypto devono renderizzare a 60 fps su un dispositivo Android di fascia media da €200. Il canale di escape della piattaforma mantiene accessibili le API native StoreKit, Google Play Billing e biometrica quando necessario. React Native è un’alternativa valida con economia del team simile; il nativo completo iOS più Android raddoppia tipicamente il team e approssimativamente la timeline. Per un’app companion wallet dove il backend esiste già, Flutter è la scelta a rischio inferiore.
L’app mobile non vede mai le chiavi private. Le chiavi risiedono sul backend in vault isolati hardware con accesso registrato per audit, e il client mobile riceve solo token bearer a breve durata che autorizzano operazioni specifiche. Ogni azione che sposta denaro richiede una nuova conferma biometrica indipendentemente dall’autenticazione recente, e una serie di errori biometrici cancella lo stato di sessione in memoria. Attaccanti determinati con accesso completo al dispositivo possono ancora aggirare una biometrica, ma il modello custodial posiziona la compromissione ad alto valore dietro il backend, non nel telefono.
Apple richiede che le app crypto rispettino la categoria servizi finanziari, dichiarino il rischio di custodia e volatilità nel prodotto, e usino StoreKit per acquisti in-app di valore non crypto. Google Play richiede divulgazioni equivalenti, dichiara prominentemente lo scopo come app finanziaria e supera una revisione aggiuntiva dei permessi. Entrambi gli store richiedono KYC funzionale per le rampe fiat on-ramp, una divulgazione trasparente di qualsiasi raccolta dati, e — per le app che servono utenti UE e californiani — un meccanismo di consenso granulare che soddisfi GDPR e CCPA/CPRA nello stesso flusso.
Un MVP focalizzato con client Flutter, sblocco biometrico, dashboard asset, trasferimenti P2P e pubblicazione su entrambi gli store richiede tipicamente 16–22 settimane. Aggiungere un ponte fiat-crypto con gateway carta, exchanger in-app, KYC multilivello e una matrice di ottimizzazione batteria Android per-OEM aggiunge 6–10 settimane. Il passaggio di hardening audit-ready — isolamento scope PCI del gateway, QA della ri-autenticazione biometrica, threat modeling del piano di custodia — è frequentemente sottostimato e dovrebbe essere preventivato con 4–6 settimane di lavoro dedicato.
Casi correlati

Lancio ERC-20 end-to-end — contratto Solidity, audit di sicurezza, listing sugli exchange, checkout MetaMask.
Vedi il caso →
Hub unificato dell’ecosistema crypto che aggrega più token — dati di exchange live, grafici, punto di ingresso per acquisto diretto.
Vedi il caso →
Prodotto di firma elettronica multipiattaforma con postura audit-ready, lancio US + UE, conformità GDPR + CCPA.
Vedi il caso →Condividi qualche dettaglio e un consulente senior risponderà entro un giorno lavorativo.