Skip to content

Advanced-computer-lab-2024/Rahhala

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rahhala

Rahhala 🌍✈️

A comprehensive MERN stack virtual trip planner web application that enables users to book trips, purchase souvenirs, and explore historic sites.

🎯 Motivation

Part of the Advanced Computer Lab university course curriculum, this project challenges students to develop a full-stack application independently across multiple sprints, fostering self-learning and problem-solving skills.

🚀 Build Status

Current Status: Beta

  • Minor navigation issues in user dashboards
  • Design inconsistencies being addressed
  • Payment not secure and does not support bank cards
  • no hotel or flight reservation functionality yet
  • UI and UX to be improved

💻 Code Architecture

Backend Structure

  • 📁 Models: MongoDB schema definitions
  • 🎮 Controllers: Business logic and CRUD operations
  • 🛣️ Routes: API endpoint definitions with JWT authentication
  • 🔒 Middleware: User verification and request processing

Frontend Structure

  • 🎨 Component-based architecture
  • 📱 Responsive dashboard designs for all user types
  • 🔐 Role-based access control

📸 Screenshots

1. Landing Page

Landing Page

2. Signup Page

Signup Page

3. Login Page

Login Page

4. Reset Password

Reset Password

5. Guest Page

Guest Page

6. Terms & Conditions

Terms & Conditions

7. Tourist Profile

Tourist Profile

8. Tourist Dashboard

Tourist Dashboard

9. Tourists Purchase a Product

Tourists Purchase a Product

10. Tourist Reviewing a Product

Tourist Reviewing a Product

11. Seller Profile

Seller Profile

12. Governor Dashboard

Governor Dashboard

13. Sales Report

Sales Report

14. Admin Dashboard

Admin Dashboard

15. Admin Management

Admin Management

16. Account Deletion Requests

Account Deletion Requests

17. New Account Requests

New Account Requests

18. Preference Tags

Preference Tags

19. Products Page

Products Page

20. Complaints Page

Complaints Page

21. Add New Admin

Add New Admin

22. Notifications Page

Notifications Page

🛠️ Technologies and Frameworks Used

Frontend

  • React.js v18.3.1 - A JavaScript library for building user interfaces
  • Axios v1.7.7 - Promise based HTTP client
  • Tailwind CSS v3.4.14 - A utility-first CSS framework
  • React Router DOM v6.28.0 - Declarative routing for React
  • JWT Decode v4.0.0 - JWT token decoder

Backend

  • Node.js v18+ - JavaScript runtime
  • Express.js v4.21.1 - Web application framework
  • MongoDB v6.9.0 - NoSQL database
  • Mongoose v8.7.0 - MongoDB object modeling
  • JWT v9.0.2 - JSON Web Token implementation
  • Nodemailer v6.9.16 - Email sending functionality
  • Cors v2.8.5 - Cross-Origin Resource Sharing middleware

Development Tools

  • Nodemon v3.1.7 - Auto-reloading development server
  • ESLint v9.11.1 - JavaScript linting utility
  • Vite - Next generation frontend tooling

Features

The application has seven user types. They are:

  1. Tourists:
  • They can book itineraries and activities.
  • They can view museums.
  • They have wallets on the system that they can add money to.
  • They can buy products.
  • They can redeem points.
  • They can file complaints about the system.
  1. Guests:
  • They have limited access to system.
  • They can view itineraries and activities, but cannot book them.
  1. Admins:
  • They can add new admins and tourism governors.
  • They can view sales reports of products, itineraries and activities.
  • They can accept and delete accounts from the system.
  • They can view and respond to complaints.
  • They can add new products, preference tags and activity categories.
  • They can flag inappropriate itineraries.
  1. Sellers:
  • They can add, edit, and archive products.
  • They can view sales reports of their products.
  1. Tour Guides:
  • They can add new itineraries.
  • They can view sales reports of they itineraries.
  • They can file account deletion requests.
  1. Advertisers:
  • They can add, edit and delete activities.
  • They can file account deletion requests.
  1. Tourism Governors:
  • They can add and view museums.
  • They can add, view and delete museum tags.

All users can edit details of their profiles, and some can have OTPs sent to their emails to change their passwords.

Installations

Prerequisites

Ensure all the following technologies are installed on your device:

  • Node.js
  • Git
  • npm

Installation Steps

  1. Copy the repository URL link. Open VS Code and clone the repository using the URL you copied.
  2. Create a new file called .env and store the following values in it.
MONGO_URI=mongodb+srv://Yahya:rHgkAP86GQwz2DE@rahhala.tazze.mongodb.net/rahhala?retryWrites=true&w=majority&appName=Rahhala
Port=4000
JWT_SECRET=secret
MAILTRAP_USER=a6da4721eb679a
MAILTRAP_PASS=bf79d4c9ae2efe
  1. Open a terminal window. Navigate to the backend folder and install the dependencies needed.
cd backend
npm install
  1. Open another terminal window. Navigate to the my-app folder and install the dependencies needed.
cd my-app
npm install
  1. In the first terminal window, start the backend using this command:
npm run dev
  1. In the second terminal window, start the application using this command:
npm start

API Reference and Tests

This is a link to the API reference document for all the APIs used in this project. The documentation also contains tests for some of the API routes. https://documenter.getpostman.com/view/38530860/2sAYJ3DLjc

🤝 Contributing

We welcome contributions! If you'd like to contribute, please:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Credits

📚 Learning Resources

To help you understand the technologies used in this project, here are some recommended learning resources:

Node.js

React.js

MongoDB

JWT Authentication

Express.js

The project was created with the efforts of the developers:

  • Yahya Al-Azhary

  • Youssef Hazem

  • Mahmoud Ayman

  • Abdelrahman Gaballa

  • Youssef Hendawy

  • Mohamed Hefny

  • Omar Elsherif

  • Moazz Ahmed Abdellatif

  • Marawan Tawhed Fathy Abdelhady

  • Youssef Allam

License

LICENSE.txt

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 11