provapraticabackend/README.md

69 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

2026-06-09 15:44:48 +02:00
# 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 | Email |
|-------|-------|
| 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.).
```bash
npm install
npm run dev
```
Con Docker (app + MySQL + phpMyAdmin):
```bash
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 -v` poi `up`), oppure
- eseguire `scripts/apply-missing-test-users.sql` via 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`.