- Cliente
- Meccanica Vallese s.r.l.
- Macchinario
- Pressa idraulica PH‑40
- Operaio
- M. Ferrari
- Sostituzione guarnizioni4,5
- Taratura valvola di sfogo3,0
- Ripristino centralina5,0
Aperto
12,5 ore
Gestionale open source · Licenza MIT
Officino registra il lavoro svolto in officina, ne misura il costo e ne ricava il documento da consegnare al cliente.
Fastify e PostgreSQL Vue 3 Docker pronto Self-hosted
Aperto
12,5 ore
Come funziona
Il pezzo centrale è il rapportino: un contenitore delle lavorazioni che un operaio ha svolto su un solo macchinario per un solo cliente. Dentro ci finiscono le singole lavorazioni, con le ore e i materiali impiegati.
| chiuso_il | nota_lavorazione_id | Stato che ne risulta |
|---|---|---|
| — | — | Aperto |
| 2026-03-04 | — | Concluso |
| 2026-03-04 | 412 | In nota di lavorazione |
Una colonna scritta accanto a quei due campi rappresenterebbe due volte lo stesso fatto, e basterebbe un endpoint che aggiorna l'una e non l'altra per avere un rapportino gestito senza nota. Con la derivazione la contraddizione non è rappresentabile.
I rapportini chiusi confluiscono in una nota di lavorazione, il documento che va al cliente: raccoglie le lavorazioni di un periodo, ne calcola i totali e produce un PDF. Prima di stampare, un controllo di coerenza segnala le note che non tornano — righe con costo orario a zero, materiali senza prezzo — e chiede conferma esplicita per procedere.
Cosa c'è
Ore per macchinario e cliente, materiali con prezzo unitario, costo orario per riga, filtri per periodo, avviso in caso di rapportino duplicato, PDF del singolo rapportino.
Costruite dai rapportini chiusi, con data di riferimento propria e riassunto composto dal server. Si correggono i costi, si uniscono o si dividono per macchinario, e il PDF distingue manodopera e materiali.
Misura il lavoro svolto, non i preventivi. Metriche distinte per ruolo, ore per operaio e per cliente, pannello dei giorni con ore mancanti sotto le otto feriali. Il totale coincide sempre con l'elenco rapportini dello stesso periodo.
Numerazione progressiva automatica, pezzi a catalogo e fuori catalogo, manodopera e sconto, ciclo bozza → approvato → fatturato, PDF con il logo dell'officina.
Ricambi e materiali con categorie e ricerca, lettura di codici a barre EAN‑13 e QR, export Excel. Alimenta preventivi e materiali dei rapportini, e accetta voci fuori catalogo inserite a mano.
Due ruoli, user e admin. Cinque sezioni sono riservate agli admin; dashboard, rapportini, preventivi e catalogo restano accessibili a tutti, e ogni operaio vede e modifica i propri rapportini.
Provalo
Serve Node 20+, pnpm e PostgreSQL 15+. Docker è comodo ma non obbligatorio.
git clone https://github.com/savez/officino.git
cd officino
cp .env.example .env # rivedere le credenziali del database
cd backend && pnpm install && cd ..
cd frontend && pnpm install && cd ..
cd backend && pnpm migrate && pnpm seed && cd ..
make dev-backend # API su :3000 make dev-frontend # interfaccia su :5173
L'applicazione risponde su http://localhost:5173. I dati di esempio creano due utenze:
| Ruolo | Password | |
|---|---|---|
| admin | demo@officino.app | admin123 |
| operaio | operaio@officino.app | admin123 |
Sono credenziali di dimostrazione: vanno cambiate prima di
qualunque uso reale, insieme a JWT_SECRET nel file
.env.
Com'è fatto
Stato attuale, detto com'è
La CI esegue il frontend per intero e, del backend, lint e test unitari. I test di integrazione restano fuori perché sei suite falliscono, per quattro motivi distinti e tutti preesistenti. Sono elencati nella issue dei difetti noti, e sono il punto di partenza più utile per un primo contributo.
Le pull request sono benvenute: CONTRIBUTING.md spiega ambiente di sviluppo, convenzioni e cosa succede alla tua PR. Per una vulnerabilità di sicurezza non aprire una issue — la procedura sta in SECURITY.md.
Progetto indipendente
Officino è gratis, open source e senza tracciamento, scritto nel tempo libero. Se non ti va di aprire una pull request ma ti è servito, offrimi una birra.
Offrimi una birra ↗