Inspiration
The idea came from a real experience: while boarding a matatu, M-Pesa stopped working, leaving me unable to pay my fare. This made us think of a more reliable, dedicated digital payment solution for public transport. That’s how Transit Pay was born. Inspired by cashless transport systems in other countries, we developed Transit Pay — a platform where passengers can preload money into a digital wallet, scan a QR code when boarding, and have their fare calculated based on the distance travelled.
What it does
Transit Pay allows passengers to: -Preload money into a digital wallet. -Scan a QR code when boarding a matatu. -Track their journey and calculate fares based on distance. -View nearby matatu stages and get fare estimates. -View their trip and transaction history. -Pay without using cash.
How we built it
Transit Pay was built using Flutter and Dart for the mobile application, with Firebase providing the backend infrastructure. Flutter & Dart — mobile app development Firebase Authentication — user authentication Cloud Firestore — storing users, vehicles, trips, wallets and transactions Firebase Cloud Functions — secure backend operations and payment settlement Firebase Storage — file storage Geolocator — location and distance tracking QR code technology — vehicle identification and trip initiation Git & GitHub — version control and collaboration
Challenges we ran into
One of our biggest challenges was designing a secure wallet and transaction system. We needed to make sure that passengers could not directly manipulate their wallet balances from the app. We also faced challenges with: -Configuring Firebase Cloud Functions. -Setting up Firestore security rules and indexes. -Handling authentication and connectivity issues during development. -Connecting different parts of the application, including the wallet, trips, QR scanning and backend services.
Accomplishments that we're proud of
We are proud of turning the idea into a working mobile application rather than keeping it as just a concept. A structure that can be expanded for real-world payment integrations. We successfully implemented:
-Passenger and driver experiences. -Digital wallet functionality. -QR-based vehicle identification. -Trip tracking. -Transaction records. -Firebase backend integration.
What we learned
Building Transit Pay taught us that developing an application is much more than designing screens.
We learned how different technologies work together to create a complete system, particularly Flutter, Firebase, Firestore, Cloud Functions, authentication, QR codes and location services.
We also learned the importance of security when dealing with financial data. Operations such as changing wallet balances should not simply be trusted to the mobile application; they need to be handled securely on the backend.
Most importantly, we learned how to take an idea, break it into smaller technical problems, troubleshoot those problems, and gradually turn the idea into a working product.
What's next for Transit Pay
Offline functionality for areas with poor network connectivity. M-Pesa integration for seamless top-ups. Expand to more matatu routes and stages. Improve fare accuracy and real-world testing.
Log in or sign up for Devpost to join the conversation.