Backend per la gestione di un sistema di upload file, gestione utenti, autenticazione e gestione di tracce musicali.
Sviluppato con Node.js, Express e MongoDB, include funzionalità di logging avanzato su file e Slack.
Questo progetto implementa un backend RESTful API per:
- Registrazione e login utenti con autenticazione JWT e crittografia password (bcryptjs).
- Upload, gestione e cancellazione di file multimediali (Multer + MongoDB).
- Gestione CRUD di "tracks" (brani musicali) con autorizzazioni di ruolo.
- Logging dettagliato delle richieste e risposte HTTP tramite
morgan-body
, con invio log su file e Slack. - Validazione input con
express-validator
. - Gestione soft-delete con mongoose-delete.
- Supporto CORS e configurazioni tramite variabili d'ambiente.
- Node.js v22.x
- Express
- MongoDB con Mongoose
- bcryptjs - crittografia password
- jsonwebtoken - autenticazione JWT
- multer - gestione upload file
- morgan-body - logging richieste HTTP
- express-validator - validazione dati in input
- @slack/webhook - invio log a Slack
- mongoose-delete - soft delete per mongoose
- cors - gestione CORS
- dotenv - gestione variabili d’ambiente
- Clona il repository
git clone https://github.com/tuo-username/backend.git
cd backend
npm install
DEV_ENV=development
DB_URI=la_tua_uri_mongodb
PUBLIC_URL=http://localhost:3000/storage
JWT_SECRET=la_tua_chiave_segreta
SLACK_WEBHOOK=il_tuo_webhook_slack
npm run dev
Il server si avvierà sulla porta configurata (di default 5000 se impostata).
Documentazione degli endpoint disponibili con express-list-endpoints e output nel terminale all'avvio.
Le rotte sono strutturate in moduli per autenticazione, gestione tracce, upload file e test.
### /api/auth/signUp — Registrazione utente
### /api/auth/signIn — Login utente
### /api/tracks — CRUD tracce musicali (protetto da autenticazione e ruoli)
### /api/storage — Upload e gestione file
### /api/test/test — Endpoint di test server
Le richieste HTTP di tipo POST, PUT, DELETE e PATCH sono loggate con dettagli corpo richiesta e risposta.
I log vengono salvati su file logs/logger.log e inviati a Slack tramite webhook configurato.
Il logger evita di loggare risposte con codice < 400 per ridurre il rumore.
Struttura del progetto
├── src/
│ ├── app.js # Entry point dell'app
│ ├── controllers/ # Logica di business
│ ├── middlewares/ # Middleware personalizzati (auth, roles, validator)
│ ├── models/ # Modelli mongoose
│ ├── routers/ # Definizione rotte
│ ├── utils/ # Utility (logger, validator, JWT, password)
│ ├── config/ # Configurazioni DB e porte
│ └── storage/ # Cartella file caricati
├── logs/ # File di log
├── .env # Variabili d'ambiente (non committare)
├── package.json # Gestione dipendenze e script
└── README.md # Documentazione
### npm run dev Avvia il server in sviluppo con nodemon
### npm start Avvia il server in modalità produzione
### npm run lint Controlla stile codice con ESLint Standard
### npm run lint:fix Corregge automaticamente problemi di stile
Assicurati che MongoDB sia attivo e raggiungibile con la URI configurata in .env.
Mantieni segrete le chiavi JWT_SECRET e SLACK_WEBHOOK.
Questo backend è pronto per essere integrato con frontend React o altre applicazioni client.
Autore: Gianluca Chiaravalloti
Licenza: ISC