Welcome to the CampFlow server documentation. This guide provides detailed information about the setup and functionality of the CampFlow backend server, hosted at CampFlow Server.
The CampFlow server is a express.js-based backend application that provides APIs for managing users, campaigns, registrations, payments, and reviews. It integrates with MongoDB for data storage, Stripe for payment processing, and Nodemailer for email handling. JWT is used for secure authentication.
The server is hosted at: CampFlow Server
To run this server locally, you need to set the following environment variables in a .env
file. Do not include actual values in the file for security reasons.
DB_USER=your_database_username # Username for the database connection
DB_PASS=your_database_password # Password for the database connection
ACCESS_TOKEN=your_jwt_access_token_secret # Secret for signing JWT tokens
STRIPE_SECRET_KEY=your_stripe_secret_key # Secret key for Stripe payment integration
USER_EMAIL=your_email_for_nodemailer # Email address for sending notifications
USER_PASS=your_email_password_for_nodemailer # Password for the email account
Ensure these values are set correctly for the server to function properly.
The server uses the following dependencies:
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.4.7",
"express": "^4.21.2",
"jsonwebtoken": "^9.0.2",
"mongodb": "^6.12.0",
"morgan": "^1.10.0",
"nodemailer": "^6.9.16",
"stripe": "^17.5.0"
}
-
Clone the repository:
git clone https://github.com/Sabuj-Chowdhury/CampFlow_Server
-
Install dependencies:
npm install
-
Create
.env
file: Add the required environment variables as mentioned above. -
Start the server:
npm start
The server will run on
http://localhost:8000
by default.
- Users: Stores user data.
- Campaigns: Stores campaign details.
- Registrations: Tracks user registrations.
- Payments: Logs payment details.
- Reviews: Manages user reviews.
- Backend Framework: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT
- Payment Gateway: Stripe
- Email Service: Nodemailer
- Hosting: Vercel
https://campflow-ten.vercel.app
Validates JWT tokens for secure API access. Adds decoded token to req.decoded
.
Checks if the user is an admin. Requires verifyToken
middleware.
- POST
/jwt
- Description: Generates a JWT token for a user.
- Request Body:
{ "email": "[email protected]", "role": "user" }
- Response:
{ "token": "<JWT_TOKEN>" }
- POST
/users
- Description: Saves a new user in the database.
- Request Body:
{ "name": "John Doe", "email": "[email protected]", "password": "securepassword" }
- Response:
{ "insertedId": "<USER_ID>" }
- GET
/user/:email
- Description: Fetches user details by email.
- Authorization: Requires
verifyToken
.
- GET
/user/admin/:email
- Description: Checks if a user is an admin.
- Authorization: Requires
verifyToken
.
- PATCH
/user/update/:id
- Description: Updates user details.
- Authorization: Requires
verifyToken
. - Request Body:
{ "name": "Updated Name", "image": "image_url", "address": "Updated Address", "phone": "1234567890" }
- POST
/add-camp
- Description: Adds a new camp.
- Authorization: Requires
verifyToken
andverifyAdmin
.
- GET
/camps
- Description: Retrieves all camps.
- GET
/camps/popular
- Description: Retrieves the top 6 popular camps.
- GET
/camp/:id
- Description: Retrieves details of a specific camp by ID.
- GET
/available-camps
- Description: Searches and sorts camps based on query parameters.
- Query Parameters:
sort
:count
,camp-fees
, oralphabetical
search
: Search term
- PUT
/camp/:id
- Description: Updates camp details.
- Authorization: Requires
verifyToken
andverifyAdmin
.
- DELETE
/camp/:id
- Description: Deletes a camp by ID.
- Authorization: Requires
verifyToken
.
- POST
/camp/registration
- Description: Saves a registration and updates camp count.
- Authorization: Requires
verifyToken
.
- GET
/registrations
- Description: Retrieves all registrations.
- Authorization: Requires
verifyToken
andverifyAdmin
.
- GET
/registration/:email
- Description: Retrieves all registrations for a specific user.
- Authorization: Requires
verifyToken
.
- GET
/registration/pay/:id
- Description: Retrieves a specific registration by ID.
- Authorization: Requires
verifyToken
.
- PATCH
/registration/:id
- Description: Updates the status of a registration.
- Authorization: Requires
verifyToken
andverifyAdmin
.
- DELETE
/registration/:id
- Description: Deletes a registration by ID.
- Authorization: Requires
verifyToken
.
- POST
/payment-intent
- Description: Creates a payment intent for Stripe.
- Authorization: Requires
verifyToken
.
- POST
/payments
- Description: Saves payment details and updates registration payment status.
- Authorization: Requires
verifyToken
.
- GET
/payments/:email
- Description: Retrieves payment history for a user.
- Authorization: Requires
verifyToken
.
- POST
/review
- Description: Adds a review.
- Authorization: Requires
verifyToken
.
- GET
/reviews
- Description: Retrieves all reviews.
- GET
/user-stats/:email
- Description: Retrieves statistics for a user (e.g., total camps, total spent).
- POST
/email
- Description: Sends an email using Nodemailer.
- Request Body:
{ "name": "John Doe", "email": "[email protected]", "message": "Hello, I have a question." }
- GET
/
- Description: Returns a welcome message for the server.