Tecnologie Informatiche per il Web — Proposte di Progetto
Indicazioni generali
Le proposte di progetto sono organizzate in tre livelli progressivi di difficoltà.
Livello 1 — Applicazione diretta e adattamento
Il Livello 1 richiede la realizzazione del nucleo funzionale dell'applicazione, utilizzando strumenti, tecniche e architetture affrontate durante il corso. L'obiettivo principale è dimostrare di saper progettare e implementare una semplice applicazione web completa, con autenticazione, persistenza dei dati e interfacce coerenti con il dominio scelto.
Livello 2 — Uso creativo e approfondimento tecnico
Il Livello 2 richiede un passo avanti rispetto all'applicazione base. Si introducono requisiti più articolati, vincoli applicativi, interrogazioni più complesse, stati, filtri, ruoli, statistiche, controlli di consistenza e logiche di business più elaborate.
Livello 3 — Esplorazione autonoma e innovazione
Il Livello 3 è pensato per chi desidera spingersi oltre, esplorando tecnologie, API o paradigmi non necessariamente trattati in dettaglio durante il corso. Il Livello 3 non deve consistere in una semplice aggiunta di schermate o campi, ma in una estensione tecnicamente significativa.
Esempi di estensioni di Livello 3 includono:
- aggiornamenti in tempo reale tramite WebSocket o tecnologie equivalenti;
- integrazione con API esterne;
- notifiche email o notifiche asincrone;
- caricamento e gestione di file o immagini;
- mappe interattive;
- esportazione o importazione dati in formati standard;
- generazione di QR code;
- dashboard analitiche avanzate;
- integrazione con calendari;
- automazioni pianificate;
- funzionalità collaborative avanzate.
Gli studenti possono proporre una propria estensione di Livello 3 alternativa a quelle indicate, purché sia coerente con il progetto e richieda uno sforzo tecnico autonomo adeguato.
Criteri di valutazione
La valutazione del progetto terrà in considerazione i seguenti aspetti.
Aderenza alle specifiche
Si valuterà la capacità di realizzare correttamente le funzionalità richieste per il livello o i livelli affrontati.
Motivazione delle scelte progettuali
Gli studenti dovranno essere in grado di spiegare e giustificare le principali scelte tecniche e architetturali adottate: modello dati, organizzazione del backend, struttura delle rotte o degli endpoint, gestione delle autorizzazioni, validazione dei dati, tecnologie utilizzate e compromessi progettuali.
Qualità del risultato finale
Si valuteranno usabilità generale, correttezza funzionale, robustezza, chiarezza dell'interfaccia e cura complessiva dell'applicazione. Non sono richieste competenze specifiche di grafica o UX design; tuttavia, verrà valorizzata un'applicazione gradevole, leggibile e intuitiva.
Qualità tecnica
Saranno considerati positivamente:
- codice organizzato e comprensibile;
- separazione tra responsabilità diverse;
- validazione lato client e lato server;
- controllo corretto delle autorizzazioni;
- gestione degli errori;
- query e modello dati coerenti;
- attenzione ai casi limite;
- documentazione chiara per avvio e uso dell'applicazione.
Corrispondenza tra livelli e valutazione
- Completando con successo il Livello 1, si potrà ambire a una valutazione massima di 24/30.
- Affrontando e realizzando efficacemente anche il Livello 2, si potrà raggiungere la valutazione piena, fino a 30/30.
- Chi punta al massimo risultato, inclusa la lode, è fortemente incoraggiato a cimentarsi con una estensione di Livello 3.
Requisiti tecnici comuni
Salvo diversa indicazione specifica della traccia, ogni progetto deve prevedere:
- registrazione e autenticazione degli utenti, quando il dominio lo richiede;
- persistenza dei dati su database;
- operazioni CRUD sulle entità principali;
- validazione degli input;
- gestione degli errori più comuni;
- controllo delle autorizzazioni;
- interfacce web utilizzabili;
- un README con istruzioni di installazione, avvio e uso;
- eventuali credenziali di test;
- una breve descrizione delle funzionalità implementate e del livello raggiunto.
Una semplice simulazione solo lato frontend non è sufficiente: le informazioni principali devono essere persistite e le operazioni rilevanti devono essere validate lato server.
Proposte di progetto
Tracce più classiche
- Piattaforma di Prenotazione Risorse
- Sistema di Ticketing / Helpdesk
- Piattaforma per Sondaggi e Questionari
- Gestione Biblioteca / Prestiti
- Piattaforma di Recensioni e Liste
- Gestione Spese di Gruppo
Tracce più creative
- Museo delle Cose Perdute
- Oracolo delle Decisioni Collettive
- Agenzia di Missioni Urbane
- Archivio dei Sogni Ricorrenti
- Governo di una Micro-Nazione Immaginaria
1. Piattaforma di Prenotazione Risorse
Introduzione al progetto
Molte organizzazioni devono gestire risorse condivise: aule studio, sale riunioni, laboratori, postazioni, strumenti tecnici, campi sportivi o attrezzature. Questa piattaforma permette agli utenti di consultare le risorse disponibili e prenotarle in specifiche fasce orarie, evitando sovrapposizioni e conflitti.
Livello 1 — Prenotazioni base
L'applicazione web deve permettere agli utenti di:
- registrarsi e accedere;
- visualizzare l'elenco delle risorse prenotabili;
- visualizzare i dettagli di una risorsa;
- creare una prenotazione indicando risorsa, data, ora di inizio e ora di fine;
- visualizzare le proprie prenotazioni;
- cancellare una propria prenotazione futura.
Un amministratore deve poter:
- creare nuove risorse;
- modificare le informazioni di una risorsa;
- eliminare o disattivare una risorsa;
- visualizzare l'elenco di tutte le prenotazioni.
Esempio indicativo
Un utente, Giulia, accede alla piattaforma e vede che la Sala Studio 2 è prenotabile. Sceglie il giorno 15 luglio, dalle 10:00 alle 12:00, e crea una prenotazione. In seguito, nella propria area personale, vede la prenotazione appena effettuata.
Obiettivo funzionale
Realizzare il nucleo di un sistema di prenotazione risorse, con utenti, risorse, prenotazioni e gestione base delle cancellazioni.
Livello 2 — Vincoli, disponibilità e gestione conflitti
L'applicazione deve estendere il Livello 1 introducendo:
- controllo automatico dei conflitti temporali: non deve essere possibile prenotare una risorsa già occupata nello stesso intervallo;
- durata massima della prenotazione;
- eventuali fasce orarie disponibili per ciascuna risorsa;
- ricerca di risorse disponibili per data e fascia oraria;
- filtri per tipologia, capienza o caratteristiche della risorsa;
- stato della prenotazione, ad esempio confermata, cancellata, in attesa;
- vista agenda o calendario delle prenotazioni.
Esempio indicativo
Marco prova a prenotare una sala dalle 10:30 alle 11:30, ma la sala è già occupata dalle 10:00 alle 12:00. Il sistema rifiuta la prenotazione e propone di scegliere un altro orario o un'altra sala disponibile.
Obiettivo funzionale
Gestire correttamente i vincoli temporali e rendere la piattaforma utile per cercare, confrontare e prenotare risorse disponibili.
Livello 3 — Notifiche, calendario esterno o real-time
Possibili estensioni di Livello 3:
- invio di notifiche email di conferma, modifica o cancellazione della prenotazione;
- esportazione della prenotazione in formato
.icsper calendari esterni; - aggiornamento in tempo reale della disponibilità delle risorse;
- check-in e check-out tramite QR code;
- lista d'attesa automatica per risorse molto richieste;
- statistiche sull'utilizzo delle risorse.
Obiettivo funzionale
Arricchire la piattaforma con funzionalità avanzate che migliorino l'esperienza utente e introducano integrazioni o meccanismi asincroni.
2. Sistema di Ticketing / Helpdesk
Introduzione al progetto
Un sistema di ticketing permette di gestire richieste di assistenza, segnalazioni, bug, problemi tecnici o domande rivolte a un gruppo di operatori. Il progetto consiste nel realizzare una piattaforma web in cui gli utenti possano aprire ticket e seguirne l'evoluzione, mentre gli operatori possano assegnarli, rispondere e modificarne lo stato.
Livello 1 — Apertura e gestione ticket base
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- aprire un ticket con titolo, descrizione e categoria;
- visualizzare l'elenco dei propri ticket;
- visualizzare il dettaglio di un ticket;
- aggiungere commenti ai propri ticket;
- vedere lo stato del ticket.
Gli operatori devono poter:
- visualizzare tutti i ticket;
- rispondere ai ticket;
- modificare lo stato del ticket, ad esempio aperto, in lavorazione, risolto, chiuso.
Esempio indicativo
Sara apre un ticket con titolo “Problema accesso piattaforma”. Un operatore legge il ticket, risponde chiedendo ulteriori informazioni e cambia lo stato in “in lavorazione”. Sara vede la risposta e aggiunge un commento.
Obiettivo funzionale
Realizzare un sistema base di assistenza con utenti, operatori, ticket, commenti e stati.
Livello 2 — Priorità, assegnazione e filtri
L'applicazione deve aggiungere:
- priorità del ticket: bassa, media, alta, urgente;
- assegnazione di un ticket a uno specifico operatore;
- storico delle modifiche di stato;
- filtri per categoria, stato, priorità e operatore assegnato;
- dashboard per operatori con conteggi dei ticket aperti, in lavorazione e risolti;
- possibilità per l'utente di valutare la risposta ricevuta o indicare se il problema è stato risolto.
Esempio indicativo
Un ticket urgente viene assegnato all'operatore Luca. Nella dashboard di Luca compare tra i ticket ad alta priorità. Quando Luca lo risolve, il sistema registra nello storico il cambio di stato e l'utente può confermare la risoluzione.
Obiettivo funzionale
Introdurre un workflow più realistico, con assegnazioni, priorità, tracciamento delle modifiche e strumenti di controllo per gli operatori.
Livello 3 — Notifiche, real-time o knowledge base
Possibili estensioni di Livello 3:
- notifiche email quando un ticket riceve una risposta;
- aggiornamenti in tempo reale dei commenti;
- caricamento di allegati ai ticket;
- knowledge base con articoli di supporto;
- suggerimento automatico di articoli correlati in base alla categoria o alle parole chiave del ticket;
- statistiche sui tempi medi di risposta e risoluzione.
Obiettivo funzionale
Trasformare il sistema in una piattaforma di assistenza più completa, introducendo notifiche, collaborazione dinamica, gestione documentale o analisi del servizio.
3. Piattaforma per Sondaggi e Questionari
Introduzione al progetto
Questionari e sondaggi sono strumenti molto usati per raccogliere opinioni, feedback, preferenze e dati strutturati. Il progetto consiste nel realizzare una piattaforma web in cui gli utenti possano creare questionari, pubblicarli, raccogliere risposte e consultare risultati aggregati.
Livello 1 — Creazione e compilazione questionari base
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- creare un questionario con titolo e descrizione;
- aggiungere domande a risposta multipla;
- pubblicare un questionario;
- visualizzare i questionari pubblicati;
- compilare un questionario pubblicato;
- visualizzare le risposte ricevute ai propri questionari.
Esempio indicativo
Luca crea un questionario intitolato “Feedback sul laboratorio”. Aggiunge tre domande a risposta multipla, lo pubblica e condivide il link con i compagni. Dopo alcune compilazioni, può consultare le risposte raccolte.
Obiettivo funzionale
Realizzare una piattaforma base per la creazione, pubblicazione e compilazione di questionari.
Livello 2 — Tipi di domanda, vincoli e statistiche
L'applicazione deve supportare:
- più tipi di domanda: risposta breve, scelta singola, scelta multipla, scala numerica;
- domande obbligatorie e facoltative;
- apertura e chiusura del questionario in base a una data;
- limite massimo di risposte;
- statistiche aggregate per ogni domanda;
- esportazione delle risposte in formato CSV;
- impedimento di compilazioni multiple da parte dello stesso utente, se previsto dal creatore.
Esempio indicativo
Un questionario rimane aperto fino al 30 giugno. Le domande obbligatorie devono essere compilate prima dell'invio. Il creatore può vedere che il 65% dei partecipanti ha scelto una certa opzione e può esportare tutte le risposte.
Obiettivo funzionale
Arricchire il sistema con questionari più flessibili, gestione dei vincoli e analisi aggregata dei risultati.
Livello 3 — Condivisione avanzata e dashboard live
Possibili estensioni di Livello 3:
- dashboard con risultati aggiornati in tempo reale;
- link pubblico con codice di accesso;
- generazione di QR code per accedere al questionario;
- domande condizionali, mostrate solo in base a risposte precedenti;
- analisi testuale semplice delle risposte aperte;
- importazione o esportazione avanzata dei questionari.
Obiettivo funzionale
Introdurre funzionalità avanzate di raccolta, condivisione, analisi o visualizzazione dinamica dei dati.
4. Gestione Biblioteca / Prestiti
Introduzione al progetto
Biblioteche, archivi e collezioni condivise richiedono strumenti per catalogare libri o materiali e gestirne il prestito. Il progetto consiste nel realizzare una piattaforma per consultare un catalogo, richiedere prestiti, restituire materiali e monitorare disponibilità e scadenze.
Livello 1 — Catalogo e prestiti base
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- consultare un catalogo di libri o materiali;
- cercare per titolo o autore;
- visualizzare la scheda dettagliata di un libro;
- richiedere il prestito di un libro disponibile;
- visualizzare i propri prestiti;
- restituire un libro.
Un amministratore o bibliotecario deve poter:
- aggiungere nuovi libri;
- modificare o rimuovere libri;
- visualizzare tutti i prestiti.
Esempio indicativo
Anna cerca “Il barone rampante”, vede che è disponibile e richiede il prestito. Nella propria area personale vede il libro tra i prestiti attivi. Dopo la restituzione, il libro torna disponibile.
Obiettivo funzionale
Realizzare una piattaforma base per catalogo, disponibilità e prestiti.
Livello 2 — Copie, prenotazioni e scadenze
L'applicazione deve aggiungere:
- gestione di più copie dello stesso libro;
- data di inizio e data di scadenza del prestito;
- stato del prestito: attivo, restituito, scaduto;
- prenotazione di un libro non disponibile;
- coda di prenotazione;
- storico dei prestiti per utente e per libro;
- filtri per autore, genere, disponibilità o anno.
Esempio indicativo
Un libro ha tre copie: due sono in prestito e una è disponibile. Quando tutte le copie sono occupate, un utente può prenotarsi in coda. Alla restituzione di una copia, il primo utente in coda può ricevere la priorità.
Obiettivo funzionale
Gestire correttamente disponibilità multiple, scadenze, code e storico dei prestiti.
Livello 3 — Raccomandazioni, notifiche o import dati
Possibili estensioni di Livello 3:
- notifiche email prima della scadenza del prestito;
- suggerimenti di libri simili;
- importazione del catalogo da file CSV;
- integrazione con API esterne per recuperare copertine o metadati;
- statistiche sui libri più richiesti;
- esportazione dello storico prestiti.
Obiettivo funzionale
Arricchire la piattaforma con automazioni, integrazioni esterne, raccomandazioni o strumenti di analisi.
5. Piattaforma di Recensioni e Liste
Introduzione al progetto
Molte applicazioni web permettono agli utenti di recensire contenuti o oggetti: film, libri, videogiochi, podcast, corsi, luoghi o servizi. Il progetto consiste nel realizzare una piattaforma in cui gli utenti possano consultare un catalogo, scrivere recensioni, assegnare voti e organizzare gli elementi in liste personali.
Livello 1 — Catalogo e recensioni
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- visualizzare un catalogo di elementi;
- visualizzare il dettaglio di un elemento;
- creare una recensione con voto numerico e testo;
- modificare o eliminare le proprie recensioni;
- visualizzare la media dei voti per ogni elemento.
Un amministratore deve poter:
- aggiungere elementi al catalogo;
- modificare o rimuovere elementi;
- moderare recensioni manifestamente inappropriate, se previsto.
Esempio indicativo
Marco consulta la scheda di un film, vede la media dei voti e aggiunge una recensione con voto 4/5. In seguito può modificare il testo della recensione.
Obiettivo funzionale
Realizzare una piattaforma base di catalogo e recensioni, con voti aggregati e gestione delle recensioni personali.
Livello 2 — Liste, filtri e reputazione
L'applicazione deve aggiungere:
- liste personali, ad esempio “da vedere”, “preferiti”, “completati”;
- ricerca e filtri per genere, categoria, voto medio o numero di recensioni;
- ordinamento per media voto, numero recensioni o data di inserimento;
- sistema di like o apprezzamenti alle recensioni;
- profilo utente con statistiche sulle recensioni scritte;
- controllo che un utente non inserisca più recensioni per lo stesso elemento, salvo modifica della precedente.
Esempio indicativo
Giulia aggiunge un libro alla lista “da leggere”. Dopo averlo letto, lo sposta in “completati” e scrive una recensione. Altri utenti possono apprezzare la recensione.
Obiettivo funzionale
Arricchire la piattaforma con organizzazione personale, ricerca avanzata, reputazione e statistiche utente.
Livello 3 — API esterne, raccomandazioni o moderazione avanzata
Possibili estensioni di Livello 3:
- integrazione con API esterna per importare dati del catalogo;
- suggerimenti personalizzati basati su voti, categorie o liste;
- sistema di segnalazione delle recensioni inappropriate;
- feed attività degli utenti seguiti;
- dashboard con andamento delle recensioni nel tempo;
- importazione o esportazione delle liste personali.
Obiettivo funzionale
Rendere la piattaforma più ricca, dinamica e vicina a un servizio web reale, introducendo integrazioni esterne, raccomandazioni o meccanismi sociali controllati.
6. Gestione Spese di Gruppo
Introduzione al progetto
Durante viaggi, convivenze, cene, attività di gruppo o progetti condivisi è spesso necessario tenere traccia delle spese sostenute da ciascuno e calcolare chi deve rimborsare chi. Il progetto consiste nel realizzare una piattaforma per registrare spese condivise, calcolare saldi e gestire rimborsi.
Livello 1 — Gruppi e spese condivise
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- creare un gruppo;
- aggiungere o invitare altri utenti al gruppo;
- inserire una spesa indicando importo, descrizione, pagatore e partecipanti coinvolti;
- visualizzare le spese del gruppo;
- visualizzare il saldo di ciascun partecipante.
Esempio indicativo
Durante un viaggio, Alice paga 60€ per una cena condivisa con Bob e Carla. Inserisce la spesa nel gruppo “Viaggio a Torino”. Il sistema aggiorna i saldi mostrando quanto Bob e Carla devono rimborsare.
Obiettivo funzionale
Realizzare un sistema base per gruppi, spese condivise e calcolo dei saldi.
Livello 2 — Divisioni avanzate e rimborsi
L'applicazione deve supportare:
- divisione equa tra tutti i partecipanti;
- divisione per quote personalizzate;
- esclusione di alcuni membri da una specifica spesa;
- registrazione di rimborsi;
- calcolo dei debiti minimi tra utenti;
- storico dettagliato delle operazioni;
- categorie di spesa, ad esempio cibo, trasporti, alloggio, materiali.
Esempio indicativo
In una spesa da 100€, Alice paga tutto, ma Bob deve contribuire per 20€, Carla per 30€ e Davide per 50€. Il sistema registra quote diverse e aggiorna i saldi. In seguito Bob registra un rimborso verso Alice.
Obiettivo funzionale
Gestire scenari più realistici di divisione delle spese, rimborsi e calcolo dei debiti tra partecipanti.
Livello 3 — Notifiche, valute o report
Possibili estensioni di Livello 3:
- notifiche quando viene aggiunta una nuova spesa;
- esportazione del riepilogo in PDF o CSV;
- gestione multi-valuta con tassi aggiornati tramite API esterna;
- grafici delle spese per categoria;
- caricamento dell'immagine dello scontrino;
- chiusura del gruppo con generazione automatica dei rimborsi consigliati.
Obiettivo funzionale
Arricchire la piattaforma con automazioni, esportazioni, gestione file, integrazioni esterne o analisi visuale delle spese.
7. Museo delle Cose Perdute
Introduzione al progetto
Il Museo delle Cose Perdute è una piattaforma per segnalare oggetti smarriti e ritrovati. Può funzionare come ufficio oggetti smarriti digitale, bacheca di campus o archivio semi-narrativo di oggetti curiosi. Il tono può essere leggero, ma il progetto richiede una gestione seria di utenti, segnalazioni, stati, messaggi e possibili corrispondenze.
Livello 1 — Oggetti smarriti e ritrovati
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- pubblicare una segnalazione di oggetto smarrito;
- pubblicare una segnalazione di oggetto ritrovato;
- specificare titolo, descrizione, luogo, data e categoria;
- visualizzare l'elenco pubblico delle segnalazioni;
- filtrare per categoria, luogo o tipo di segnalazione: smarrito o ritrovato;
- contattare l'autore della segnalazione tramite messaggio interno o richiesta di contatto.
Esempio indicativo
Mario segnala di aver perso un portachiavi rosso con un dinosauro vicino alla biblioteca. Lucia segnala di aver trovato un portachiavi rosso nella stessa zona. Entrambe le segnalazioni sono visibili nella piattaforma.
Obiettivo funzionale
Realizzare un sistema base per la gestione di oggetti smarriti e ritrovati, con pubblicazione, ricerca e contatto tra utenti.
Livello 2 — Matching tra oggetti e richieste
L'applicazione deve aggiungere:
- stato della segnalazione: aperta, in verifica, risolta, archiviata;
- possibilità di proporre un match tra un oggetto smarrito e uno ritrovato;
- sistema di domande di verifica per evitare restituzioni sbagliate;
- elenco dei match suggeriti o proposti;
- dashboard personale con le proprie segnalazioni e i match ricevuti;
- storico delle interazioni su una segnalazione.
Esempio indicativo
Il sistema mostra a Mario la segnalazione di Lucia come possibile corrispondenza. Prima di procedere, Lucia può chiedere a Mario un dettaglio non pubblico dell'oggetto, ad esempio “che forma ha il ciondolo?”.
Obiettivo funzionale
Introdurre una logica di matching e verifica, evitando che la piattaforma sia solo una bacheca statica.
Livello 3 — Mappa, immagini o suggerimenti automatici
Possibili estensioni di Livello 3:
- mappa interattiva dei luoghi di smarrimento e ritrovamento;
- caricamento immagini degli oggetti;
- suggerimento automatico di match basato su parole chiave, categoria, data e luogo;
- notifiche quando viene pubblicato un oggetto simile;
- generazione di QR code da stampare per segnalazioni fisiche nel campus;
- moderazione delle segnalazioni pubbliche.
Obiettivo funzionale
Rendere la piattaforma più utile e interattiva, introducendo ricerca intelligente, mappe, immagini o notifiche.
8. Oracolo delle Decisioni Collettive
Introduzione al progetto
L'Oracolo delle Decisioni Collettive è una piattaforma per gruppi che devono scegliere tra alternative: dove andare a cena, quale data fissare, quale film vedere, quale progetto scegliere o quale nome dare a un'iniziativa. Non si tratta solo di un sondaggio, ma di uno strumento per confrontare preferenze, vincoli e possibili compromessi.
Livello 1 — Decisioni e votazioni
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- creare una decisione con titolo, descrizione e scadenza;
- aggiungere opzioni tra cui scegliere;
- invitare altri utenti o rendere la decisione pubblica;
- votare una o più opzioni;
- visualizzare il risultato della votazione.
Esempio indicativo
Un gruppo crea la decisione “Dove facciamo la cena di fine corso?”. Le opzioni sono pizzeria, sushi, picnic e mensa. Gli utenti votano e il sistema mostra l'opzione più scelta.
Obiettivo funzionale
Realizzare un sistema base per creare decisioni collettive, raccogliere voti e mostrare risultati.
Livello 2 — Preferenze articolate e compromessi
L'applicazione deve aggiungere:
- voto ordinato per preferenza;
- possibilità di assegnare punteggi alle opzioni;
- commenti e argomentazioni a favore o contro;
- vincoli personali, ad esempio indisponibilità in certi giorni o budget massimo;
- algoritmo di scelta basato su metodo maggioritario, punteggio medio o ranking;
- confronto tra diversi metodi di decisione.
Esempio indicativo
L'opzione più votata non è quella che massimizza la soddisfazione media. Il sistema mostra entrambe le soluzioni e spiega quale metodo ha prodotto ciascun risultato.
Obiettivo funzionale
Introdurre forme di voto più ricche e logiche di aggregazione che richiedano modellazione e ragionamento algoritmico.
Livello 3 — Decisioni live, calendario o algoritmo avanzato
Possibili estensioni di Livello 3:
- aggiornamento dei risultati in tempo reale;
- integrazione con calendario per trovare date compatibili;
- sistema di ballottaggio automatico;
- implementazione di metodi come Borda count, Condorcet o voto alternativo;
- modalità negoziazione, con suggerimento di alternative di compromesso;
- esportazione del risultato finale con verbale della decisione.
Obiettivo funzionale
Rendere il processo decisionale più dinamico, trasparente e tecnicamente sofisticato.
9. Agenzia di Missioni Urbane
Introduzione al progetto
L'Agenzia di Missioni Urbane è una piattaforma in cui gli utenti creano e completano piccole missioni nel mondo reale: trovare un luogo, fotografare un dettaglio, descrivere una fontanella, visitare un punto di interesse o partecipare a una caccia al tesoro leggera. Il progetto ha un tono ludico, ma richiede gestione di stati, prove, verifiche, punti e classifiche.
Livello 1 — Creazione e completamento missioni
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- creare una missione con titolo, descrizione, luogo indicativo e punteggio;
- visualizzare le missioni disponibili;
- accettare una missione;
- inviare una prova di completamento testuale;
- vedere le missioni completate;
- visualizzare il proprio punteggio.
Esempio indicativo
Una missione chiede: “Trova una fontanella nel raggio di 500 metri dal dipartimento e descrivila”. Un utente accetta la missione, invia una breve descrizione e ottiene punti dopo l'approvazione.
Obiettivo funzionale
Realizzare una piattaforma base per creare, accettare e completare missioni.
Livello 2 — Verifica, classifiche e categorie
L'applicazione deve aggiungere:
- categorie di missioni, ad esempio esplorazione, cultura, fotografia, utilità, assurdità controllata;
- stato della missione o del completamento: disponibile, accettata, completata, verificata, rifiutata;
- validazione della prova da parte del creatore della missione o di un moderatore;
- classifica utenti per punti;
- badge per obiettivi raggiunti;
- filtri per zona, difficoltà, categoria e punteggio.
Esempio indicativo
Una missione difficile vale 100 punti, ma il punteggio viene assegnato solo quando il creatore verifica la prova inviata dall'utente.
Obiettivo funzionale
Introdurre workflow di verifica, progressione utente e strumenti di esplorazione delle missioni.
Livello 3 — Geolocalizzazione, mappe o prove multimediali
Possibili estensioni di Livello 3:
- mappa interattiva delle missioni;
- caricamento di foto come prova;
- controllo approssimativo della posizione;
- missioni a tempo;
- missioni collaborative;
- notifiche quando compaiono missioni vicine;
- QR code fisici nascosti che sbloccano missioni speciali.
Obiettivo funzionale
Rendere la piattaforma più immersiva, introducendo mappe, file, geolocalizzazione, real-time o meccaniche collaborative.
10. Archivio dei Sogni Ricorrenti
Introduzione al progetto
L'Archivio dei Sogni Ricorrenti è una piattaforma per registrare sogni, simboli, emozioni e ricorrenze. Il progetto non richiede interpretazioni psicologiche o mediche: il focus è costruire un diario strutturato con tag, ricerca, pattern e statistiche personali o aggregate.
Livello 1 — Diario dei sogni
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- inserire un sogno con titolo, descrizione, data e intensità percepita;
- associare tag o simboli, ad esempio mare, esame, porta, volare;
- indicare emozioni principali;
- visualizzare i propri sogni;
- cercare nei propri sogni;
- modificare o cancellare i propri sogni.
Esempio indicativo
Elena registra un sogno con titolo “La scala infinita”, aggiunge i tag scala, notte e casa, e indica come emozione principale “ansia”. In seguito può ritrovarlo cercando per tag o per parola chiave.
Obiettivo funzionale
Realizzare un diario personale strutturato, con tag, emozioni, ricerca e gestione privata dei contenuti.
Livello 2 — Pattern, ricorrenze e statistiche
L'applicazione deve aggiungere:
- conteggio dei simboli più frequenti;
- filtri per emozione, periodo, tag o intensità;
- collegamento tra sogni simili;
- timeline dei sogni;
- statistiche mensili;
- possibilità di rendere alcuni sogni pubblici in forma anonima;
- esplorazione pubblica dei simboli più ricorrenti nella comunità.
Esempio indicativo
Il sistema mostra che negli ultimi trenta giorni l'utente ha inserito cinque sogni con il tag “treno” e tre con emozione “ansia”.
Obiettivo funzionale
Passare da un semplice diario a uno strumento di esplorazione e analisi dei pattern ricorrenti.
Livello 3 — Analisi testuale o visualizzazione avanzata
Possibili estensioni di Livello 3:
- estrazione automatica di parole chiave dal testo;
- suggerimento automatico di tag;
- grafo dei simboli ricorrenti;
- dashboard visuale interattiva;
- generazione di una “mappa onirica” personale;
- esportazione del diario in PDF;
- modalità privacy avanzata con sogni privati, anonimi o pubblici.
Obiettivo funzionale
Introdurre analisi del testo, visualizzazioni avanzate, esportazioni o controlli privacy più raffinati.
11. Governo di una Micro-Nazione Immaginaria
Introduzione al progetto
Il Governo di una Micro-Nazione Immaginaria è una piattaforma in cui gli utenti fondano e gestiscono piccole nazioni fittizie. Possono creare leggi, ruoli, comunicati, votazioni, risorse simboliche, alleanze ed eventi. Il tono può essere ironico, ma il progetto richiede ruoli, autorizzazioni, workflow, votazioni e storico delle decisioni.
Livello 1 — Creazione micro-nazioni e cittadini
L'applicazione deve permettere agli utenti di:
- registrarsi e accedere;
- creare una micro-nazione con nome, motto, descrizione e bandiera testuale o emoji;
- unirsi a una micro-nazione esistente;
- visualizzare la scheda pubblica di una micro-nazione;
- pubblicare comunicati ufficiali, se autorizzati;
- visualizzare l'elenco dei cittadini.
Esempio indicativo
Un utente crea la “Repubblica Autonoma della Macchinetta del Caffè”, con motto “Un espresso, un voto”. Altri utenti possono unirsi come cittadini e consultare la pagina pubblica della micro-nazione.
Obiettivo funzionale
Realizzare una piattaforma base per creare comunità fittizie, gestire cittadini e pubblicare informazioni ufficiali.
Livello 2 — Ruoli, leggi e votazioni
L'applicazione deve aggiungere:
- ruoli interni, ad esempio fondatore, ministro, cittadino;
- proposta di leggi;
- votazione delle leggi da parte dei cittadini;
- stato delle leggi: proposta, approvata, respinta, abrogata;
- registro storico delle decisioni;
- gestione di risorse simboliche, ad esempio monete, punti cultura o punti energia;
- classifica o confronto tra micro-nazioni.
Esempio indicativo
Un cittadino propone una legge: “Ogni cittadino deve salutare il server prima del login”. I cittadini votano. Se la legge viene approvata, entra nell'archivio legislativo della micro-nazione.
Obiettivo funzionale
Introdurre ruoli, processi decisionali, votazioni e stato persistente della micro-nazione.
Livello 3 — Diplomazia, eventi casuali o simulazione
Possibili estensioni di Livello 3:
- trattati tra micro-nazioni;
- sistema di alleanze;
- eventi casuali generati dal sistema, ad esempio crisi del caffè, invasione di bug o festival nazionale;
- aggiornamenti in tempo reale durante una votazione;
- dashboard dello stato della nazione;
- API pubblica per consultare leggi e statistiche;
- generazione automatica di un “giornale nazionale” periodico.
Obiettivo funzionale
Trasformare la piattaforma in una piccola simulazione sociale, introducendo interazioni tra comunità, eventi dinamici o API consultabili.
Confronto sintetico tra le tracce
| Traccia | Tipo | Focus tecnico principale | Livello 3 naturale |
|---|---|---|---|
| Prenotazione Risorse | Classica | Tempo, disponibilità, conflitti | Calendario, notifiche, QR code |
| Ticketing / Helpdesk | Classica | Ruoli, workflow, stati, commenti | Real-time, allegati, knowledge base |
| Sondaggi e Questionari | Classica | Form dinamici, risposte, statistiche | Dashboard live, QR code, domande condizionali |
| Biblioteca / Prestiti | Classica | Catalogo, copie, scadenze, code | API metadati, notifiche, import CSV |
| Recensioni e Liste | Classica | Recensioni, liste, reputazione | API esterne, raccomandazioni, feed |
| Spese di Gruppo | Classica | Saldi, quote, rimborsi | Multi-valuta, report, scontrini |
| Museo delle Cose Perdute | Creativa | Matching, stati, messaggi | Mappe, immagini, suggerimenti automatici |
| Oracolo delle Decisioni | Creativa | Voti, preferenze, algoritmi | Borda, Condorcet, risultati live |
| Missioni Urbane | Creativa | Missioni, prove, classifiche | Mappe, geolocalizzazione, QR code |
| Archivio dei Sogni | Creativa | Tag, privacy, pattern, statistiche | Analisi testuale, grafi, export PDF |
| Micro-Nazione | Creativa | Ruoli, leggi, votazioni, simulazione | Diplomazia, eventi, API pubblica |
Possibile selezione finale consigliata
Se si desidera pubblicare solo sei tracce, una selezione equilibrata potrebbe essere:
- Piattaforma di Prenotazione Risorse
- Sistema di Ticketing / Helpdesk
- Piattaforma per Sondaggi e Questionari
- Museo delle Cose Perdute
- Oracolo delle Decisioni Collettive
- Agenzia di Missioni Urbane
Questa selezione copre domini differenti e competenze complementari:
- gestione temporale e conflitti;
- workflow e autorizzazioni;
- raccolta dati e statistiche;
- matching e messaggistica;
- algoritmi di voto;
- mappe, prove, classifiche e meccaniche ludiche.
Note per gli studenti
Gli esempi riportati sono indicativi e non vincolanti. È possibile adattare il dominio specifico della traccia, purché vengano mantenuti gli obiettivi funzionali e tecnici del livello scelto.
Per il Livello 3, è sufficiente implementare una estensione significativa, completa e ben integrata. Non è necessario implementare tutte le estensioni elencate.
In sede di presentazione, gli studenti dovranno essere in grado di mostrare il funzionamento dell'applicazione, illustrare il modello dati e spiegare le principali scelte implementative.