Backend della prova pratica
| .github/workflows | ||
| dist | ||
| dockerfile | ||
| initdb | ||
| scripts | ||
| src | ||
| .gitignore | ||
| docker-compose.yml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Backend – Gestione Rimborsi Spese Aziendali (Prova S5)
API REST per la gestione delle richieste di rimborso spese aziendali.
URL produzione
| Risorsa | URL |
|---|---|
| API | https://provapraticabackend.andreavillari.it |
| Health check | https://provapraticabackend.andreavillari.it/api/health |
| Swagger UI | https://provapraticabackend.andreavillari.it/api/docs |
| Frontend collegato | https://provapraticafrontend.andreavillari.it |
Credenziali di test
Password comune per tutti gli utenti: Password123!
| Ruolo | |
|---|---|
| Responsabile amministrativo | admin@azienda.it |
| Dipendente | mario.rossi@azienda.it |
| Dipendente | marco.bianchi@azienda.it |
| Dipendente | anna.verdi@azienda.it |
È possibile anche registrare nuovi utenti da /register sul frontend, scegliendo il ruolo.
Avvio locale
Configurare il file .env (AUTH_SECRET, credenziali DB, URL frontend/backend, ecc.).
npm install
npm run dev
Con Docker (app + MySQL + phpMyAdmin):
docker compose up -d --build
MySQL è esposto su 127.0.0.1:3307, l'app su 127.0.0.1:3003.
Gli script in initdb/ vengono eseguiti solo al primo avvio del volume MySQL (database vuoto).
Dati iniziali
Il seed (initdb/02_seed.sql) crea:
- 4 utenti di test (1 responsabile, 3 dipendenti)
- 5 categorie di spesa
- 10 richieste di rimborso in tutti gli stati (
IN_ATTESA,APPROVATA,RIFIUTATA,LIQUIDATA)
Se il database di produzione è stato creato prima dell'aggiornamento del seed:
- ricreare il volume Docker (
docker compose down -vpoiup), oppure - eseguire
scripts/apply-missing-test-users.sqlvia phpMyAdmin o CLI MySQL
Stack
- Node.js 20, Express, TypeScript
- MySQL 8
- Auth.js (sessione JWT via cookie)
- Swagger UI (
/api/docs)
Deploy
Push su main → Forgejo Actions → SSH sul VPS → docker compose up -d --build in /root/provapraticabackend.