# Spiro Rwanda Platform
> **Electric mobility infrastructure for Rwanda** — a full-stack web platform that powers battery-swap station operations, rider management, technician workflows, and executive analytics across the Spiro Rwanda network.
---
## Table of Contents
- Overview
- Architecture
- Feature Portals
- Tech Stack
- Internationalisation (i18n)
- Project Structure
- Getting Started
- Environment Variables
- Available Scripts
- API Overview
- Authentication & Role-Based Access
- Colour System
- Browser Support
- License
---
## Overview
Spiro Rwanda Platform is a multi-role web application that connects every stakeholder in the electric-motorcycle battery-swap ecosystem:
| Stakeholder | Core need served |
|---|---|
| **Rider** | Find stations, request swaps, track history, manage wallet & subscription |
| **Station Operator** | Process swaps, manage inventory, handle reservations & maintenance |
| **Technician** | Receive tasks, run battery diagnostics, log work history |
| **Administrator** | Oversee the entire network — users, stations, batteries, finance, analytics |
The platform is built for the Rwandan market with first-class **English / Kinyarwanda** bilingual support throughout every portal.
---
## Architecture
```
spiro-rwanda-platform/
├── frontend/ # React 19 + TypeScript SPA (Vite)
└── backend/ # Node.js + Express REST API (TypeScript)
```
```
Client (Browser)
│ HTTPS / REST
▼
Express API ──► MongoDB Atlas
│
▼
Redis (sessions / queue)
```
- **Frontend** talks to the backend via a versioned REST API (`/api/v1/...`).
- **JWT** tokens are issued at login and sent as `Authorization: Bearer` headers on every subsequent request.
- **Role-based route guards** on both client and server enforce portal boundaries.
---
## Feature Portals
### Public
- Landing page with hero, stats, how-it-works, and CTA sections
- About Us — mission, vision, story, values, team
- Services — battery swap, charging, subscription, maintenan …