Server: Node, Express, MongoDB, Mongoose, JWT
- Authentication & Authorization
- Post CRUD operations
- Comment functionality
- Get posts created count
- Get all users who views someone's profile
- Admin can unblock a blocked user
- Update password
- Profile photo uploaded
You are welcome to contribute in this project #openSource.
- 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 blocked counts
- A user can close his/her account
Clone the project
git clone https://link-to-project
Go to the project directory
cd my-project
Install dependencies
npm install
Start the server
node server.js
To run this project, you will need to add the following environment variables to your .env file
MONGODB_URL
Example:
Not Exact Ones But in this format you have to fill these fields.
MONGO_URL = mongodb+srv://vinaytheprogrammer:password@blogs.ozqz2fr.mongodb.net/?retryWrites=true&w=majority&appName=blogs
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
.
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 |