Namma Wallet is an open-source Flutter mobile application for managing digital travel tickets and passes. The app provides a unified interface to save, organize, and view tickets from multiple sources including SMS, PDFs, QR codes, and clipboard text. It features intelligent parsing for Indian transport providers and generates beautiful digital ticket designs.
Unlike Apple Wallet or Google Wallet, which support only specific formats, Namma Wallet is a flexible, community-driven solution that works with any ticket type and format.
- SMS Parsing β Automatically extract tickets from TNSTC, IRCTC, and SETC SMS messages
- PDF Processing β Parse TNSTC bus tickets from PDF files using Syncfusion PDF library
- QR Code Scanning β Scan IRCTC train ticket QR codes with full metadata extraction
- Clipboard Processing β Read and parse travel ticket text from clipboard
- Bus Tickets β TNSTC (Tamil Nadu State Transport), SETC (State Express Transport)
- Train Tickets β IRCTC with complete QR code support and PNR lookup
- Event Tickets β Concert, movie, and general event passes
- Flight/Metro β Model support for future implementations
- Flutter SDK - 3.35.2 (managed via FVM)
- Android Studio / Xcode - For mobile app development
- Xcode - 16.4.0 (for iOS development)
- FVM - Flutter Version Management (recommended)
This app follows a feature-based architecture with clean separation of concerns:
lib/src/
βββ app.dart # Main app widget with navigation
βββ common/ # Shared utilities and services
β βββ helper/ # Helper functions and utilities
β βββ routing/ # Go Router configuration
β βββ services/ # Core services (database, sharing)
β βββ theme/ # App theming and styles
β βββ widgets/ # Shared UI components
βββ features/ # Feature modules
βββ bottom_navigation/ # Navigation bar implementation
βββ calendar/ # Calendar view with events
βββ clipboard/ # Clipboard text processing
βββ events/ # Event management
βββ export/ # Data export functionality
βββ home/ # Main home page with ticket cards
βββ irctc/ # IRCTC train ticket support
βββ pdf_extract/ # PDF parsing services
βββ profile/ # User profile and settings
βββ scanner/ # QR/PDF scanning interface
βββ sms_extract/ # SMS ticket extraction
βββ tnstc/ # TNSTC bus ticket support
βββ travel/ # Travel ticket display
# Clone the repository
git clone https://github.com/<your-username>/namma_wallet.git
cd namma_wallet
# Install FVM (if not already installed)
dart pub global activate fvm
# Use Flutter 3.35.2 via FVM
fvm use 3.35.2
# Get dependencies
fvm flutter pub get
# Run the app (specify device with -d flag)
fvm flutter run
# For specific device
fvm flutter run -d <device-id># Analyze code
fvm flutter analyze
# Run tests (when available)
fvm flutter test
### Build Commands with Makefile
The project includes a `Makefile` for streamlined build processes. By default, it uses FVM (`fvm flutter` and `fvm dart`), but you can override this behavior.
#### Available Targets
**Utility Commands:**
```bash
make help # Display all available commands
make clean # Clean the project
make get # Get dependencies
make codegen # Run code generationRelease Builds:
make release-apk # Build Android release APK
make release-appbundle # Build Android release App Bundle
make release-ipa # Build iOS release IPAAll release builds automatically:
- Get dependencies
- Run code generation
- Remove WASM modules (via
dart run pdfrx:remove_wasm_modules) to reduce app size - Build the release version
If you're not using FVM, override the FLUTTER and DART variables:
# Build with regular Flutter/Dart
FLUTTER=flutter DART=dart make release-apk
# Or export them for the session
export FLUTTER=flutter
export DART=dart
make release-apkThe release workflow in .github/workflows/build_and_release.yml automatically removes WASM modules before building releases for optimal app size.
- Uses
flutter_lintsfor consistent code formatting - Views use "view" suffix for main/page widgets (e.g.,
HomeView) - Widgets use "widget" suffix for reusable components (e.g.,
TicketCardWidget) - Follows standard Flutter/Dart conventions with analysis options configured
We welcome contributions from the community! π
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and architecture patterns
- Add tests for new features and bug fixes
- Update documentation for significant changes
- Use conventional commit messages
- Ensure all CI checks pass before submitting PR
To maintain a clean and consistent Git history, Namma Wallet follows the Conventional Commits specification and a structured branch naming convention.
This project is licensed under the MIT License β see the LICENSE file for details.
- Inspired by Apple Wallet & Google Wallet, but built for Indian transport systems and community needs
- Flutter team for the amazing cross-platform framework
- Open source community for continuous support and contributions
Thanks goes to these wonderful people (emoji key):
Harish Anbalagan π» |
Magesh K π» |
Kumaran π» |
Srinivasan R π» |
Saravana π» |
Akash Senthil π» |
Renga Praveen Kumar π» |
Keerthivasan S π» |
Joe Jeyaseelan π» |
This project follows the all-contributors specification. Contributions of any kind welcome!