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.
Developed as a final individual college project, this system demonstrates skills in backend development, authentication, database integration, and responsive UI/UX design.
🚀 Try it out here: DriveTest Booking System Live Demo
- 🔦 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.
- 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
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.
💽 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
To run the project, ensure you have:
- Node.js and npm installed.
- MongoDB database running locally or in the cloud.
1️⃣ Clone the repository:
git clone https://github.com/jjacoboflorez95/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:
MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/<database>?retryWrites=true&w=majority
5️⃣ Start the application:
npm start
6️⃣ Open your browser and navigate to:
http://localhost:4040
This project was developed for educational purposes as part of a college final project.
👤 Juan Jacobo Florez Monroy
🌐 Portfolio: jjacobo95.com
🐙 GitHub: github.com/jjacoboflorez95