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.
- Features
- Technology Stack
- Project Structure
- Getting Started
- Installation
- Environment Variables
- Running the Application
- User Roles
- π 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 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 Dashboard - View assigned bookings and schedules
- π Availability Management - Set and update availability status
- π Trip Management - Track and manage assigned trips
- β 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 Dashboard - View maintenance requests
- π Damage Requests - Manage vehicle damage reports
- β Accept/Complete Requests - Handle maintenance tasks
- π Schedule Management - Organize work schedule
- 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
- 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
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
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
- Operating System: Windows, macOS, or Linux
- RAM: Minimum 4GB (8GB recommended)
- Disk Space: At least 500MB free space
-
Clone the repository
git clone https://github.com/NscRentals/NSC-Rentals.git cd NSC-Rentals -
Install Backend Dependencies
cd Backend npm install -
Install Frontend Dependencies
cd ../Frontend npm install -
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
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=5242880Create 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.envfiles to version control. They are already included in.gitignore.
Option 1: Run Backend and Frontend Separately
-
Start the Backend Server
cd Backend npm run devServer will start on
http://localhost:4000 -
Start the Frontend (in a new terminal)
cd Frontend npm run devApplication will open on
http://localhost:5173
Option 2: Run from Root Directory
# Start frontend (from root)
npm run dev-
Build the Frontend
cd Frontend npm run build -
Preview Production Build
npm run preview
-
Start Backend in Production
cd Backend npm start
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 |
This project is licensed under the ISC License.
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