Piattaforma backend basata su Spring Boot per la gestione e valorizzazione della filiera agricola locale. Il sistema gestisce l'interazione tra produttori, trasformatori, distributori, acquirenti e animatori territoriali.
L'applicazione permette la gestione di:
- Catalogo Prodotti e Pacchetti: caricamento, validazione e vendita di prodotti locali
- Eventi Territoriali: creazione e gestione di eventi promozionali con sistema di prenotazione
- Workflow di Approvazione: ruolo di Curatore per validare contenuti prima della pubblicazione
- Ordini e Carrello: gestione completa del processo di acquisto
Il progetto segue un'architettura a livelli:
- Controller
- Service
- Repository
- Model
Design pattern utilizzati:
- Builder Pattern (GoF): utilizzato per la costruzione delle entità
Evento, separando la logica di creazione dalla rappresentazione - Observer Pattern (GoF): utilizzato per il sistema di notifiche; il
CuratoreServicenotifica ilSocialServicealla validazione dei contenuti
- Java 17 o superiore
- Maven 3.6+
- Database H2 (default) oppure MySQL
git clone https://github.com/Capsoide/filiera-ids.git
cd filiera-idsmvn clean installmvn spring-boot:runApplicazione disponibile su:
http://localhost:8080
Important
Regole generali delle API
Note
- Autenticazione: Basic Auth dove richiesto
- Content-Type:
application/jsonper POST e PUT
Tip
- Date: formato ISO 8601
- Tutti gli ID sono numerici
- Uso di query parameters per operazioni dinamiche
http://localhost:8080/api
Recupera il catalogo completo dei prodotti
Auth: NO
Recupera un prodotto specifico
Esempio: /prodotti/2
Auth: NO
Recupera gli eventi pubblici
Auth: NO
Recupera i punti geografici delle aziende
Auth: NO
Registrazione nuovo acquirente
{
"email": "string",
"password": "string",
"nome": "string",
"cognome": "string",
"indirizzo": {
"via": "string",
"numCivico": "string",
"comune": "string",
"cap": "string",
"regione": "string"
}
}Catalogo prodotti (autenticato)
Auth: Basic
Visualizza carrello
Auth: Basic
Aggiunge un prodotto al carrello
{
"prodottoId": number,
"quantita": number
}Aggiunge un pacchetto al carrello
{
"prodottoId": number,
"quantita": number
}Riduce la quantità di un prodotto
{
"prodottoId": number,
"quantita": number
}Crea un ordine
Storico ordini
Prenotazione evento
Esempio: /prenotazioni/eventi/6?numeroPosti=20
Registrazione venditore
{
"email": "string",
"password": "string",
"nome": "string",
"cognome": "string",
"piva": "string",
"descrizione": "string",
"ruoli": ["PRODUTTORE"],
"indirizzo": {
"via": "string",
"numCivico": "string",
"cap": "string",
"comune": "string",
"regione": "string",
"latitudine": number,
"longitudine": number
}
}Crea un nuovo prodotto
{
"nome": "string",
"descrizione": "string",
"metodoDiColtivazione": "string",
"prezzo": number,
"quantita": number,
"certificazioni": ["string"],
"dataProduzione": "ISO_DATE"
}Elimina prodotto
Note
La quantità deve essere 0
Modifica prodotto
Crea un pacchetto
{
"nome": "string",
"descrizione": "string",
"prezzo": number,
"items": [
{
"prodottoId": number,
"quantita": number
}
]
}Lista inviti
Prodotti del venditore
Ordini ricevuti
Risponde a un invito
{
"azione": "ACCETTA | RIFIUTA"
}Aggiunta parziale
Rimozione parziale
Rimozione completa
Svuota carrello
Registrazione animatore
{
"email": "string",
"password": "string",
"nome": "string",
"cognome": "string",
"ruoloRichiesto": "ANIMATORE"
}Crea evento
Elimina evento
Modifica evento
Invita venditore
Eventi creati
Lista invitati
Prenotazioni evento
Registrazione curatore
{
"email": "string",
"password": "string",
"nome": "string",
"cognome": "string",
"ruoloRichiesto": "CURATORE"
}Approva contenuto o evento
Rifiuta contenuto o evento
{
"azione": "RIFIUTA",
"motivazione": "string"
}Contenuti in attesa
Richieste ruolo in attesa
Approva richiesta
Rifiuta richiesta