- Cloud
- Civic Infrastructure
SafeRoute
Real-time incident reporting and dispatch for the Ghana Highway Authority
Civic infrastructure, built for the Ghana Highway Authority
Project overview
SafeRoute connects roadside incident reporting with the operational work of dispatching a response. Built for the Ghana Highway Authority, it brings intake, incident state, geographic context, and coordination into one application. The Next.js dashboard is the operator-facing part of the system: it gives controllers a shared view of incidents rather than leaving the picture scattered across calls and informal updates.
Behind that interface, API Gateway and Lambda handle incoming reports, DynamoDB stores incidents and responders, and Step Functions coordinates dispatch and escalation. AWS Location Service adds the geographic layer. Terraform defines the infrastructure and GitHub Actions deploys it using OIDC, connecting the application and its delivery pipeline without keeping long-lived AWS credentials in CI.
The problem to solve
Road incidents in Ghana are reported through phone calls and informal channels, which makes it hard to see what is happening on the network, who is responding, and where the gaps are. The platform needed to take reports from the roadside, route them to the right responders, and keep a live operational picture, without a team to run servers.
Inside the build
The implementation, from application behaviour to the infrastructure underneath it.
- Ingest incident reports through an API Gateway and Lambda intake path
- Orchestrate dispatch and escalation with Step Functions instead of an always-on worker
- Store incidents and responders in DynamoDB with a data model built for live querying
- Place and route incidents geographically with AWS Location Service
- Give controllers a Next.js dashboard showing current incident state
- Provision the whole stack in Terraform and deploy through GitHub Actions authenticated with OIDC, so no long-lived cloud keys live in CI
What shipped
A working serverless platform where the entire backend scales to zero between incidents, infrastructure is reproducible from code, and deploys carry no static AWS credentials.
Built with
- Next.js
- TypeScript
- AWS Lambda
- DynamoDB
- API Gateway
- Step Functions
- Location Service
- Terraform
- GitHub Actions
Want to talk through how this fits a system you are building?