A powerful backend API for a complete blogging platform where users can:
- π Create, read, update, delete blog posts
- π Authenticate & secure their actions via JWT
- β€οΈ Like, π bookmark, π·οΈ tag posts
- π¬ Comment with threading
- π View real-time platform analytics
- π§ Manage content via full admin control
Built using Node.js, Express, MongoDB, and tested thoroughly with Postman.
- Node.js
- Express.js
- MongoDB (Mongoose ODM)
- JWT for authentication
- Postman (API testing)
-
π User Authentication (JWT)
Register, Login, Auth middleware -
π Blog CRUD
Create, Read, Update, Delete blog posts
Protected routes β only post owners can edit/delete -
π§ Post Ownership & Auth Checks
Users can only modify their own posts -
π¬ Comments System
Add/view/delete comments per post
Post authors can also delete comments -
β€οΈ Like System
Toggle likes on posts; count likes dynamically -
π Bookmark System
Bookmark/unbookmark posts; view in profile -
π·οΈ Tag-based Filtering + Search
Filter posts by tag or keyword -
π¦ Pagination Support
PaginatedGET /posts?page=n
for large datasets -
π Analytics Dashboard
Platform-wide stats on users, posts, likes, bookmarks
Top liked/bookmarked posts, most active users -
π§ Admin Panel
Admin can:- View all users
- Delete any post/comment
- Freeze/unfreeze users (prevent posting)
- Promote users to admin
- View full admin summary dashboard
simple-blog-backend/ βββ index.js βββ routes/ β βββ auth.js β βββ posts.js β βββ comments.js β βββ users.js β βββ analytics.js β βββ admin.js βββ models/ β βββ User.js β βββ Post.js β βββ Comment.js βββ middleware/ β βββ authMiddleware.js β βββ adminMiddleware.js βββ controllers/ β βββ authController.js β βββ commentController.js βββ utils/ β βββ generateToken.js βββ package.json βββ .env βββ node_modules/ βββ screenshots/ # Postman test screenshots
- Node.js installed
- MongoDB running locally OR MongoDB Atlas
git clone https://github.com/KhannaSahab16/Simple-Blog-Backend.git cd Simple-Blog-Backend npm install node index.js
Server will run on: http://localhost:3000 (default)
All endpoints can be tested via Postman (screenshots inside screenshots/ folder).
π Public Routes
Method | Endpoint | Description |
---|---|---|
POST | /api/auth/register |
Register new user |
POST | /api/auth/login |
Login and get token |
π Protected Blog Routes
Method | Endpoint | Description |
---|---|---|
POST | /api/posts |
Create a new post |
GET | /api/posts |
Get paginated posts |
GET | /api/posts/:id |
Get single post + comments |
PUT | /api/posts/:id |
Update your post |
DELETE | /api/posts/:id |
Delete your post |
π¬ Comments Routes
Method | Endpoint | Description |
---|---|---|
POST | /api/comments/:postId |
Add comment to post |
DELETE | /api/comments/:id |
Delete comment (self/post author) |
β€οΈ Likes & π Bookmarks
Method | Endpoint | Description |
---|---|---|
PUT | /api/posts/like/:id |
Like/unlike a post |
PUT | /api/users/bookmark/:postId |
Bookmark/unbookmark |
GET | /api/users/profile |
View user bookmarks, likes, stats |
π Analytics Routes
Method | Endpoint | Description |
---|---|---|
GET | /api/analytics/dashboard |
Platform-wide metrics |
π§ Admin Routes
Method | Endpoint | Description |
---|---|---|
GET | /api/admin/users |
View all users |
DELETE | /api/admin/posts/:id |
Delete any post |
DELETE | /api/admin/comments/:id |
Delete any comment |
PUT | /api/admin/promote/:id |
Promote user to admin |
PUT | /api/admin/freeze/:id |
Freeze/unfreeze user |
GET | /api/admin/summary |
View user/post analytics |
π§ Author
Mehul Khanna
π§ Backend Dev Intern Β· Clean Architecture Fan Β· Builder of Bold Ideas