Skip to content

About

A team-based full-stack wedding car rental system developed for the university ITP module (2nd Year, 2nd Semester), featuring vehicle booking, JWT authentication, role-based dashboards, real-time notifications, and built with React, Node.js, Express, and MongoDB.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Β 
Β 

Latest commit

Β 

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NSC Wedding Car Rentals πŸš—

Make your wedding day much more easier

A full-stack web application for wedding car rental services, providing a seamless platform for customers to book vehicles, manage reservations, and track vehicle maintenance.

GitHub Repository


πŸ“‹ Table of Contents


✨ Features

Customer Features

  • πŸ” User Authentication - Secure login and registration with JWT
  • πŸš™ Vehicle Browsing - Browse available wedding cars with detailed information
  • πŸ“… Reservation System - Book vehicles for specific dates
  • πŸ“ Customer Reviews - Submit and view customer reviews
  • πŸ‘€ Profile Management - Update profile details, change password, and manage account
  • πŸ”” Notifications - Receive updates about reservations and bookings
  • πŸ“ž Contact Us - Direct communication channel with the service

Admin Features

  • πŸ“Š Admin Dashboard - Comprehensive overview of all operations
  • βœ… Vehicle Approvals - Review and approve vehicle listings
  • πŸ” User Verification - Verify user accounts and manage permissions
  • πŸ“ˆ Reservation Management - Monitor and manage all reservations
  • πŸ› οΈ Spare Parts Inventory - Track and manage spare parts stock

Driver Features

  • πŸš— Driver Dashboard - View assigned bookings and schedules
  • πŸ“‹ Availability Management - Set and update availability status
  • πŸ“ Trip Management - Track and manage assigned trips

Vehicle Owner Features

  • βž• Add Vehicles - List new vehicles for rental
  • ✏️ Edit Vehicle Details - Update vehicle information and pricing
  • πŸ“Š My Vehicles - Manage personal vehicle listings
  • πŸ’° Earnings Tracking - Monitor rental income

Technician Features

  • πŸ”§ Technician Dashboard - View maintenance requests
  • πŸ“ Damage Requests - Manage vehicle damage reports
  • βœ… Accept/Complete Requests - Handle maintenance tasks
  • πŸ“… Schedule Management - Organize work schedule

πŸ› οΈ Technology Stack

Frontend

  • Framework: React 18.2.0
  • Build Tool: Vite 5.1.0
  • Styling: TailwindCSS 3.4.1
  • Routing: React Router DOM 6.22.1
  • HTTP Client: Axios 1.6.7
  • UI Components:
    • React Icons
    • React Slick (carousel)
    • React Calendar
    • React Hot Toast (notifications)
  • PDF Generation: jsPDF
  • Printing: React to Print

Backend

  • Runtime: Node.js 20.x
  • Framework: Express 4.18.2
  • Database: MongoDB with Mongoose 8.9.6
  • Authentication: JWT (JSON Web Tokens)
  • Password Hashing: Bcrypt 5.1.1
  • File Upload: Multer 1.4.5
  • Environment Variables: dotenv 16.4.7
  • Security: CORS enabled

πŸ“ Project Structure

