Per creare un backend scalabile per un blog, è necessario disporre di un'architettura ben strutturata, di un sistema di autenticazione e di API adeguatamente documentate. L' API NestJS MongoDB Blog è un modello di backend pronto per la produzione, progettato per aiutare gli sviluppatori a creare rapidamente piattaforme di blog moderne utilizzando la documentazione di NestJS, MongoDB JWT authenticatione Swagger .
Questo progetto fornisce un'API RESTful completa che include moduli per utenti, post, categorie, tag, commenti, autenticazione e controllo degli accessi basato sui ruoli .
Archivio: https://github.com/bfotool/nestjs-mongodb-blog-base
Che cos'è NestJS MongoDB Blog API
La NestJS MongoDB Blog API è un modello backend open source creato con NestJS 11 e MongoDB che fornisce una REST API per blog completamente funzionale.
È progettato per fungere da base per la costruzione di:
Piattaforme di blog
Sistemi CMS headless
API per la pubblicazione di contenuti
Siti web di documentazione
Blog del portfolio degli sviluppatori
Il progetto segue l' architettura modulare raccomandata da NestJS, garantendo scalabilità e manutenibilità.
Archivio: https://github.com/bfotool/nestjs-mongodb-blog-base
Caratteristiche principali
Autenticazione e autorizzazione
L'API include un sistema di autenticazione sicuro che utilizza token JWT.
Le principali funzionalità di autenticazione includono:
Token di accesso e aggiornamento JWT
Controllo degli accessi basato sui ruoli(RBAC)
Hashing delle password con bcrypt
Percorsi API protetti tramite Guards
Meccanismo di aggiornamento del token
Sono supportati tre ruoli utente predefiniti:
Amministratore
Autore
Lettore
Ciò semplifica la gestione delle autorizzazioni tra diversi endpoint API.
Moduli blog completi
Il progetto include diversi moduli completamente implementati che coprono tutte le funzionalità principali del blog.
Modulo di autenticazione
Gestisce l'autenticazione e le sessioni utente.
Gli endpoint includono:
POST /auth/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Modulo Utenti
Gestisce gli account e i profili utente.
Punti finali:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Le operazioni di scrittura richiedono autorizzazioni di amministratore .
Modulo Post
Il modulo post gestisce i contenuti del blog.
Le caratteristiche includono:
Paginazione
Filtraggio per categoria, tag o autore
Ordinamento
Ricerca full-text
Post in evidenza
Punti finali:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Modulo Categorie
Organizza i post del blog in categorie.
Punti finali:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Modulo Tag
Consente un tagging flessibile per i post del blog.
Punti finali:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Modulo commenti
Supporta thread di commenti e risposte nidificate.
Punti finali:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /comments/:id
Capacità API
Paginazione
Tutti gli endpoint dell'elenco supportano la paginazione.
Esempio:
GET /posts?page=1&limit=6
Filtraggio
I post possono essere filtrati per categoria, tag o autore.
Esempio:
GET /posts?category=web-development
Ricerca full-text
La funzionalità di ricerca è implementata nei post.
Esempio:
GET /posts?search=nestjs+mongodb
Ordinamento
Le risposte API possono essere ordinate in base a campi diversi.
Esempio:
GET /posts?sortBy=createdAt&sortOrder=desc
Generazione automatica di slug
Quando si creano post, il sistema genera automaticamente uno slug URL-friendly dal titolo utilizzando slugify .
Esempio:
Building REST APIs with NestJS
→ building-rest-apis-with-nestjs
Calcolo del tempo di lettura
L'API calcola automaticamente il tempo di lettura stimato in base alla lunghezza dei contenuti dei post.
Formato di risposta API coerente
Tutte le risposte seguono una struttura standard:
{
"success": true,
"data": {},
"timestamp": "2026-01-01T10:00:00Z"
}
Ciò migliora l'integrazione frontend e il debug.
Stack tecnologico
Il backend è realizzato utilizzando uno stack Node.js moderno.
| Strato | Tecnologia |
|---|---|
| Struttura | NestJS 11 |
| Lingua | TypeScript 5.7 |
| Banca dati | MongoDB 8 |
| ODM | Mangusta 8 |
| Autenticazione | Passport.js + JWT |
| Validazione | validatore di classe |
| Documentazione API | Swagger OpenAPI |
| Sicurezza della password | bcrypt |
| Generatore di lumache | lumaca |
| Test | Scherzo |
Struttura del progetto
Il progetto segue un'architettura modulare.
src/
├── auth/
├── users/
├── posts/
├── categories/
├── tags/
├── comments/
├── common/
└── seed/
I componenti importanti includono:
Validazione DTO
Schemi di mangusta
Filtri di eccezione globali
Intercettori di risposta
Guardie JWT
Decoratori di ruolo
Questa struttura mantiene la base di codice organizzata e scalabile.
Come installare ed eseguire il progetto
Prerequisiti
Prima di procedere all'installazione, assicurati di avere:
Node.js 18.17+
MongoDB 6+
npm, yarn o pnpm
Clona il repository
git clone https://github.com/bfotool/nestjs-mongodb-blog-base
cd nestjs-mongodb-blog-base
Installare le dipendenze
npm install
Configurare le variabili di ambiente
Copia il file di ambiente di esempio:
cp .env.example .env
Aggiornare i seguenti valori:
MONGODB_URI=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
Semina il database
Popolare il database con dati campione:
npm run seed
Per reimpostare e riseminare:
npm run seed:refresh
Avviare il server di sviluppo
npm run start:dev
URL di base dell'API:
http://localhost:3000/api/v1
Documentazione Swagger:
http://localhost:3000/api/docs
Dati predefiniti
Lo script seed genera dati campione per i test.
| Entità | Contare |
|---|---|
| Utenti | 5 |
| Categorie | 5 |
| Etichette | 28 |
| Messaggi | 10 |
| Commenti | 6 |
Credenziali di accesso predefinite
Password per tutti gli utenti selezionati:
admin123
Conti:
| Ruolo | |
|---|---|
| Amministratore | [email protected] |
| Autore | [email protected] |
| Autore | [email protected] |
| Autore | [email protected] |
| Lettore | [email protected] |
Documentazione API Swagger
La documentazione API interattiva è disponibile all'indirizzo:
http://localhost:3000/api/docs
Swagger fornisce:
Test degli endpoint interattivi
JWT authenticationsupporto
Documentazione dello schema di richiesta e risposta
Perché utilizzare questo repository
L' API NestJS MongoDB Blog è un potente punto di partenza per gli sviluppatori che vogliono creare un moderno backend per blog.
I vantaggi includono:
Architettura modulare pulita di NestJS
Autenticazione integrata e RBAC
Documentazione API Swagger pronta all'uso
Integrazione MongoDB tramite Mongoose
Sistema di seeding del database
Struttura del progetto pronta per la produzione
Archivio: https://github.com/bfotool/nestjs-mongodb-blog-base



