Izgradnja skalabilnog blog backenda zahtijeva dobro strukturiranu arhitekturu, sustav autentifikacije i pravilno dokumentirane API-je. NestJS MongoDB Blog API je predložak spreman za produkciju osmišljen kako bi pomogao programerima da brzo izgrade moderne blog platforme koristeći NestJS, MongoDB JWT authenticationi Swagger dokumentaciju .
Ovaj projekt pruža kompletan RESTful API uključujući module za korisnike, objave, kategorije, oznake, komentare, autentifikaciju i kontrolu pristupa temeljenu na ulogama .
Repozitorij: https://github.com/bfotool/nestjs-mongodb-blog-base
Što je NestJS MongoDB Blog API?
NestJS MongoDB Blog API je predložak otvorenog koda izgrađen s NestJS 11 i MongoDB-om koji pruža potpuno funkcionalan REST API za blog.
Namijenjen je da služi kao temelj za izgradnju:
Platforme za blogove
CMS sustavi bez glave
API-ji za objavljivanje sadržaja
Web-stranice s dokumentacijom
Blogovi portfelja programera
Projekt prati modularnu arhitekturu koju preporučuje NestJS, osiguravajući skalabilnost i održivost.
Repozitorij: https://github.com/bfotool/nestjs-mongodb-blog-base
Ključne značajke
Autentifikacija i autorizacija
API uključuje siguran sustav autentifikacije koji koristi JWT tokene.
Glavne značajke autentifikacije uključuju:
JWT tokeni za pristup i osvježavanje
Kontrola pristupa temeljena na ulogama(RBAC)
Hashiranje lozinke s bcryptom
Zaštićene API rute pomoću Guarda
Mehanizam osvježavanja tokena
Podržane su tri zadane korisničke uloge:
Administrator
Autor
Čitač
To olakšava upravljanje dozvolama na različitim krajnjim točkama API-ja.
Potpuni moduli bloga
Projekt uključuje nekoliko potpuno implementiranih modula koji pokrivaju sve osnovne funkcionalnosti bloga.
Modul za autorizaciju
Upravlja autentifikacijom i korisničkim sesijama.
Krajnje točke uključuju:
POST /auth/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Modul korisnika
Upravlja korisničkim računima i profilima.
Krajnje točke:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Operacije pisanja zahtijevaju administratorske dozvole .
Modul objava
Modul za objave upravlja sadržajem bloga.
Značajke uključuju:
Paginacija
Filtriranje po kategoriji, oznaci ili autoru
Sortiranje
Pretraživanje cijelog teksta
Istaknute objave
Krajnje točke:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Modul kategorija
Organizira objave na blogu u kategorije.
Krajnje točke:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Modul oznaka
Omogućuje fleksibilno označavanje za objave na blogu.
Krajnje točke:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Modul komentara
Podržava niti komentara i ugniježđene odgovore.
Krajnje točke:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /comments/:id
Mogućnosti API-ja
Paginacija
Sve krajnje točke popisa podržavaju paginaciju.
Primjer:
GET /posts?page=1&limit=6
Filtriranje
Objave se mogu filtrirati po kategoriji, oznaci ili autoru.
Primjer:
GET /posts?category=web-development
Pretraživanje cijelog teksta
Funkcionalnost pretraživanja implementirana je na objavama.
Primjer:
GET /posts?search=nestjs+mongodb
Sortiranje
API odgovori mogu se sortirati po različitim poljima.
Primjer:
GET /posts?sortBy=createdAt&sortOrder=desc
Automatsko generiranje slugova
Prilikom kreiranja objava, sustav automatski generira slug prilagođen URL-u iz naslova pomoću slugifyja .
Primjer:
Building REST APIs with NestJS
→ building-rest-apis-with-nestjs
Izračun vremena čitanja
API automatski izračunava procijenjeno vrijeme čitanja na temelju duljine sadržaja objava.
Konzistentan format API odgovora
Svi odgovori slijede standardnu strukturu:
{
"success": true,
"data": {},
"timestamp": "2026-01-01T10:00:00Z"
}
To poboljšava integraciju i otklanjanje pogrešaka u frontendu.
Tehnološki stog
Backend je izgrađen korištenjem modernog Node.js steka.
| Sloj | Tehnologija |
|---|---|
| Okvir | NestJS 11 |
| Jezik | TypeScript 5.7 |
| Baza podataka | MongoDB 8 |
| ODM | Mungos 8 |
| Autentifikacija | Passport.js + JWT |
| Validacija | validator klase |
| Dokumentacija API-ja | Swagger OpenAPI |
| Sigurnost lozinke | bcrypt |
| Generator puževa | sluziti |
| Testiranje | Šala |
Struktura projekta
Projekt prati modularnu arhitekturu.
src/
├── auth/
├── users/
├── posts/
├── categories/
├── tags/
├── comments/
├── common/
└── seed/
Važne komponente uključuju:
Validacija DTO-a
Sheme mungosa
Globalni filtri iznimki
Presretači odgovora
JWT čuvari
Dekorateri uloga
Ova struktura održava kodnu bazu organiziranom i skalabilnom.
Kako instalirati i pokrenuti projekt
Preduvjeti
Prije instalacije provjerite imate li:
Node.js 18.17+
MongoDB 6+
npm, pređa ili pnpm
Kloniraj repozitorij
git clone https://github.com/bfotool/nestjs-mongodb-blog-base
cd nestjs-mongodb-blog-base
Instaliranje ovisnosti
npm install
Konfiguriranje varijabli okruženja
Kopirajte primjer datoteke okruženja:
cp .env.example .env
Ažurirajte sljedeće vrijednosti:
MONGODB_URI=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
Popunite bazu podataka
Popunite bazu podataka s uzorkom podataka:
npm run seed
Za resetiranje i ponovno usejanje:
npm run seed:refresh
Pokrenite razvojni poslužitelj
npm run start:dev
Osnovni URL API-ja:
http://localhost:3000/api/v1
Swagger dokumentacija:
http://localhost:3000/api/docs
Zadani početni podaci
Početni skript generira uzorke podataka za testiranje.
| Entitet | Računati |
|---|---|
| Korisnici | 5 |
| Kategorije | 5 |
| Oznake | 28 |
| Objave | 10 |
| Komentari | 6 |
Zadane vjerodajnice za prijavu
Lozinka za sve seed korisnike:
admin123
Računi:
| Uloga | E-pošta |
|---|---|
| Administrator | [email protected] |
| Autor | [email protected] |
| Autor | [email protected] |
| Autor | [email protected] |
| Čitač | č[email protected] |
Dokumentacija Swagger API-ja
Interaktivna API dokumentacija dostupna je na:
http://localhost:3000/api/docs
Swagger nudi:
Interaktivno testiranje krajnjih točaka
JWT authenticationpodrška
Dokumentacija sheme zahtjeva i odgovora
Zašto koristiti ovo spremište
NestJS MongoDB Blog API je moćna polazna točka za razvojne programere koji grade modernu pozadinsku podršku za blog.
Prednosti uključuju:
Čista NestJS modularna arhitektura
Ugrađena autentifikacija i RBAC
Dokumentacija za Swagger API spremna za korištenje
Integracija MongoDB-a pomoću Mongoosea
Sustav zasijavanja baze podataka
Struktura projekta spremna za produkciju
Repozitorij: https://github.com/bfotool/nestjs-mongodb-blog-base



