Obiettivo del progetto
3D Print Tracker nasce per risolvere un problema reale: molti maker gestiscono produzione e vendite con fogli Excel separati, con poca visibilita' su costi e margini.
L'obiettivo e' trasformare un workflow manuale in una piattaforma unica, affidabile e data-driven per prendere decisioni migliori su prezzi, riordini e redditivita'.
Problema iniziale
Nel flusso quotidiano di stampa 3D emergono quattro criticita' principali:
- Costi materiale poco precisi: il costo per stampa viene spesso stimato.
- Margini non leggibili subito: difficile capire quali lavori sono davvero profittevoli.
- Inventario fragile: consumo bobine e scorte residue non tracciati in modo robusto.
- Operativita' lenta: inserimento dati dispersivo tra strumenti diversi.
Soluzione implementata
Ho progettato e sviluppato un gestionale verticale con autenticazione, persistenza cloud e regole di business dedicate alla stampa 3D.
Funzionalita' principali
- Autenticazione Google OAuth con NextAuth.
- Dashboard KPI con vendite, costo materiale, guadagno lordo, stampe, grammi consumati, stampe fallite e alert scorte.
- Gestione Bobine con CRUD completo, stato bobina, costo/grammo, grammi residui e duplicazione rapida.
- Registro Stampe con supporto legacy mono-bobina e modello evoluto multi-bobina + multi-piatto.
- Gestione Prodotti con catalogo, categorie e stato attivo/inattivo.
- Gestione Stampanti con potenza (W) per base calcolo energetico.
- Analytics operative: margine medio, AOV, failure rate, stima giorni scorta, costo medio per colore.
- Filtri, sorting e paginazione nelle viste principali.
Architettura e stack tecnico
Frontend
- Next.js (App Router)
- React
- Tailwind CSS + shadcn/ui
Backend applicativo
- Route handlers in Next.js
- Server Actions su operazioni selezionate
- Validazione input con Zod
Data layer
- Prisma ORM
- PostgreSQL su Supabase
Auth e sicurezza
- NextAuth v5 (Google provider)
- Isolamento multi-tenant per
userId - Security headers configurati a livello applicativo
Performance
- Service layer dedicato (
dashboard,spool,print) - Cache tag-based con
unstable_cache+revalidateTag - Query aggregate e query parallele dove utile
Data model (alto livello)
Entita' principali:
UserFilamentSpoolProductPrintPrintFilamentUsagePrintPlatePrinterUserSettings
Scelta chiave di progetto: mantenere compatibilita' con i dati legacy (mono-bobina) mentre il dominio evolve verso multi-bobina e multi-piatto.
Processo di sviluppo
Sviluppo per iterazioni:
- MVP gestionale (spool, prints, KPI base)
- Hardening tecnico (validazioni, indici, service layer)
- Evoluzione dominio (multi-materiale, multi-piatto, energia)
- Miglioramento UX (filtri, sorting, mobile nav, boundary loading/error)
- Analytics avanzate (indicatori business e costo per colore)
Stato attuale (Marzo 2026)
- Fase: beta funzionale
- Pronto per uso reale su piccolo volume dati
- Base architetturale solida per evoluzione futura
Verifiche recenti:
- Test unitari calcoli core: 19/19 passati
- Lint: nessun errore bloccante
- Build: pipeline configurata
Limiti noti e prossimi step
- aumentare la copertura test oltre il core calcoli
- estendere i test E2E sui flussi principali
- migliorare la coerenza visiva tra pagine nuove e parti legacy
- aggiungere reporting periodico esportabile
- introdurre metriche avanzate su profittabilita' per prodotto/cliente
Impatto pratico
Per l'utente finale, il beneficio e' soprattutto operativo:
- meno tempo perso in gestione manuale
- maggiore precisione su costi e margini
- decisioni di pricing e riordino su dati reali
Cosa dimostra nel portfolio
Questo progetto mostra la capacita' di portare un prodotto digitale dalla definizione del problema fino a una web app usabile:
- product thinking
- progettazione e sviluppo full-stack
- modellazione dati e evoluzione compatibile
- attenzione a performance, sicurezza e manutenzione nel tempo
Link
- Repository GitHub: github.com/DavideZaninelloo/3D-print-tracker
- App live: 3d-print-tracker-sage.vercel.app
Asset tecnici
Diagramma architettura:
Schema dati: