🚐 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

  1. Research & Empathy: Observed how passengers currently wait for taxis and how drivers find passengers
  2. Prototyping with AntiGravity: Built a Next.js 14 app with TypeScript for type safety
  3. Real-Time Features: Implemented Firebase for live taxi/passenger pin updates
  4. Mapping: Integrated Google Maps to visualize taxi locations, directions, and ETAs
  5. Voice Activation: Added hands-free "Taxi!" wake word for safety, which drops the pin
  6. Demo Mode: Created a full simulation system so anyone can experience the app without real data
  7. 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

Share this project:

Updates