Progetto "MakerManager" di Giuseppe Vaglica per il corso di Programmazione Avanzata (prof. Vecchio, Vallati, A.A. 2025/2026), discusso in data 17/07/2026 e valutato 29/30.
Il progetto MakerManager è un'applicazione distribuita realizzata in Java che permette ad hobbisti e professionisti (maker) di gestire in modo efficiente il proprio inventario hardware e la pianificazione dei progetti. Il sistema si compone di un'interfaccia grafica realizzata in JavaFX e di un servizio backend autonomo (Spring Boot) che gestisce la logica di business e la persistenza dei dati su MySQL.
L'obiettivo principale è mettere in correlazione i componenti posseduti dall'utente (es. sensori, microcontrollori, filamenti 3D) con i requisiti dei progetti presenti in catalogo, così da suggerire all'utente quali progetti può realizzare subito e quali richiedono ancora pochi acquisti.
[!warning] ATTENZIONE
Lo sviluppo di questo progetto è stato diviso in due repository per esigenze legate alla consegna del progetto:
- Repo - MakerManager-Client per lo sviluppo dell'interfaccia di MakerManager
- Repo - MakerManager-Server per la logica di back-end del server
Nonostante le due repository siano separate tutta la documentazione è contenuta qua dentro e fa riferimento al software MakerManager nel suo complesso. Pertanto, è possibile fare affidamento al solo contenuto di questa repository.
Anche le versioni presenti nelle due repo sono coerenti
Puoi consultare il changelog per i dettagli delle varie versioni di questo progetto nel file CHANGELOG.md.
Note
La roadmap elenca le funzioni già realizzate e da realizzare del progetto. Non dà dettagli implementativi ma serve solo per tenere traccia del quadro generale del progetto.
- Client
- Creazione e setup del progetto MakerManager-Client
- Architettura base
- Interfaccia minimale per testare gli endpoint del server
- Tutti gli endpoint creati lato server possono essere testati
- Server
- Creazione e setup del progetto MakerManager-Server
- Configurazione della connessione MySQL in
application.properties
- Configurazione della connessione MySQL in
- Architettura base
-
/inizializza -
/api/catalogo...- Visualizza elementi in catalogo
- Aggiungi un elemento al catalogo
- Elimina un elemento dal catalogo a partire dal suo id
-
/api/inventario...- Visualizza tutti gli inventari
- Visualizza il contenuto di un inventario
- Visualizza gli inventari di un utente
- Crea un nuovo inventario
- Elimina un inventario a partire dal suo id
- Aggiungi un articolo a un inventario
- Elimina un articolo dall'inventario a partire dal suo id
-
/api/progetti...- Visualizza tutti i progetti
- Visualizza un progetto a partire dal suo id
- Visualizza i progetti di una tipologia
- Crea un nuovo progetto
- Elimina un progetto a partire dal suo id
- Aggiungi una riga alla BOM di un progetto
- Elimina una riga dalla BOM di un progetto a partire dal suo id
-
- Creazione e setup del progetto MakerManager-Server
Raggiungimento di
v0.0.0(architettura base di MakerManager)
- Client
- Implementazione di una GUI funzionale
- Registrazione/login dell'utente
- Dashboard utente
- L'utente può visualizzare e gestire i suoi progetti
- L'utente può visualizzare e gestire i suoi inventari
- L'utente può creare un nuovo articolo in inventario selezionando un elemento catalogo già esistente o in alternativa può crearne uno nuovo
- Dashboard globale
- L'utente può visualizzare i progetti nel catalogo globale
- L'utente può aprire un progetto per visualizzarne le caratteristiche
- Implementazione di una GUI funzionale
- Server
- Utente
- Registrazione con nickname email e password
- Sistema con token di autorizzazione (JWT)
- Autenticazione e permessi sugli endpoint
- Registrazione con nickname email e password
- Sistema multi ruolo (utente e admin)
- Endpoint avanzati per la modifica di entità già esistenti
- Catalogo
- È possibile modificare un elemento in catalogo (*)
- Progetti
- È possibile modificare un progetto (**)
- È possibile modificare la quantità di un elemento della BOM
- Inventario
- È possibile modificare un inventario (**)
- È possibile modificare il contenuto di un inventario
- Catalogo
- Logica di business
- Progetti consigliati sulla base delle proprie risorse
- Utente
- (*) ci penserò in futuro per il momento è una funzione che potrebbe riguardare sogli gli admin e per il momento non mi interessa
- (**) priorità minore, non so se voglio implementarlo al momento. Comporterebbe un'uleriore schermata nella GUI già abbastanza pesante. Rimane comunque possibile eliminare un oggetto e ricrearlo se si vogliono modificare campi come nome e descrizione.
Raggiungimento di
v1.0.0(prima versione demo di MakerManager)
- Funzioni future
- Tracciamento reale del progresso di un progetto
- Interazione con altri utenti
- Interfaccia di prototipazione
- Diario personale
- Funzionalità basate sulla logica economica
- Ricerca di progetti tramite budget personale
- Possibilità di rendere i progetti privati o pubblici
Raggiungimento di
v2.0.0(prima versione completa di MakerManager)
- Java 21 o superiore.
- MySQL 8.0 o superiore, in ascolto su
127.0.0.1:3306con credenzialiroot/root. - Maven (per la gestione delle dipendenze).
- JavaFX Runtime (incluso nelle dipendenze Maven).
NOTA BENE: il database viene creato automaticamente all'avvio.
Warning
Le due repository sono versionate in modo coerente: scarica sempre la release del Server corrispondente a quella del Client (in questo momento v1.0.0).
L'indirizzo del Server è centralizzato in un'unica costante, AppConfig.BASE_URL: se il Server gira su un'altra macchina o su un'altra porta è sufficiente modificare quella riga.
- Avvia il Server (repository MakerManager-Server):
Scarica il codice sorgente della repository e da NetBeans importa il progetto e avvialo.
Il server resta in ascolto su http://localhost:8080. Al primo avvio viene creato automaticamente il database e l'utente ADMIN di default, con le credenziali definite in src/main/resources/application.properties:
sadmin.default.nickname=giuse27
admin.default.email=giuse27@makermanager.com
admin.default.password=LOUVRE2014- Avvia il Client (questa repository):
Scarica il codice sorgente della repository e da NetBeans importa il progetto e avvialo.
- Primo avvio e inizializzazione:
All'avvio del Client compare la schermata di autenticazione: registra un nuovo utente oppure accedi con le credenziali dell'ADMIN di default.
Su un database vuoto non c'è nulla da vedere: accedi come ADMIN, apri il pannello Database e premi Inizializza. Il Server cancella l'eventuale contenuto pregresso (tranne l'ADMIN di default) e ricarica catalogo, utenti, inventari e progetti dal file src/main/resources/data/inizializzazione.json (server).
È possibile proseguire sia dall'account admin sia rientarre con un utente di test tra quelli caricati dal JSON:
"utenti": [
{
"nickname": "pippo",
"email": "pippo@test.com",
"password": "LOUVRE2014"
},
{
"nickname": "maria",
"email": "maria@test.com",
"password": "LOUVRE2014"
},
{
"nickname": "peppe",
"email": "peppe@test.com",
"password": "LOUVRE2014"
},
{
"nickname": "andrea",
"email": "andrea@test.com",
"password": "LOUVRE2014"
}
]Aprendo la Dashboard MakerManager mostrerà i progetti consigliati in base a ciò che quell'utente possiede in inventario (l'admin a inizializzazione non possiede nulla).
| Documento | Contenuto |
|---|---|
docs/endpoint.md |
Manuale completo di tutti gli endpoint esposti dal Server, con permessi ed esempi curl. |
documentazione PDF |
Documento di progetto: caso d'uso, struttura, scelte progettuali, test, sviluppi futuri. |
docs/diagrams/diagrammi.md |
Diagrammi Mermaid: dominio del Server, architettura del Client, casi d'uso. |
CHANGELOG.md |
Storico delle versioni di Client e Server. |
MakerManager è un software per hobbisti e professionisti che nasce dall'esigenza di avere un sistema semplice per tenere sotto controllo o creare nuovi progetti. Le funzioni di base sono:
-
Gestione dell'inventario: è possibile creare uno o più inventari di componenti, materiali, strumenti da lavoro e risorse digitali, tenendo traccia delle quantità e delle tipologie.
-
Catalogo condiviso: il catalogo elementi definisce i "modelli teorici" (es. Arduino Nano), mentre il catalogo progetti raccoglie i progetti pubblicati dagli utenti, ciascuno con la propria distinta base (B.O.M. -> Bill of Materials).
-
Progetti consigliati: il sistema mette in relazione i due punti precedenti e suggerisce all'utente i progetti che può realizzare subito con ciò che possiede, oppure quelli per cui gli mancano pochi elementi (soglia configurabile).
I singoli casi d'uso sono meglio descritti nella documentazione pdf del progetto o nel file in documentazione PDF.
Gli esempi di utilizzo del software sono presenti nella documentazione pdf del progetto o nel file in documentazione PDF.
Questo progetto è stato ideato e sviluppato interamente da:
Se hai domande sul progetto, suggerimenti o segnalazioni, puoi trovarmi qui:
Puoi consultare la licenza di questo progetto nel file LICENSE.
Dai un'occhiata al documento AI.md.
Se questo strumento ti è stato utile, ti ha fatto risparmiare tempo o semplicemente ti piace, considera di lasciarmi una ⭐️ su GitHub.
È un piccolo gesto gratuito che mi aiuta tantissimo a mantenere il progetto attivo e visibile!
