Web-based car rental platform for Ghana with secure identity verification, online booking, and admin management.
# Car Rental Web Application
A complete car rental management system built with Python Flask, featuring admin management, customer bookings, identity verification via document uploads, and Paystack payment integration.
## 🚀 Features
### 👨💼 Admin Features
- ✅ Secure admin authentication (login/logout)
- ✅ Comprehensive admin dashboard with statistics
- ✅ Full CRUD operations for cars (Create, Read, Update, Delete)
- ✅ Car management:
- Add new cars with details (name, model, brand, year, price, images, etc.)
- Edit existing car information
- Delete cars (with booking validation)
- Update car status (Available, Rented, Out of Stock, Sold Out)
- ✅ View and manage all customer bookings
- ✅ View uploaded customer identity documents (Driver's License & Ghana Card)
- ✅ Verify customer documents
- ✅ Update booking status (Pending, Confirmed, Completed, Cancelled)
- ✅ Generate reports and view revenue statistics
### 👤 Customer Features
- ✅ User registration and authentication
- ✅ Upload identity documents:
- Driver's License (front & back)
- Ghana Card (front & back)
- Support for images (JPG, PNG) and PDF
- ✅ Browse available cars with search and filters
- ✅ View detailed car information
- ✅ Select rental duration (start date to end date)
- ✅ Submit booking requests
- ✅ Secure payment via Paystack integration
- ✅ View booking confirmation and history
- ✅ Manage profile and change password
- ✅ Cancel pending bookings
### 🔐 Security Features
- Document verification system
- Secure file uploads with validation (max 10MB)
- Password hashing with Werkzeug
- Flask-Login session management
- CSRF protection with Flask-WTF
## 📦 Technology Stack
- **Backend**: Python 3.8+, Flask 3.0
- **Database**: SQLAlchemy (SQLite/PostgreSQL)
- **Authentication**: Flask-Login
- **Forms**: Flask-WTF, WTForms
- **Payment**: Paystack API
- **Frontend**: HTML5, CSS3, Bootstrap 5, JavaScript
- **Icons**: Font Awesome 6
## 🗄️ Database Schema
### Users Table
- id, first_name, last_name, em …