A full-stack car rental platform for South African users - vehicle booking, management, and reservation system.
# MzansiRides — South African Car Rental Platform
A full-stack car rental web application built for the South African market. Browse vehicles, book rides with Paystack payments, manage fleets via an admin dashboard, and engage customers through automated email communications.
---
## Tech Stack
| Layer | Technology |
|-------|-----------|
| **Frontend** | React 18, Vite, React Router v6, AOS animations |
| **Backend** | Spring Boot 3.4, Java 21, Spring Security, JPA/Hibernate |
| **Database** | H2 (in-memory dev), production-ready for PostgreSQL/MySQL |
| **Auth** | JWT (role-based: Admin / User), BCrypt password hashing |
| **Email** | Spring Mail (Gmail SMTP), HTML email templates |
| **Payments** | Paystack inline integration |
| **Tooling** | Maven, ESLint, concurrently |
---
## Quick Start
### Prerequisites
- **Java 21** (JDK)
- **Maven** 3.9+
- **Node.js** 18+
- **Gmail account** with App Password (for emails)
### 1. Clone & Install
```bash
git clone
github.com
cd mzansirides
npm install
```
### 2. Configure Environment
Copy `.env.example` to `.env` and fill in your Gmail credentials:
```env
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD="your-16-char-app-password"
MAIL_FROM=your-email@gmail.com
ADMIN_JWT_SECRET=your-strong-secret-key
```
> **Note:** Without email config, the app still runs — emails fail silently.
### 3. Start
```bash
npm run dev:full
```
Wait for `Tomcat started on port 4000 (http)` in the logs (~15 seconds), then open:
| URL | Description |
|-----|-------------|
| `
localhost` | Client website |
| `
localhost` | Admin portal |
| `
localhost` | Database console |
### Default Admin Accounts
| Email | Password | Name |
|-------|----------|------|
| `n*******@gmail.com` | `Mzansi@2026` | ******** ******** N******* |
| `admin@mzansirides.co.za` | `Mzansi@2026` | MzansiRides Super Admin |
---
## Project Structure
```
MzansiRides/
├── ba …