Many cities are poorly lit or have crime hotspots that aren't obvious to pedestrians. LumenWalk was built at the first london hackathon for {tech: europe} to provide AI-assisted routing for safer walking paths at night — combining open safety data, lighting info, and map intelligence to guide users in London along better routes.
LumenWalk Architecture
This diagram shows how LumenWalk is deployed on AWS EC2 using Docker and NGINX. GitHub Actions handles CI/CD, and external services like Umami and Sentry provide analytics and error tracking. HTTPS is secured using Certbot, and uptime is monitored via UptimeRobot.
Observability and Uptime Infrastructure Tools
Uptime Monitoring: UptimeRobot checks /api/status every 5 minutes.
Analytics: Umami tracks frontend usage.
Error Tracking: Sentry logs backend exceptions.
Metrics (Prometheus): App exposes Prometheus metrics at /api/metrics.
Dashboards (Grafana): Grafana visualises Prometheus data (process RAM/CPU, event-loop lag, custom counters like routes_generated_total).
Grafana + Prometheus Dashboard
Umami Analytics for Frontend Traffic
Sentry Dashboard for Error logging
Uptime Screenshot
Key Features
AI-powered route recommendations based on safety and lighting data
Interactive Mapbox interface with live route rendering
Integration with OpenAI to summarise route risks in plain language
Real-time data from Metro Police and lighting APIs
Shareable routes — users can send a link to others who can view the route and submit safety feedback
Feedback is stored in a database for future analysis
Fully Dockerised and deployed to AWS with HTTPS and monitoring
Deployment Workflow
Push to main triggers GitHub Actions.
Pipeline:
Logs into Docker Hub
Pulls latest image
Stops & removes old container
Runs latest container
Cleans up unused images/volumes
UptimeRobot monitors deployment health.
🧠 Key DevOps Learnings
Infrastructure & Observability — Grafana dashboards (from Prometheus app metrics), /api/status uptime monitoring, Umami for frontend traffic, and Sentry for error logging/alerts.
Disk Space Management – EC2 crashed due to unused Docker images. Fixed with:
shell
docker image prune -a -f
and integrated a cleanup step into my CI workflow.
Reverse Proxy Setup – Configured NGINX to route traffic to Dockerised frontend and secure HTTPS with Certbot.
CI/CD Automation – GitHub Actions auto-deploys new builds to EC2 via SSH.