Questo progetto consiste in un portale web interattivo per un'edicola reale situata a Fiumicino. Il sistema permette di gestire digitalmente il catalogo prodotti e automatizzare il processo di prenotazione e ritiro per i clienti.
Il progetto segue l'architettura MVC (Model-View-Controller):
- Backend: Java con Framework Spring (Spring Tool Suite).
- Persistenza: PostgreSQL con gestione tramite PgAdmin4.
- ORM: Spring Data JPA per il mapping relazionale degli oggetti.
- Frontend: HTML5 e CSS3 per un'interfaccia utente pulita e responsiva.
- Catalogo Prodotti: Esplorazione completa dei prodotti disponibili nell'edicola.
- Carrello e Prenotazione: Possibilità di aggiungere prodotti al carrello, selezionare le quantità e prenotare il ritiro con pagamento in loco.
- Area Personale: Gestione delle credenziali e visualizzazione dello storico ordini (Ricevuti, In Lavorazione, Completati).
- Centro Notifiche: Un'area messaggi dedicata dove il cliente riceve una notifica in tempo reale per ogni cambio di stato del proprio ordine.
- Gestione Catalogo (CRUD): Caricamento di nuovi prodotti, modifica dei prezzi/dati e cancellazione di articoli esistenti.
- Gestione Ordini: Monitoraggio di tutte le prenotazioni dei clienti.
- Aggiornamento Stati: Possibilità di cambiare lo stato degli ordini (es. da "In lavorazione" a "Pronto per il ritiro") per informare il cliente.
Di seguito è riportata la struttura del database che gestisce le relazioni tra utenti, prodotti e notifiche.
erDiagram
UTENTE ||--o{ ORDINE : effettua
UTENTE ||--o{ NOTIFICA : riceve
ORDINE ||--|{ DETTAGLIO_ORDINE : "composto da"
PRODOTTO ||--o{ DETTAGLIO_ORDINE : "inserito in"
ORDINE ||--o{ NOTIFICA : genera
UTENTE {
int id PK
string email
string password
string ruolo "ADMIN / CLIENTE"
}
PRODOTTO {
int id PK
string nome
float prezzo
int quantita_disponibile
}
ORDINE {
int id PK
timestamp data_ordine
string stato "Ricevuto / In Lavorazione / Pronto"
}
NOTIFICA {
int id PK
string messaggio
boolean letto
timestamp data_invio
}