A platform built to solve the issue for the residents of the city of douala when dealing with transportaion
# Douala Ride — Moto-Taxi Platform for Douala, Cameroon
Modern, secure moto-taxi platform addressing fare negotiation, driver accountability, route discovery, digital payments, and safety.
**Stack:** HTML/CSS/Vanilla JS · Flask · MySQL (XAMPP) · Leaflet/OpenStreetMap · Mistral AI · Payment API
---
## Project structure
```
douala-ride/
├── frontend/ # HTML, CSS, JS (served by Flask)
├── backend/ # Flask app, routes, models, services
├── database/ # schema.sql
├── docs/
├── tests/
├── .env.example
├── .gitignore
├── requirements.txt
└── README.md
```
---
## Local setup (Windows + XAMPP)
### 1. Database
1. Start **XAMPP** → start **MySQL**.
2. Open phpMyAdmin or MySQL CLI and run:
```bash
mysql -u root < database/schema.sql
```
Or create the database and import `database/schema.sql` manually.
### 2. Python environment
```bash
cd douala-ride
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/macOS:
# source venv/bin/activate
pip install -r requirements.txt
```
### 3. Environment
```bash
copy .env.example .env # Windows
# cp .env.example .env # Linux/macOS
```
Edit `.env`:
- `SECRET_KEY` — long random string
- `DB_*` — match your XAMPP MySQL (default root / empty password)
- `MISTRAL_API_KEY` — optional (fallback replies work without it)
- Payment keys — leave mock for local testing
### 4. Create an admin user
After the app is running, register a normal user then promote in MySQL:
```sql
UPDATE users SET role = 'admin' WHERE email = 'your@email.com';
```
Or use the helper script (see below).
### 5. Run
From the **project root** (`douala-ride/`):
```bash
python -m backend.app
# or
python backend/app.py
```
Open: **
http://127.0.0.1:5000**
---
## Core flows
| Role | Path |
|------|------|
| Landing | `/` |
| Login / Register | `/login.html`, `/register.html` |
| Passenger | `/customer/dashboard.html`, `/customer/book-ride.html` |
| Driver | `/driver/dashboard.html` |
| Admin | `/admin/dashboard.html` | …