Skip to content

About

Adventurers is a travel exploration web application enhanced using TypeScript and System Design principles. The project applies OOP concepts, SOLID principles, and design patterns like MVC and Singleton to improve scalability, maintainability, and architecture, transforming the existing frontend into a structured, production-ready system.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🌍 Adventurers – Travel & Booking Platform

React Node.js Express MongoDB Vercel Render

πŸš€ Live Demo

πŸ“¦ GitHub Repository
πŸ‘‰ https://github.com/hrishu802/Adventurers


✨ Overview

Adventurers is a modern full-stack travel booking and destination discovery platform built using the MERN Stack. The application enables users to explore curated travel packages, view destination details, create user profiles, and book adventures through a responsive and user-friendly interface.

The project demonstrates full-stack development concepts including:

  • RESTful API architecture
  • Authentication systems
  • Cloud deployment
  • MongoDB integration
  • Frontend-backend communication
  • Component-based UI design

πŸ› οΈ Tech Stack

Frontend

  • React.js (Create React App)
  • React Router DOM
  • CSS / Tailwind CSS
  • Axios / Fetch API

Backend

  • Node.js
  • Express.js
  • TypeScript
  • REST APIs

Database

  • MongoDB Atlas
  • Mongoose ODM

Deployment

  • Vercel (Frontend Hosting)
  • Render (Backend Hosting)
  • MongoDB Atlas (Cloud Database)

πŸš€ Features

βœ… Core Features

  • 🏝️ Browse travel destinations
  • πŸ“¦ Explore detailed travel packages
  • πŸ‘€ User authentication system
  • πŸ” Login & Signup functionality
  • 🧾 Booking interface
  • πŸ“Š Profile dashboard
  • 🌐 Cloud-hosted full-stack architecture

βœ… Advanced Features

  • πŸ”„ REST API integration
  • ⚑ Responsive UI
  • ☁️ MongoDB Atlas integration
  • πŸ”’ Environment variable security
  • πŸš€ CI/CD deployment workflow
  • 🧠 Component-based architecture

πŸ“Έ Screenshots

🏠 Homepage

Add homepage screenshot here

πŸ“¦ Packages Page

Add packages screenshot here

πŸ‘€ Profile Dashboard

Add profile screenshot here


βš™οΈ Installation & Local Setup

1️⃣ Clone Repository

git clone https://github.com/hrishu802/Adventurers.git
cd Adventurers

πŸ”§ Backend Setup

cd server
npm install

Create .env file inside server:

MONGO_URI=your_mongodb_connection_string
PORT=5000
ALLOWED_ORIGINS=http://localhost:3000

Run backend:

npm start

🎨 Frontend Setup

cd client
npm install

Create .env file inside client:

REACT_APP_API_URL=http://localhost:5000

Run frontend:

npm start

πŸ”— Environment Variables

Backend (.env)

Variable Description
MONGO_URI MongoDB Atlas connection string
PORT Backend server port
ALLOWED_ORIGINS Allowed frontend domains

Frontend (.env)

Variable Description
REACT_APP_API_URL Backend API URL

🌐 Deployment Architecture

Hosting Platforms

Component Platform
Frontend Vercel
Backend Render
Database MongoDB Atlas

🧠 System Architecture

User
 ↓
React Frontend (Vercel)
 ↓ REST API Calls
Node.js + Express Backend (Render)
 ↓
MongoDB Atlas Database

πŸ“‚ Project Structure

Adventurers/
β”‚
β”œβ”€β”€ client/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ public/
β”‚
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ middleware/
β”‚
└── README.md

πŸ”Œ API Endpoints

Method Endpoint Description
POST /api/users/register Register new user
POST /api/users/login User login
GET /api/users/profile/:id Fetch user profile
PUT /api/users/:id Update user profile

🧩 Design Patterns Used

MVC Architecture

  • Model β†’ MongoDB/Mongoose
  • View β†’ React Frontend
  • Controller β†’ Express Controllers

Singleton Pattern

Used in frontend services to maintain a single service instance across the application.

Service Layer Pattern

Encapsulates API communication logic from UI components.

Component-Based Architecture

Reusable React components such as Navbar, Packages, and Profile.

REST Architecture

Uses HTTP methods:

  • GET
  • POST
  • PUT
  • DELETE

Middleware Pattern

Used in Express for:

  • CORS handling
  • JSON parsing
  • Request processing

🧠 OOP Concepts Used

  • Encapsulation
  • Abstraction
  • Inheritance
  • Polymorphism
  • Interfaces & Contracts

πŸ§ͺ Testing & Debugging

  • Manual API testing
  • Frontend integration testing
  • Deployment debugging
  • CORS troubleshooting
  • Environment variable validation

⚠️ Challenges Faced

Challenge Solution
CORS errors Configured backend whitelist
MongoDB connection Environment variables
Deployment issues Render + Vercel setup
State synchronization React hooks & routing

πŸš€ Future Improvements

  • πŸ’³ Payment gateway integration
  • ⭐ Reviews & ratings
  • πŸ” Advanced filtering system
  • πŸ“± Improved mobile responsiveness
  • 🧠 AI-based recommendations
  • πŸ› οΈ Admin dashboard
  • πŸ“§ Email notifications

πŸ‘¨β€πŸ’» Authors

Name GitHub
Hrishabh Prajapati https://github.com/hrishu802
Divyansh Bhartia https://github.com/DivyanshBhartia
Lakshay Saharan https://github.com/LakshaySaharan
Rahul Thalor https://github.com/RahulThalor
Vidit Sachan https://github.com/viditsachan

⭐ Support

If you like this project:

  • ⭐ Star this repository
  • 🍴 Fork the project
  • πŸš€ Share with others

πŸ“š Learning Outcomes

This project helped in understanding:

  • MERN Stack architecture
  • REST API development
  • Cloud deployment workflows
  • MongoDB schema design
  • Authentication systems
  • Software design patterns
  • Frontend-backend integration

πŸ“Œ License

This project is open-source and available under the MIT License.

About

Adventurers is a travel exploration web application enhanced using TypeScript and System Design principles. The project applies OOP concepts, SOLID principles, and design patterns like MVC and Singleton to improve scalability, maintainability, and architecture, transforming the existing frontend into a structured, production-ready system.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages