SafeBoda Rwanda is a web application aimed at improving urban mobility in Rwanda. The application addresses key challenges such as unreliable transport access, lack of driver accountability, and inefficient ride coordination. By digitizing the ride request process, SafeBoda aims to offer a safer, more organized, and user-friendly experience for both riders and drivers.
For Passengers:
- Health and safety risks due to unlicensed drivers and untrained drivers.
- Inconsistent fare negotiation.
- Lack of trip tracking.
- Poor Punctuality and Unreliable Schedules.
- Limited payment options.
For drivers:
- Difficulty in building reputation and trust
- Lack of job security and consistent income
- High Operational Costs and Unpredictable Expenses
- No digital presence or customer management tools
To create a safer, more reliable, and formalized moto-taxi ecosystem that benefits both riders and drivers, while contributing to improved urban mobility in Rwanda.
Needs and expectations:
- Safety through licensed and verified drivers.
- Punctuality and reliablity
- Multiple payment options (cash, mobile money, card)
- Transparent and predictable pricing
- Driver ratings and reviews
- Real-time trip tracking for safety
Requirements and motivation
-
Safety and security while working
-
Trip and Customer Management Tools
-
Consistent Income
-
Verified platform to build reputation
-
Access to financial services and insurance
User Story (Passenger): "As a Passenger, I want to create an account using my phone number and email so that I can book safe and reliable moto or taxis."
User Story (Driver): "As a Driver, I want to register with my driver's license, vehicle registration details, and national identification so that I can be verified and start accepting rides."
User Story (Passenger): "As a Passenger, I want to request a ride by entering my pickup and destination locations so that I can get matched with nearby available drivers."
User Story (Driver): "As a Driver, I want to see nearby ride requests and accept them based on my location and preferences so that I can maximize my earnings."
User Story (Passenger): "As a Passenger, I want to see my driver's real-time location and estimated arrival time on a map so that I can plan accordingly."
User Story (Driver): "As a Driver, I want turn-by-turn navigation to the pickup location and destination so that I can provide efficient service."
User Story (Passenger): "As a Passenger, I want to view my past trips with details like date, route, and fare so that I can track my transportation expenses."
User Story (Driver): "As a Driver, I want to see my earnings history and completed trips so that I can do my management effectively."
User Story (Passenger): "As a Passenger, I want to rate my driver and provide feedback after each ride so that I can help maintain service quality."
User Story (Driver): "As a Driver, I want to be rated by passengers and build a reputation so that I can attract more customers."
flowchart LR %% Frontend A[React (Frontend Client)]
%% Backend
subgraph Backend["Django (Backend Server / API)"]
D[Django REST API]
E[Authentication]
F[Ride Management]
G[Payment Processing]
end
%% Database
subgraph Database["PostgreSQL Database"]
H[PostgreSQL]
I[User Data]
J[Trip Records]
K[Payment Records]
end
%% Connections
A -->|HTTP / REST Requests| D
D --> E
D --> F
D --> G
E -->|SQL / ORM| I
F -->|SQL / ORM| J
G -->|SQL / ORM| K
I -->|Query Results| E
J -->|Query Results| F
K -->|Query Results| G
D -->|JSON Responses| A
At this step we are going to configure frontend and backend related files. First we will create the folders (backend and frontend) separately.
-
Navigate to backend directory cd backend
-
Create and activate virtual environment python -m venv Myvenv Myvenv\Scripts\activate
-
Install Python dependencies pip install django djangorestframework psycopg2 pip freeze > requirements.txt
-
Navigate to frontend directory cd frontend
-
Initialize React + TypeScript project npm create vite@latest . -- --template react-ts