NSC-Rentals/
β”œβ”€β”€ Frontend/                 # React frontend application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/      # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/           # Application pages
β”‚   β”‚   β”‚   β”œβ”€β”€ admin/       # Admin-specific pages
β”‚   β”‚   β”‚   β”œβ”€β”€ driver/      # Driver dashboard
β”‚   β”‚   β”‚   β”œβ”€β”€ home/        # Home and contact pages
β”‚   β”‚   β”‚   β”œβ”€β”€ login/       # Authentication pages
β”‚   β”‚   β”‚   β”œβ”€β”€ reservation/ # Booking pages
β”‚   β”‚   β”‚   β”œβ”€β”€ technician/  # Technician pages
β”‚   β”‚   β”‚   β”œβ”€β”€ user/        # User profile pages
β”‚   β”‚   β”‚   └── vehicles/    # Vehicle management pages
β”‚   β”‚   β”œβ”€β”€ context/         # React Context for state management
β”‚   β”‚   β”œβ”€β”€ assets/          # Static assets (images, icons)
β”‚   β”‚   └── styles/          # Global styles
β”‚   β”œβ”€β”€ public/              # Public assets
β”‚   └── package.json
β”‚
β”œβ”€β”€ Backend/                 # Node.js backend application
β”‚   β”œβ”€β”€ controllers/         # Route controllers
β”‚   β”œβ”€β”€ models/              # Mongoose schemas
β”‚   β”‚   β”œβ”€β”€ user.js
β”‚   β”‚   β”œβ”€β”€ Vehicle.js
β”‚   β”‚   β”œβ”€β”€ reservation.js
β”‚   β”‚   β”œβ”€β”€ DriverModel.js
β”‚   β”‚   β”œβ”€β”€ technician.js
β”‚   β”‚   β”œβ”€β”€ damageRequest.js
β”‚   β”‚   β”œβ”€β”€ sparePartsInventory.js
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ routes/              # API routes
β”‚   β”œβ”€β”€ middlewares/         # Custom middleware
β”‚   β”œβ”€β”€ uploads/             # File upload directory
β”‚   β”œβ”€β”€ server.js            # Server entry point
β”‚   └── package.json
β”‚
└── README.md                # This file

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v20.x or higher) - Download
  • npm (comes with Node.js) or yarn
  • MongoDB (v6.x or higher) - Download
  • Git - Download

System Requirements

  • Operating System: Windows, macOS, or Linux
  • RAM: Minimum 4GB (8GB recommended)
  • Disk Space: At least 500MB free space

πŸ“₯ Installation

  1. Clone the repository

    git clone https://github.com/NscRentals/NSC-Rentals.git
    cd NSC-Rentals
  2. Install Backend Dependencies

    cd Backend
    npm install
  3. Install Frontend Dependencies

    cd ../Frontend
    npm install
  4. Set up MongoDB

    • Ensure MongoDB is running on your system
    • Default connection: mongodb://127.0.0.1:27017/NSC-Rentals
    • Or use MongoDB Atlas for cloud database

βš™οΈ Environment Variables

Backend Configuration

Create a .env file in the Backend directory:

# Server Configuration
PORT=4000
NODE_ENV=development

# Database
MONGO_URL=mongodb://127.0.0.1:27017/NSC-Rentals
# Or use MongoDB Atlas:
# MONGO_URL=mongodb+srv://<username>:<password>@cluster.mongodb.net/NSC-Rentals

# JWT Secret
JWT_SECRET=your-super-secret-jwt-key-here

# File Upload Limits (optional)
MAX_FILE_SIZE=5242880

Frontend Configuration

Create a .env file in the Frontend directory:

# Backend API URL
VITE_BACKEND_URL=http://localhost:4000/api

# Other configurations
VITE_APP_NAME=NSC Wedding Car Rentals

⚠️ Security Note: Never commit .env files to version control. They are already included in .gitignore.


▢️ Running the Application

Development Mode

Option 1: Run Backend and Frontend Separately

  1. Start the Backend Server

    cd Backend
    npm run dev

    Server will start on http://localhost:4000

  2. Start the Frontend (in a new terminal)

    cd Frontend
    npm run dev

    Application will open on http://localhost:5173

Option 2: Run from Root Directory

# Start frontend (from root)
npm run dev

Production Mode

  1. Build the Frontend

    cd Frontend
    npm run build
  2. Preview Production Build

    npm run preview
  3. Start Backend in Production

    cd Backend
    npm start

πŸ‘₯ User Roles

The application supports multiple user roles with different permissions:

Role Capabilities
Customer Browse vehicles, make reservations, submit reviews, manage profile
Vehicle Owner Add/edit/delete vehicles, view bookings, track earnings
Driver View assigned trips, update availability, manage schedules
Technician View damage requests, accept/complete maintenance tasks
Admin Full system access, approve vehicles/users, manage all operations

πŸ“„ License

This project is licensed under the ISC License.


πŸ“ž Support

For issues, questions, or suggestions:

  • GitHub Issues: Create an issue
  • Email: Contact through the application's Contact Us page

Made with ❀️ for making wedding days special

NSC Wedding Car Rentals - Make your wedding day much more easier

About

A team-based full-stack wedding car rental system developed for the university ITP module (2nd Year, 2nd Semester), featuring vehicle booking, JWT authentication, role-based dashboards, real-time notifications, and built with React, Node.js, Express, and MongoDB.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages