🚐 The Story
💡 Inspiration
TaxiManje was born from South Africa's complex public transportation landscape: the tensions between metered taxis, minibus kombis, and ride-hailing services. Drivers on both sides have been hurt simply trying to earn a living, and commuters are caught in the middle with no visibility into when their ride is coming.
The question that started it all: what if there was a solution that worked for everyone? Instead of competing with the informal taxi industry, TaxiManje empowers it. Giving minibus drivers the same real-time visibility that made ride-hailing apps successful, without disrupting the existing ecosystem.
🔁 Why The Rebuild
The first version was a weekend prototype on Firebase and Google Cloud Run. It worked, but the whole point of this rebuild is the hackathon's thesis: you shouldn't have to choose between shipping fast and running on infrastructure that holds up at scale.
So we re-architected TaxiManje onto a production-ready stack:
- Firebase Realtime/Firestore → Amazon DynamoDB. Location pings are high-frequency writes, and pins are short-lived. DynamoDB's single-digit-millisecond writes and native TTL fit perfectly. The 10-minute pin expiry and 60-second taxi staleness are now handled by the database itself, deleting all the manual cleanup code.
- Google Cloud Run → Vercel. The Next.js app deploys in minutes, with serverless API routes holding the AWS credentials and talking to DynamoDB.
- Conflict resolution moved into the database. When two taxis race for the same passenger, a DynamoDB conditional write picks the winner atomically. No coordination service required.
🎓 What I Learned
- Modeling a realtime, write-heavy workload on DynamoDB (single-table-friendly keys, TTL, conditional writes)
- Keeping AWS credentials server-side behind Next.js API routes
- Designing a demo mode so the deployed app is explorable with zero backend setup
- Designing for low-bandwidth, high-stress environments: commuters hailing taxis have seconds, not minutes
🌍 The Vision
TaxiManje isn't here to replace anyone. It connects passengers with the taxis already serving them, making the system safer, faster, and more efficient for everyone.
Because every South African deserves a safe ride home.
Built With
- amazon-web-services
- awssdk
- css
- dynamodb
- node.js
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.