A modular Flutter framework for building white-label touch rugby mobile applications. This mono-repo contains reusable packages and multiple organization-specific apps.
white-label-mobile/
βββ packages/ # Reusable Flutter packages
β βββ touchtech_core/ # Core services, config, database
β βββ touchtech_news/ # News feed functionality
β βββ touchtech_clubs/ # Clubs/Member Nations
β βββ touchtech_competitions/ # Competitions, fixtures, ladders
β βββ touchtech_favorites/ # Bookmarks/favorites system
βββ apps/ # Organization-specific apps
β βββ internationaltouch/ # FIT International Touch App
β βββ touch_superleague_uk/ # Touch Superleague UK App
βββ configs/ # Saved app configurations
βββ docs/ # Framework documentation
βββ Makefile # Build and test commands
Core services and utilities used across all apps:
- Configuration system with JSON-based app config
- Database service with Drift/SQLite
- Device awareness and connectivity monitoring
- API service foundation
- Shared widgets and utilities
News feed module with:
- REST API integration
- News article models and views
- Media support (images, videos)
- Offline caching
Clubs/Member Nations module:
- Club data models
- Club listing and detail views
- Member organization profiles
Competition management module:
- Event, season, division models
- Fixtures and results
- Ladder standings with statistics
- Competition filtering and navigation
- Match score cards
Bookmarking system:
- Multi-type favorites (events, divisions, teams)
- Local storage persistence
- Favorites view and management
Official app for Federation of International Touch:
- Global touch rugby events and tournaments
- World Cup, continental championships
- International news feed
- Member nation information
- Bundle ID:
org.internationaltouch.fit
Official app for Touch Superleague UK:
- UK domestic competition results
- League fixtures and standings
- Focused on competitions (no news/clubs modules)
- Bundle ID:
uk.org.touchsuperleague.mobile
- Flutter SDK 3.13.0 or later
- Dart SDK 3.1.0 or later
- Android Studio / VS Code with Flutter extensions
- CocoaPods (for iOS builds)
- Make (for build scripts)
- Clone the repository:
git clone https://github.com/internationaltouch/mobile.git
cd mobile- Install dependencies for all packages and apps:
make pub-get# Get dependencies for all packages and apps
make pub-get
# Run all tests (packages + apps)
make test
# Test packages only
make test-packages
# Test apps only
make test-apps
# Lint all code
make lint
# Clean all build artifacts
make clean
# Build specific apps
make build-fit # Build FIT International Touch app
make build-tsl # Build Touch Superleague UK app# Run FIT International Touch app
cd apps/internationaltouch
flutter run
# Run Touch Superleague UK app
cd apps/touch_superleague_uk
flutter runRun tests for all packages:
make test-packagesRun tests for all apps:
make test-appsRun all tests:
make testTest individual packages:
cd packages/touchtech_core && flutter test
cd packages/touchtech_competitions && flutter test# FIT International Touch
cd apps/internationaltouch
flutter build apk --release
flutter build appbundle --release
# Touch Superleague UK
cd apps/touch_superleague_uk
flutter build apk --release
flutter build appbundle --release# FIT International Touch
cd apps/internationaltouch
flutter build ios --release
# Touch Superleague UK
cd apps/touch_superleague_uk
flutter build ios --releaseTo create a new organization app:
- Create app directory structure:
mkdir -p apps/your_org/{lib,assets/{config,images},test}- Copy Android/iOS projects from an existing app
- Create
pubspec.yamlwith required package dependencies - Create app-specific
app_config.jsoninassets/config/ - Customize bundle IDs and app name
- Add app logo and branding assets
Each app uses a JSON configuration file (assets/config/app_config.json) to customize:
- Display name and branding
- API endpoints
- Enabled/disabled modules (news, clubs, competitions)
- Theme colors
- Competition logos and assets
See configs/ directory for example configurations.
touchtech_core (foundation)
β
touchtech_news, touchtech_clubs, touchtech_competitions
β
touchtech_favorites
β
Apps (internationaltouch, touch_superleague_uk)
- Riverpod for reactive state management
- Providers for API data, favorites, device state
- Offline-first architecture with local caching
- Drift for local SQLite database
- REST API integration via
ApiService - Automatic offline fallback
- Material navigation with deep linking support
- Tab-based navigation within feature modules
- Route-based navigation between major sections
GitHub Actions workflows for:
- β Code quality (formatting, linting, analysis)
- π§ͺ Automated testing
- π¦ Build artifacts (Android APK/AAB, iOS IPA)
- Push to
mainordevelopbranches - Pull requests to
mainbranch
This framework powers multiple touch rugby organizations' apps. Contributions welcome!
- Fork the repository
- Create a feature branch
- Make changes with tests
- Run
make lintandmake test - Submit pull request
- Follow Dart Style Guide
- Use
dart formatfor consistent formatting - Prefer
constconstructors - Add tests for new features
For questions or collaboration: π§ technology@internationaltouch.org
This project is licensed under the MIT License - see the LICENSE file for details.
Touch Technology Framework - Powering the global touch rugby community through modular, scalable technology.