Spectra
Client mobili nativi per il pannello di hosting Spectra - app separate per Android (Kotlin) e iOS (Swift). Gestione completa dei server dal telefono: stati, console, fatturazione e notifiche. Non un sito impacchettato, ma un'interfaccia davvero nativa su ogni piattaforma.
Spectra è un pannello di hosting per server di gioco. La versione mobile non è un sito chiuso in una WebView, ma due app native separate: Android in Kotlin e iOS in Swift. Dal telefono fai quello che fai nel pannello del browser - controlli lo stato, apri la console, paghi una fattura. Le notifiche push ti dicono che il server è caduto prima che lo faccia un giocatore.
Introduzione
Sul web, Spectra è il centro di comando completo del cliente: ordine dei server, console, file, statistiche, fatturazione. Tutto ciò di cui un amministratore ha bisogno per tenere in piedi e funzionante il suo server Minecraft o di altri giochi. Il problema è che questo centro di comando è incatenato alla scrivania.
Un amministratore non lavora dalle nove alle diciassette davanti a un monitor. Un guasto non guarda il calendario - arriva sull'autobus, a pranzo, nel cuore della notte, quando il server è proprio pieno di giocatori. Allora conta una cosa sola: quanto in fretta il telefono in tasca ti porta a un riavvio e a una console prima che i giocatori comincino ad andarsene.
Per questo abbiamo costruito la versione mobile di Spectra come un modo a pieno titolo di gestire la piattaforma, non come un'aggiunta al pannello web. In pratica sono due app separate scritte nel linguaggio nativo di ciascuna piattaforma - Android in Kotlin, iOS in Swift - che si rivolgono esattamente alla stessa API del pannello del browser.
Un guasto non chiede dove ti trovi
Quando un server cade nel bel mezzo del prime time, ogni minuto sono giocatori che non tornano. In quel momento non avvii un portatile, non accedi al pannello web, non cerchi una scheda. Tiri fuori il telefono che hai già in mano e vuoi essere sulla console in due tocchi.
Questo cambia ciò che l'app deve essere. Uno strumento a cui ricorri nello stress di un guasto deve avviarsi all'istante, rispondere senza scatti e portare all'obiettivo senza vagare tra i menu. Ogni secondo di ritardo tra il tocco dell'icona e la vista della console è un secondo in cui il server resta a terra.
La WebView non è cattiva per principio - per una schermata che guardi una volta a trimestre può essere una scelta ragionevole. La regola che seguiamo in Spectra: più spesso e più sotto pressione usi una schermata, più forte è il motivo per il nativo. La console e un riavvio del server stanno esattamente da quella parte.
Perché non una pagina in una cornice
La via più semplice ed economica verso il mobile è avvolgere il pannello web esistente in una WebView e mandarlo allo store come "app". Il codice è già lì, basta circondarlo con una finestra. Ma la scorciatoia si tradisce a ogni passo: l'app si avvia lentamente, perché prima deve svegliarsi il motore del browser, perde i gesti nativi, notifica male o per niente e sembra una pagina in una cornice sottile.
Per un pannello che tocchi ogni tanto sarebbe un compromesso accettabile. Per uno strumento di soccorso no. Così abbiamo preso la strada più difficile: un'interfaccia propria e nativa su ciascuna piattaforma, che appare e si comporta come un'app del suo sistema, non lo stesso mockup schiacciato su Android e iOS insieme.
Una pagina in una cornice contro il nativo
| Caratteristica | WebView | Nativo (Spectra) |
|---|---|---|
| Avvio dell'app | attende il motore del browser | istantaneo |
| Gesti e scorrimento | spesso a scatti | fluidi, a livello di sistema |
| Notifiche push | limitate | complete, con un deep link |
| Accesso al sistema | dietro un muro di sandbox | nativo |
| Aspetto | una pagina in una cornice | un'app della sua piattaforma |
Tempo fino alla prima schermata utile (illustrativo, ms)
Due linguaggi, una API
Ciò che le due app condividono è quello che sta sotto: l'API e il modello dei dati. Ciò che differisce è l'interfaccia, perché Android e iOS hanno i propri schemi di navigazione, il proprio linguaggio dei gesti e le proprie aspettative su come un'app debba comportarsi. Forzare un'unica interfaccia comune su entrambi finisce col farla sembrare estranea su entrambi.
Il punto chiave è che il client mobile parla esattamente con la stessa API del pannello web. Non c'è una "versione mobile ridotta" dalle possibilità tagliate - un riavvio del server dal telefono passa per lo stesso contratto di un riavvio dal browser. Così sul telefono fai davvero ciò che fai alla scrivania, e non un sottoinsieme scelto.
Android in Kotlin, iOS in Swift; API e modello dei dati comuni, un'interfaccia propria adattata agli schemi di ciascuna piattaforma.
un flusso dei log del server e l'immissione di comandi dal telefono, con una tastiera che non copre metà di ciò che scrivi.
avvio, arresto, riavvio e una vista dell'uso delle risorse senza ricorrere al desktop.
vista delle fatture e pagamento, perché il server non scada solo perché eri lontano da casa.
il server è caduto, il periodo di fatturazione sta finendo, un backup è fallito; tocchi e atterri sulla schermata giusta.
Un push che porta dritto alla console
Le notifiche non sono un ornamento ma il cuore dell'intera idea per il mobile. Sono loro che ti fanno sapere di un guasto prima del primo giocatore. Senza di esse l'app sarebbe una finestra passiva che devi aprire tu stesso al momento giusto - e il momento giusto è di solito quello in cui non sai nulla.
Un evento del backend ha una forma semplice e inequivocabile, ed è quella forma a decidere dove ti deposita un tocco sulla notifica. Il deep link non porta a una schermata iniziale ma dritto alla console del server preciso che ha un problema. Nessuna ricerca, nessuna navigazione - dal suono del telefono al punto in cui puoi agire c'è un solo tocco.
Un server salvato da una fermata dell'autobus
Il risultato è uno strumento che salva davvero un server dal telefono, non un percorso d'emergenza che usi una volta per poi tornare al portatile. L'amministratore riceve il pannello completo sul telefono: stato, console, azioni di alimentazione, fatturazione - e viene a sapere di un problema nel momento in cui accade, non quando guarda per caso.
Dal lato di Spectra il guadagno è altrettanto concreto: il mobile non è un prodotto separato che vive di vita propria, ma un altro client della stessa API. Una nuova possibilità nel backend è raggiungibile dal telefono proprio come dal browser, senza riscrivere la logica una seconda e una terza volta. I numeri qui sopra sono illustrativi, ma la direzione no.
Un guasto arriverà comunque nel momento peggiore. Il punto era che il momento peggiore non significasse più impotenza - solo un telefono tirato fuori dalla tasca.
Altri progetti
Altri lavori della stessa categoria - scopri come affrontiamo sfide simili.
Hai un progetto simile?
Contattaci - il preventivo è gratuito e arriva entro un'ora.


