Customer portal, operations dashboard, field agent PWA, and public website for the eBikes Africa last-mile delivery platform.
# eBikes Africa — Frontend
> pnpm monorepo containing all four frontend applications for the eBikes Africa platform — customer portal, operations dashboard, field agent PWA, and public marketing website.
---
## Overview
This monorepo is the authoritative source for all eBikes Africa frontend applications. It uses a shared package architecture: UI primitives, domain feature packages, and shared utilities live in `packages/` and are consumed by the four Next.js 16 apps in `apps/`. All apps share a single parameterised `Dockerfile`, a unified CI pipeline per app, and a common deployment model via Docker Swarm on AWS EC2.
Secrets are never baked into images. Each authenticated app reads Docker Swarm secrets at startup via Next.js `instrumentation.ts`, which runs once before the server handles any requests. The `web` app is fully public and requires no secrets.
**Owns:**
- Customer-facing portal (`client`) — order placement, tracking, and account management
- Operations dashboard (`ops`) — internal tooling for fleet, workforce, and organisation management
- Field agent PWA (`agents`) — mobile-first app for delivery riders, installable via Add to Home Screen
- Public marketing website (`web`) — public-facing landing pages and content
**Does not own:**
- Business logic — owned by the backend microservices
- Authentication and identity — owned by Keycloak and the IAM service
- File storage — owned by S3; frontends consume presigned URLs only
- Push notifications — owned by the Notifications service
---
## Applications
| App | Purpose | Dev port | Production host |
| ------------- | -------------------- | -------- | --------------------------- |
| `apps/client` | Customer portal | 3000 | `app.ebikesafrica.co.ke` |
| `apps/ops` | Operations dashboard | 3001 | `ops.ebikesafrica.co.ke` |
| `apps/agents` | Field agent PWA | 3002 | `agents.ebikesafrica.co.ke` |
| `apps/web` | Public website | 3 …