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
- Manual Entry β Direct ticket input with form validation
- 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
- SQLite Database β Local storage with comprehensive ticket metadata
- Duplicate Prevention β Smart detection based on PNR/booking references
- Export Functionality β Data export capabilities for backup
- Share Integration β Handle PDF files shared from other applications
- Bottom Navigation β Three-tab layout (Home, Scanner, Calendar)
- Filtering & Search β Organize tickets by date, provider, and type
- State Management β Persistent navigation and data state
- 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 for release
fvm flutter build apk # Android APK
fvm flutter build ios # iOS IPA- 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
- Unit tests for parsing services and data models
- Widget tests for UI components
- Integration tests for full user workflows
- Single
travel_ticketstable supporting all ticket types - Generic schema with enum mapping for type safety
- Migration support for schema updates
- Optimized indexing for user, date, and type queries
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
Please check our CONTRIBUTING.md (coming soon) for detailed guidelines.
syncfusion_flutter_pdf- PDF text extraction and processingai_barcode_scanner- QR code scanning functionalitysqflite- Local SQLite database storagego_router- Declarative navigation and routingdart_mappable- Type-safe serialization/deserialization
card_stack_widget- Swipeable card stack for ticket displaytable_calendar- Calendar view implementationgoogle_fonts- Typography and font managementflutter_svg- SVG asset support
file_picker- PDF file selectionshared_preferences- Local settings storagelisten_sharing_intent- Handle shared files from other appsprovider- State management for calendar features
- Feature-Based Organization - Each feature module contains domain, application, and presentation layers
- SMS ticket parsing (TNSTC, IRCTC, SETC)
- PDF ticket extraction (TNSTC)
- QR code scanning (IRCTC)
- Clipboard text processing
- SQLite database with migration support
- Card stack UI with swipe functionality
- Calendar view for events and travel
- Bottom navigation with three main sections
- Duplicate ticket prevention
- Share intent handling for PDFs
- Enhanced error handling and user feedback
- Performance optimizations for large datasets
- Additional transport provider support
- Cloud backup & synchronization
- Ticket sharing with friends and family
- Home screen widgets for quick access
- Offline ticket access and storage
- Push notifications for travel reminders
- Multi-language support (Tamil, Hindi, etc.)
- Dark mode theme support
- Advanced filtering and search capabilities
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
- Syncfusion for providing excellent PDF processing capabilities
- Flutter team for the amazing cross-platform framework
- Open source community for continuous support and contributions
- Indian transport providers (TNSTC, IRCTC, SETC) for standardized ticket formats
Thanks goes to these wonderful people (emoji key):
Joe Jeyaseelan π» |
Harish Anbalagan π» |
Magesh K π» |
Kumaran π» |
Srinivasan R π» |
Saravana π» |
Akash Senthil π» |
Renga Praveen Kumar π» |
This project follows the all-contributors specification. Contributions of any kind welcome!