Skip to content

Namma-Flutter/namma_wallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘œ Namma Wallet

All Contributors

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.


✨ Features

πŸ“± Multi-Source Ticket Management

  • 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

🎫 Supported Ticket Types

  • 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

πŸš€ Getting Started

Prerequisites

  • 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)

Project Architecture

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

Setup & Installation

# 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>

Development Commands

# 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 generation

Release Builds:

make release-apk        # Build Android release APK
make release-appbundle  # Build Android release App Bundle
make release-ipa        # Build iOS release IPA

All release builds automatically:

  1. Get dependencies
  2. Run code generation
  3. Remove WASM modules (via dart run pdfrx:remove_wasm_modules) to reduce app size
  4. Build the release version

Using Without FVM

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-apk

CI/CD Integration

The release workflow in .github/workflows/build_and_release.yml automatically removes WASM modules before building releases for optimal app size.


πŸ›  Development Notes

Code Style & Conventions

  • Uses flutter_lints for 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

🀝 Contributing

We welcome contributions from the community! πŸš€

How to Contribute

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • 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

🧩 Commit & Branch Naming Guidelines

To maintain a clean and consistent Git history, Namma Wallet follows the Conventional Commits specification and a structured branch naming convention.

πŸ“„ License

This project is licensed under the MIT License – see the LICENSE file for details.


❀️ Acknowledgements

  • 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

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Harish Anbalagan
Harish Anbalagan

πŸ’»
Magesh K
Magesh K

πŸ’»
Kumaran
Kumaran

πŸ’»
Srinivasan R
Srinivasan R

πŸ’»
Saravana
Saravana

πŸ’»
Akash Senthil
Akash Senthil

πŸ’»
Renga Praveen Kumar
Renga Praveen Kumar

πŸ’»
Keerthivasan S
Keerthivasan S

πŸ’»
Joe Jeyaseelan
Joe Jeyaseelan

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!