Blog API Application Project
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://link-to-project
Go to the project directory
Install dependencies
Start the server
To run this project, you will need to add the following environment variables to your .env file
MONGODB_URL
baseURL = https://blog-api-v3-inovotek.onrender.com/
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
Register a new API client
POST /api/v1/users/register
The request body needs to be in JSON format.
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
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:
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
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" ,
}
Parameter
Type
Description
Required
authentication
string
Your token
no
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
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
Comment API Reference
Create Comment
POST /api/v1/comments/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the post
yes
Delete Comment
DELETE /api/v1/comments/:id
Parameter
Type
Description
Required
authentication
string
Your token
yes
id
string
ID of the comment
yes
Update Comment
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 us at support@inovoteksupport.com