KotlinAndroid StudioAndroid

Capire dove va il tempo dello studio

SPAN nasce da un bisogno personale: capire quanto tempo dedico davvero a ogni materia o esame. Volevo uno strumento semplice, senza funzioni superflue, e ho deciso di costruirlo mentre imparo a sviluppare per Android.

Una delle prime decisioni è stata togliere il Pomodoro, che avevo inizialmente considerato. Il centro del progetto è un cronometro puro: scelgo su cosa concentrarmi e avvio una sessione.

Le “concentrazioni” e le sessioni

Chiamo concentrazioni gli elementi della schermata principale: possono rappresentare un esame, una materia, un progetto o un’attività. Prevedo un titolo, un’icona, le informazioni associate e un pulsante Play per iniziare subito. L’ordinamento potrà seguire titolo, data di creazione o ultimo utilizzo.

Ogni sessione è rappresentata dall’entità concettuale StudySession. Deve gestire avvio, pausa, ripresa e conclusione, mantenere il legame con la concentrazione e registrarne la durata. Da queste sessioni nasceranno cronologia e statistiche: tempo totale, tempo per materia e progressi nel tempo.

La pausa non interrompe la concentrazione

Il progetto prevede una whitelist: durante una sessione, alcune applicazioni rimangono utilizzabili e le altre vengono bloccate. Ho scelto che il blocco continui anche quando metto in pausa il cronometro. Smettere per un momento di contare il tempo non deve spegnere la modalità di concentrazione.

Per le notifiche l’obiettivo è ridurre le distrazioni senza perdere informazioni: quelle delle app bloccate dovrebbero essere temporaneamente nascoste o sospese e tornare accessibili in seguito. Le app della whitelist dovrebbero continuare a riceverle normalmente. La realizzazione di questo comportamento deve ancora essere verificata durante lo sviluppo.

Perché Kotlin e Android Studio

Ho valutato React Native e anche architetture con un backend Django. Alla fine ho scelto lo sviluppo Android nativo con Kotlin e Android Studio.

Monitoraggio e blocco delle app, notifiche, servizi in background e funzioni di sistema sono centrali per SPAN. Nella valutazione delle alternative, un framework multipiattaforma avrebbe comunque richiesto molto lavoro sul lato Android. Ho preferito partire direttamente da lì.

Non ho ancora una soluzione definitiva da raccontare per ogni parte: gestione dello stato, persistenza, servizi e permessi sono anche ciò che voglio imparare attraverso il progetto.

Una roadmap da aggiornare

Ho organizzato lo sviluppo in una timeline a fasi, portata anche in Markdown su Notion. Lì raccolgo documentazione, avanzamento e decisioni, segnando manualmente le attività completate. Ho già semplificato la home dello spazio perché conteneva troppe informazioni.

Oltre alla Fase 0 completata, questi sono gli ambiti previsti; l’elenco non assegna date o nuove fasi alla timeline originale:

  • Concentrazioni, cronometro e ciclo di vita delle sessioni.
  • Registrazione dei dati, cronologia e statistiche per materia.
  • Whitelist, blocco delle applicazioni e gestione delle notifiche.
  • Obiettivi, badge, tema scuro, vibrazioni, avvisi e PIN per lo sblocco.

Il mio ruolo e quello dell’IA

Voglio capire e implementare direttamente soprattutto la logica centrale dell’app. L’intelligenza artificiale può aiutarmi come tutor, nel debugging, nella progettazione e nella parte grafica; non voglio affidarle tutta la programmazione.

SPAN è quindi sia uno strumento che desidero usare sia il mio percorso per imparare Kotlin, stato, dati, permessi e architettura Android. Questo diario crescerà insieme all’app, con le scelte che funzionano e quelle che dovrò cambiare.

Progetti personali