🚐 The Story Behind TaxiManje
💡 Inspiration
I was inspired by South Africa's complex public transportation landscape... specifically the ongoing tensions between metered taxis, minibus kombis, and ride-hailing services like Uber.
The reality is heartbreaking: we've witnessed Uber drivers being attacked, kidnapped, and in tragic cases, even burnt alive simply for trying to earn a living. Meanwhile, traditional taxi drivers feel their livelihoods are being threatened by apps that don't play by the same rules.
I asked myself: What if there was a solution that worked for everyone?
TaxiManje was born from this question. Instead of competing with the informal taxi industry, it empowers it: giving minibus taxi drivers the same visibility and efficiency that made ride-hailing apps successful, without disrupting the existing ecosystem.
🎓 What I Learned
- Real-time data synchronization using Firebase Realtime Database
- Geolocation and mapping with the Google Maps JavaScript API
- Progressive Web App (PWA) development for mobile-first, offline-capable experiences
- AI integration using Google's Gemini API for smart passenger nudges
- Containerization and cloud deployment with Docker and Google Cloud Run
- The importance of designing for low-bandwidth, high-stress environments: passengers hailing taxis often have seconds, not minutes
🔨 How I Built It
- Research & Empathy: Observed how passengers currently wait for taxis and how drivers find passengers
- Prototyping with AntiGravity: Built a Next.js 14 app with TypeScript for type safety
- Real-Time Features: Implemented Firebase for live taxi/passenger pin updates
- Mapping: Integrated Google Maps to visualize taxi locations, directions, and ETAs
- Voice Activation: Added hands-free "Taxi!" wake word for safety, which drops the pin
- Demo Mode: Created a full simulation system so anyone can experience the app without real data
- Deployment: Dockerized the app and deployed to Google Cloud Run
🧗 Challenges I Faced
| Challenge | How I Overcame It |
|---|---|
| Real-time taxi movement | Built a simulation engine with realistic taxi behavior, directions, and passenger clustering |
| Matching taxis to passengers by direction | Implemented bearing calculations and a "To CBD / From CBD" filter |
| Handling conflicts | Created a conflict resolution system when multiple passengers hail the same taxi |
| Low connectivity areas | Designed for minimal data usage and added visual feedback for offline states |
| User safety | Added voice-activated pin dropping so users don't need to look at their phones |
🌍 The Vision
TaxiManje isn't here to replace anyone: it's here to connect passengers with the taxis that are already serving them, making the system safer, faster, and more efficient for everyone.
Because every South African deserves a safe ride home.
🛠️ Built With
TypeScript, JavaScript, React, Next.js 14, TailwindCSS, Firebase Realtime Database, Google Maps JavaScript API, Google Gemini AI, Docker, Google Cloud Run, GitHub, Node.js
Built With
- docker
- firebase-realtime-database
- github
- google-cloud-run
- google-gemini-ai
- google-maps-javascript-api
- javascript
- next.js-14
- react
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.