PFSProject
PFSProject è una web app che porta online l'organizzazione degli appelli d'esame. La segreteria apre le sessioni, il docente sceglie il giorno su un calendario che gli mostra in verde dove può mettere il suo esame e in rosso dove non può, e il sistema controlla da solo che non ci siano conflitti, weekend o date fuori tempo massimo.
È un progetto didattico, nato per proporre un'alternativa all'attuale metodo di inserimento e gestione degli esami all'Università degli Studi di Brescia.
L'idea
Ogni sessione d'esame comincia con un puzzle. Decine di docenti devono scegliere le date dei propri appelli, e quelle date devono incastrarsi: due esami dello stesso anno dello stesso corso nello stesso giorno significano studenti costretti a scegliere quale saltare. Poi ci sono le scadenze, i weekend, le aule, le correzioni dell'ultimo minuto.
Oggi buona parte di questo lavoro passa per proposte, verifiche incrociate e controlli fatti a mano tra docenti e segreteria. Funziona, ma è lento, e gli errori si scoprono tardi.
PFSProject parte da una domanda semplice: e se fosse il calendario stesso a sapere quali giorni sono liberi? Invece di proporre una data e aspettare che qualcuno la controlli, il docente vede subito dove può mettere il suo esame. Le regole non sono più un documento da ricordare: sono scritte nel sistema, e valgono per tutti.
Come funziona
1. La segreteria apre la sessione. Crea la sessione d'esame indicando due periodi distinti: quando sono le sessioni d'esame e quando i docenti possono pianificarle. Così si possono aprire le iscrizioni con largo anticipo e chiuderle qualche giorno prima, per congelare il calendario.

2. Il docente sceglie il giorno. Seleziona uno dei suoi insegnamenti e il calendario si colora: verde dove può inserire un appello, rosso dove la giornata è già occupata da un altro esame dello stesso corso e anno, oppure cade nel weekend.

Cliccando su un giorno rosso, il sistema spiega perché non è disponibile e mostra quali esami lo occupano, con docente e orario.

3. Un clic, e l'appello è pronto. Cliccando su un giorno verde si apre il modulo di creazione con materia, sessione e data già compilate. Restano solo l'orario, il tipo di esame e l'aula.

4. Tutto in ordine, per ogni sessione. Il docente ritrova i propri appelli raggruppati per sessione. Gli esami già svolti restano visibili ma non sono più modificabili: compare la dicitura Esame concluso.

Il calendario conosce le regole
Il cuore del progetto non sono le schermate, ma i vincoli. Sono tutti verificati dal server, quindi valgono anche se qualcuno provasse ad aggirare l'interfaccia.
- Niente sovrapposizioni. Per uno stesso corso di laurea e uno stesso anno esiste al massimo un esame al giorno: gli studenti non si trovano mai due appelli in conflitto.
- Niente duplicati. Una materia ha un solo appello per sessione.
- Niente weekend. Sabato e domenica non si pianifica.
- Rispetta le scadenze. Gli appelli si inseriscono solo durante la finestra di pianificazione, e la data deve cadere dentro il periodo della sessione.
- Ognuno il suo. Il docente crea appelli solo per le proprie materie e modifica solo i propri esami.
Quando qualcosa non va, il messaggio d'errore dice esattamente cosa correggere.
Due ruoli, una sola applicazione

Dopo il login, l'applicazione apre automaticamente l'area giusta.
Il docente vede le sue materie, i suoi appelli, le sessioni aperte e il calendario personalizzato.
La segreteria ha la vista d'insieme: il calendario di tutto l'ateneo, con le finestre di pianificazione e le sessioni d'esame evidenziate, e il controllo completo su sessioni, corsi di laurea, insegnamenti e account.

Dalla segreteria passano tutte le anagrafiche: gli esami di ogni docente, le sessioni, gli insegnamenti con il loro docente titolare, i corsi di laurea.



È sempre la segreteria a creare gli account dei docenti e dei colleghi. Ogni nuovo account nasce in un colpo solo, utente e profilo insieme: se qualcosa va storto a metà, non resta nulla di incompleto.

Ognuno, infine, ha la propria area personale per cambiare nome e password.

Anche dal telefono
L'interfaccia si adatta a qualunque schermo: il menu si richiude, le tabelle si compattano, il calendario resta consultabile. Un docente può controllare i propri appelli anche tra una lezione e l'altra.

In video
Com'è fatto
Un monorepo Nx: front-end e back-end nello stesso workspace, con i tipi condivisi tra i due. Il front-end in React 19 e Vite parla con un'API REST in NestJS 11 tramite HTTP e token JWT; il back-end applica le regole di dominio e le guardie sui ruoli, e salva i dati in PostgreSQL attraverso TypeORM, dove i vincoli di unicità vengono tradotti in messaggi chiari.

Prima del codice, la progettazione: il modello dei dati, il progetto delle pagine e lo schema di navigazione tra le schermate.



Il progetto in breve
| Cos'è | Una web app per pianificare gli appelli d'esame universitari, con un calendario che applica da solo le regole |
|---|---|
| Perché | Progetto didattico pensato per sostituire l'attuale metodo di inserimento e gestione degli esami all'Università di Brescia |
| Per chi | Segreterie didattiche e docenti |
| Piattaforma | Web, da computer e da telefono |
| Lingua | Italiano |
| Realizzato con | TypeScript, React, NestJS, PostgreSQL, TypeORM, Nx |
| Contesto | Corso di Progettazione di Applicazioni Web Full Stack |
| Autore | Gabriele Fiorucci: progettazione, sviluppo back-end e front-end |
Guarda il codice: github.com/GabrieleFiorucci03/PFSProject ↗
Sviluppi Futuri
- Accesso con le credenziali d'ateneo (SSO), senza account separati
- Gestione delle aule: capienza, disponibilità e prenotazione automatica
- Area studenti per consultare il calendario degli appelli del proprio corso
- Notifiche via email all'apertura e alla chiusura delle finestre di pianificazione
- Esportazione del calendario (PDF, iCal) e integrazione con i sistemi dell'ateneo