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 accountEnsure 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
.envfile: Add the required environment variables as mentioned above. -
Start the server:
npm start
The server will run on
http://localhost:8000by 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": "user@example.com", "role": "user" } - Response:
{ "token": "<JWT_TOKEN>" }
- POST
/users - Description: Saves a new user in the database.
- Request Body:
{ "name": "John Doe", "email": "john@example.com", "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
verifyTokenandverifyAdmin.
- 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, oralphabeticalsearch: Search term
- PUT
/camp/:id - Description: Updates camp details.
- Authorization: Requires
verifyTokenandverifyAdmin.
- 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
verifyTokenandverifyAdmin.
- 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
verifyTokenandverifyAdmin.
- 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": "john@example.com", "message": "Hello, I have a question." }
- GET
/ - Description: Returns a welcome message for the server.