Skip to content

Latest commit

 

History

History
120 lines (97 loc) · 4.35 KB

README.md

File metadata and controls

120 lines (97 loc) · 4.35 KB

🚗 DriveTest Booking System

📌 Project Overview

The DriveTest Booking System is a full-stack web application designed to manage driving test appointments. The platform allows users to log in, book G and G2 tests, and manage appointments through an interactive dashboard. This project was developed as a final individual college project, showcasing a wide range of full-stack development skills.

🚀 Features

  • 🖥 Dashboard: Centralized view for users to manage appointments and bookings.
  • 📝 Appointment Booking: Allows users to select dates and time slots for driving tests.
  • 🔐 User Authentication: Role-based login for drivers, examiners, and admins.
  • 🧑‍💼 Admin Appointment Management: Admins can select dates and enable specific time slots for G and G2 exams. Users will only see the available slots enabled by the admin.
  • 📄 Dynamic Forms: Forms for G and G2 test bookings.
  • 🧩 Reusable Components: EJS partials for consistent layout (e.g., header, footer).
  • 🌍 Responsive Design: Optimized for various devices.
  • 🎭 Animations: Enhanced user experience with smooth transitions.

📂 Project Structure

📁 drivetest_booking_system
 ├── 📁 css/                  # Stylesheets
 │   ├── appointment.css     # Appointment page styles
 │   ├── dashboard.css       # Dashboard styles
 │   ├── g_exams.css         # Styles for G and G2 exam pages
 │   ├── login.css           # Login page styles
 │   ├── style.css           # Global styles
 ├── 📁 js/                   # JavaScript files (Controllers, Routes, Middleware)
 │   ├── appointment_controller.js
 │   ├── dashboard_controller.js
 │   ├── g2_exam_controller.js
 │   ├── g_exam_controller.js
 │   ├── login_controller.js
 │   ├── logout_controller.js
 │   ├── validsession_middleware.js
 │   ├── validusertypeadmin_middleware.js
 │   ├── validusertypedriver_middleware.js
 ├── 📁 models/               # MongoDB Models
 │   ├── AppointmentModel.js
 │   ├── UserModel.js
 ├── 📁 views/                # EJS Views
 │   ├── partials/           # EJS Partials (header, footer, etc.)
 │   ├── appointment.ejs
 │   ├── dashboard.ejs
 │   ├── g2_exam.ejs
 │   ├── g_exam.ejs
 │   ├── login.ejs
 ├── 📁 public/               # Static Assets
 │   ├── images/             # Images for the website
 ├── 📄 app.js                # Main Express application
 ├── 📄 .env                  # Environment variables
 ├── 📄 package.json          # Dependencies and scripts

🛠 Technologies Used

  • Front-End: HTML5, CSS3, JavaScript, EJS
  • Back-End: Node.js, Express.js
  • Database: MongoDB
  • Styling: CSS Animations, Responsive Design
  • Middleware: Custom validation for session and user roles
  • Version Control: Git/GitHub

📌 Prerequisites

To run the project, ensure you have:

  • Node.js and npm installed.
  • MongoDB database running locally or in the cloud.

🏃‍♂️ How to Run

1️⃣ Clone the repository:

git clone https://github.com/your-repo/drivetest-booking-system.git

2️⃣ Navigate to the project directory:

cd drivetest-booking-system

3️⃣ Install dependencies:

npm install

4️⃣ Set up environment variables in a .env file:

DB_URI=your_mongodb_connection_string
PORT=3000
SESSION_SECRET=your_secret

5️⃣ Start the application:

npm start

6️⃣ Open your browser and navigate to:

http://localhost:3000

🎯 Project Purpose

This project demonstrates:

  • Full-Stack Development: Integration of front-end and back-end technologies.
  • Middleware & Validation: Custom middleware for user authentication and role management.
  • Dynamic Templates: Modular and reusable EJS templates.
  • Database Integration: CRUD operations with MongoDB.
  • Admin Features: Appointment management with date and slot availability.
  • Responsive Design: Ensuring usability on various devices.

📜 License

This project was developed for educational purposes as part of a college final project.


💼 Author: Juan Jacobo Florez Monroy | 🚀 Portfolio: [Portfolio Website or GitHub]