Server: Node, Express, MongoDB, Mongoose, JWT
- Authentication & Authorization
- Post CRUD operations
- Comment functionality
- System blocking user if inactive for 30 days
- Admin can block a user
- A user can block different users
- A user who block another user cannot see his/her posts
- Last date a post was created
- Check if a user is active or not
- Check last date a user was active
- Changing user award base on number of posts created by the user
- A user can follow and unfollow another user
- Get following and followers count
- Get total profile viewers count
- Get posts created count
- Get blocked counts
- Get all users who views someone's profile
- Admin can unblock a blocked user
- Update password
- Profile photo uploaded
- A user can close his/her account
Clone the project
git clone https://github.com/majidalykhan/blog-web-app
Go to the project directory
cd Backend
Install dependencies
npm install
Start the server
npm run server
To run this project, you will need to add the following environment variables to your .env file
MONGODB_URL
Some endpoints may require authentication for example. To create a create/delete/update post, you need to register your API client and obtain an access token.
The endpoints that require authentication expect a bearer token sent in the Authorization header
.
Example:
Authorization: Bearer YOUR TOKEN
POST /api/v1/users/register
The request body needs to be in JSON format.
POST /api/v1/users/login
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | no |
email |
string |
Your email | yes |
password |
string |
Your password | yes |
Example request body:
{
"email":"your email"
"password":"your password"
}
GET /api/v1/users/profile
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
GET /api/v1/users/users
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | no |
GET /api/v1/users/profile-viewers/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the user you want to view his profile | yes |
GET /api/v1/users/following/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the user you want to follow | yes |
GET /api/v1/users/unfollowing/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the user you want to follow | yes |
PUT /api/v1/users/update-password
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
password |
string |
Enter your password | yes |
Example request body:
{
"password":"value"
}
PUT /api/v1/users
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
email |
string |
Enter your email | no |
firstname |
string |
Enter your firstname | no |
lastname |
string |
Enter your lastname | no |
Example request body:
{
"email":"value",
"firstname":"value",
"lastname":"value",
}
PUT /api/v1/users/block/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
Id of the user you want to block | yes |
PUT /api/v1/users/unblock/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
Id of the user you want to unblock | yes |
PUT /api/v1/users/admin-block/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
Id of the user you want to block | yes |
PUT /api/v1/users/admin-unblock/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
Id of the user you want to unblock | yes |
DELETE /api/v1/users/delete-account
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
DELETE /api/v1/users/profile-photo-upload
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
profilePhoto |
string |
Image to upload | yes |
POST /api/v1/posts
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
title |
string |
Post title | yes |
description |
string |
Post description | yes |
category |
string |
ID of the category | yes |
photo |
string |
Image of the post | yes |
Example request body:
{
"title":"value",
"description":"value",
"category":"value",
"photo":"photo",
}
GET /api/v1/posts
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | no |
GET /api/v1/posts/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
GET /api/v1/postslikes/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
GET /api/v1/posts/dislikes/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
PUT /api/v1/posts/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
title |
string |
title of the post | yes |
description |
string |
description of the post | yes |
category |
string |
category of the post | yes |
photo |
string |
photo of the post | yes |
Example request body:
{
"title":"value",
"description":"value",
"category":"value",
"photo":"photo",
}
GET /api/v1/posts/dislikes/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
POST /api/v1/comments/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
DELETE /api/v1/comments/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the comment | yes |
PUT /api/v1/comments/:id
Parameter | Type | Description | Required |
---|---|---|---|
authentication |
string |
Your token | yes |
id |
string |
ID of the post | yes |
If you have any feedback, please reach out to me at [email protected]