Skip to content

Backend of TourNest – Tourism Management System | Express.js, MongoDB | πŸ›‘οΈ Secured APIs with JWT |πŸ’³ Stripe-integrated payments, role-based access, tour guide approval & booking management etc. | Client-repo: https://github.com/SarfarazAkram17/TourNest-Client

Notifications You must be signed in to change notification settings

SarfarazAkram17/TourNest-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TourNest Server β€” Tourism Management System Backend

This is the backend server for TourNest, a full-stack tourism and travel management platform where users can explore and book tour packages, apply to become guides, share stories, and manage roles with secure authentication and payments etc.


πŸ”— Live Project


🧰 Tech Stack

Tech Purpose
Node.js JavaScript runtime
Express.js Routing & middleware server
MongoDB NoSQL cloud database (Atlas)
Stripe Secure online payments (BDT currency)
JWT Custom role-based token system
dotenv Secure environment variable handling
cors Enable cross-origin requests

πŸ” Authentication & Security

  • Firebase Authentication: Google and email/password
  • JWT: Tokens issued on login, register ,google login and validated for all protected routes
  • Role Verification:
    • verifyJwt: Validates token and attaches user
    • verifyAdmin: Protects admin-only routes
    • verifyTourist: Secures tourist-only actions
    • verifyTourGuide: Guards tour guide functionalities

πŸ“¦ API Endpoints

πŸ‘₯ Users

Method Endpoint Middleware Description
GET /users verifyJwt, verifyAdmin Get all users with search/pagination
GET /users/:email/role - Get role of a specific user
GET /users/tour-guide - Get all tour guides
GET /users/tour-guide/:id - Get single guide details by ID
GET /users/guide-info verifyJwt Get logged-in guide’s info
GET /random-tour-guides - Get 6 random guides
POST /users - Register or update last login
PATCH /users/guide-info verifyJwt, verifyTourGuide Update guide’s info fields

πŸ” JWT

Method Endpoint Middleware Description
POST /jwt - Issue JWT for logged-in user

🌍 Tour Packages

Method Endpoint Middleware Description
GET /packages - Get all packages (paginated)
GET /packages/:id - Get single package by ID
GET /random-packages - Get 3 random packages
POST /packages verifyJwt, verifyAdmin Create new package

πŸ§‘β€πŸ« Tour Guide Applications

Method Endpoint Middleware Description
GET /applications verifyJwt, verifyAdmin Get all applications (paginated)
POST /applications verifyJwt, verifyTourist Apply to become a tour guide
PATCH /applications verifyJwt, verifyAdmin Approve and promote user to tour guide
DELETE /applications/:id verifyJwt, verifyAdmin Delete an application

πŸ“… Bookings

Method Endpoint Middleware Description
GET /bookings verifyJwt Get bookings by tourist email
GET /bookings/:id verifyJwt Get single booking details
GET /bookings/tourGuide/assigned verifyJwt, verifyTourGuide Get guide’s assigned bookings
POST /bookings verifyJwt Create new booking (prevent duplicate unpaid)
PATCH /bookings/:id verifyJwt Update booking status (accepted/rejected)

πŸ’³ Payments

Method Endpoint Middleware Description
POST /create-payment-intent verifyJwt Create Stripe intent for card payment
POST /payments verifyJwt Save payment record & update booking

πŸ“– Stories

Method Endpoint Middleware Description
GET /stories - Get stories by email or all (paginated)
GET /stories/:id - Get story by ID
GET /random-stories - Get 4 random stories
POST /stories verifyJwt Add new story
PATCH /stories/:id verifyJwt Update title, description, and images
DELETE /stories/:id verifyJwt Delete story by ID

πŸ“Š Stats

Method Endpoint Middleware Description
GET /admin/stats verifyJwt, verifyAdmin Get Admin stats
GET /tourist/stats verifyJwt, verifyTourist Get Tourist stats
GET /tourGuide/stats verifyJwt, verifyTourGuide Get tour guide stats

πŸ› οΈ Getting Started

git clone https://github.com/SarfarazAkram17/TourNest-Server
cd TourNest-Server

About

Backend of TourNest – Tourism Management System | Express.js, MongoDB | πŸ›‘οΈ Secured APIs with JWT |πŸ’³ Stripe-integrated payments, role-based access, tour guide approval & booking management etc. | Client-repo: https://github.com/SarfarazAkram17/TourNest-Client

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published