Aprile 2017: il nostro professore di informatica di allora entra in aula e ci propone un progetto: realizzare un'app per un museo locale, tutti accettano con più o meno entusiasmo e in poche ore comincia la fase implementativa.
Problema 1: Quasi nessuno conosce Java nè tantomeno Android Studio quindi si è costretti a implementare tutto con MIT AppInventor 2.
Problema 2: E iOS? Purtroppo per il sistema di Apple non c'è nulla da fare, nessuno ha un Mac per usare Xcode e di un account da sviluppatore neanche a parlarne: viene 100€ annui.
Problema 3: Il prototipo di app pesava diverse centinaia di MB visto che inglobava tutti i files multimediali, in pochi all'ingresso del museo avrebbero accettato di perdere minuti per scaricare l'app tramite la rete mobile.
Preso atto di questi problemi e memore delle mie recenti esperienze positive con C# propongo al mio professore di prendere in mano il progetto sviluppando in autonomia un'applicazione web al posto dell'app Android, il professore accetta e i miei compagni sono soddisfatti della cosa (eravamo in quinta e la maturità incombeva quindi un compito in meno era sempre benvenuto).
Metà maggio 2017: in 2 settimane completo la prima fase di sviluppo dell'app, c'erano ancora dei bug fastidiosi ma li avrei risolti in seguito intanto tutte le funzioni necessarie erano state implementate e il programma era pronto per essere dimostrato al professore che dopo averlo testato mi da il via libera per terminare lo sviluppo e, in seguito, consegnarlo con lui al museo.
Inizio giugno 2017: in altre 2 settimane (tra un impegno e l'altro visto visto l'esame incombente) risolvo molti bug del programma e lo porto a una versione definibile beta: funziona senza errori e bug visibili ma il pannello di controllo è graficamente carente e privo di alcune funzioni utili a chi dovrà gestire l'applicazione aggiungendo o rimuovendo contenuti tuttavia non si trattava di cose impattanti per l'esperienza dell'utente finale/visitatore quindi dovendomi dedicare a tempo pieno alla maturità decido di distribuire l'applicazione così com'è per dedicarmi in seguito alla realizzazione di un grosso aggiornamento, pianificato per settembre 2017, che avrebbe aggiunto le funzioni mancanti semplificando la vita all'amministratore.
Inizio Luglio 2017: con la maturità alle spalle sono pronto a lanciare il programma caricandolo su Azure, inserendo i contenuti richiesti dal museo e istruendo gli addetti del museo al suo utilizzo ma un messaggio dal mio professore di informatica mi fa scoprire che... ho lavorato per niente. A quanto pare il docente che aveva dato "in subappalto" il progetto dell'app al mio insegnante aveva deciso di arrangiarsi con la sua classe che ha fatto un mezzo sito per il museo il tutto senza avvertire il mio insegnate che ignaro di tutto non ha potuto comunicarmi la cosa. Privo di altri potenziali utenti per l'applicazione decido di interromperne lo sviluppo ma visto che ero arrivato a buon punto voglio condividerne il codice sorgente su GitHub e illustrarne il funzionamento in un articolo.
L'applicazione può essere considerata come un piccolo CMS fortemente specializzato per l'uso museale che organizza le informazioni in schede e pagine.
Le schede sono pagine di formato fissato utili per predisporre in modo rapido un sistema di audioguida. Ogni scheda può contenere un titolo, una descrizione testuale, un immagine e una traccia audio ed è contraddistinta da un URL univoco facilmente trasformabile in un codice QR o scrivibile su un tag NFC da inserire in punti chiave del museo. L'utente scansionando i codici o i tag con il suo smartphone farà aprire il browser del suo dispositivo sulla schda collegata a quel particolare URL e avrà la possibilità di leggere o di ascoltare una descrizione di ciò che sta osservando.
Tuttavia ho pensato che potrebbe esserci anche il bisogno di fare pagine più generiche, legate all'esposizione in generale e non ad un singolo luogo/oggetto, per questo ho dato la possibilità di aggiungere al sistema delle pagine statiche costruibili liberamente dall'utente tramite HTML. Queste pagine possono essere utili ad esempio per inserire nell'applicazione un video introduttivo dell'esposizione oppure per indicare gli orari di apertura e di chiusura del museo.
I contenuti e alcune impostazioni relative al funzionamento dell'applicazione possono essere gestiti tramite dei menu appositi accessibili solo previa autenticazione con password.
Ovviamente l'applicazione è completamente responsive quindi si adatta a schermi di ogni dimensione.
Questa è stata la prima applicazione web che ho sviluppato, con il senno di poi e con una maggiore conoscenza di C# e di .NET avrei fatto diversamente certe cose: avrei usato LINQ nella gestione dei database, mi sarei basato su .NET core e non su .NET 4.5.2 in modo da avere un applicazione distribuibile anche su server Linux e avrei scelto Spectre.css al posto di Twitter Bootstrap tuttavia come prima applicazione web sono stato soddisfatto del risultato anche se non ho avuto la possibilità di poterla distribuire come speravo, ad ogni modo il codice sorgente è presente con licenza libera sul mio account GitHub: l'applicazione è funzionante e può essere tranquillamente compilata e distribuita su un server Windows o su servizi come Azure o lo shared hosting di Aruba.