A mobile application for dataset contributors of Leyu
Features β’ Getting Started β’ Documentation β’ Contributing β’ License
Leyu Mobile is a Flutter-based mobile application designed for dataset contributors. The app enables users to contribute to various data collection tasks including speech-to-text, text-to-speech, and text-to-text tasks, helping build high-quality datasets for machine learning and AI applications.
Want to try the app without building from source? Download the sample APK from Google Drive and install it on your Android device.
- π― Task Management: Browse, accept, and complete various data collection tasks
- π€ Audio Recording: High-quality audio recording for speech tasks
- π Audio Playback: Built-in audio player for reviewing recordings
- π Text Input: Validated text input for transcription tasks
- π Multi-language Support: Supports Amharic, Oromo, and English
- π Push Notifications: Real-time updates via OneSignal
- π° Wallet Integration: Track earnings and manage withdrawals
- π€ Profile Management: Comprehensive user profile and settings
- π Secure Authentication: JWT-based authentication with token refresh
- Task Discovery: Browse available tasks filtered by type and status
- Task Submission: Complete tasks with audio recording or text input
- Progress Tracking: Monitor task completion and submission history
- Earnings Dashboard: View earnings and transaction history
- Notifications: Receive updates on task assignments and approvals
- Profile Management: Update personal information and preferences
- Clean Architecture: Separation of concerns with domain, data, and presentation layers
- State Management: GetX for reactive state management
- Local Storage: Hive for efficient local data persistence
- Secure Storage: Flutter Secure Storage for sensitive data
- API Integration: RESTful API with Dio HTTP client
- Push Notifications: OneSignal integration for real-time updates
- Audio Management: Advanced audio recording and playback
- Offline Support: Local caching for offline functionality
- Environment Configuration: Secure environment variable management
- Flutter SDK: 3.5.0 or higher
- Dart SDK: 3.5.0 or higher
- Android Studio or Xcode (for iOS development)
- Git: For version control
Download the pre-built APK from Google Drive and install it on your Android device:
# Install on connected Android device (after downloading)
adb install Leyu.apkOr manually transfer the downloaded APK to your Android device and install it.
-
Clone the repository
git clone https://github.com/yourusername/leyu_mobile.git cd leyu_mobile -
Install dependencies
flutter pub get
-
Configure environment variables
cp .env.example .env
Edit
.envand add your configuration:API_BASE_URL=your_api_base_url ONESIGNAL_APP_ID=your_onesignal_app_id
See docs/SETUP.md for detailed instructions.
-
Run the app
# Development flutter run # Release flutter run --release
flutter build apk --release
# or
flutter build appbundle --releaseflutter build ios --release- docs/SETUP.md - Complete setup guide
- CONTRIBUTING.md - How to contribute
- CODE_OF_CONDUCT.md - Community guidelines
- ARCHITECTURE.md - App architecture and design patterns
- API_DOCUMENTATION.md - API integration guide
- CHANGELOG.md - Version history and changes
- LICENSE - MIT License
- CONTRIBUTORS.md - Project contributors
The app follows Clean Architecture principles with clear separation of concerns:
lib/
βββ core/ # Core functionality
β βββ api/ # API client and constants
β βββ cache/ # Cache management
β βββ constants/ # App constants
β βββ errors/ # Error handling
β βββ localization/ # Multi-language support
β βββ services/ # Core services
β βββ theme/ # App theming
β βββ utils/ # Utility functions
β βββ widgets/ # Reusable widgets
βββ features/ # Feature modules
β βββ auth/ # Authentication
β β βββ data/ # Data layer
β β βββ domain/ # Domain layer
β β βββ presentation/ # Presentation layer
β βββ home/ # Home & tasks
β βββ notification/ # Notifications
β βββ profile/ # User profile
βββ routes/ # App routing
βββ main.dart # App entry point
- State Management: GetX
- HTTP Client: Dio
- Local Database: Hive
- Secure Storage: Flutter Secure Storage
- Audio Recording: record package
- Audio Playback: just_audio
- Push Notifications: OneSignal
- Image Handling: cached_network_image
- Environment Variables: flutter_dotenv
The app supports multiple languages:
- πΊπΈ English (en_US)
- πͺπΉ Amharic (am_ET)
- πͺπΉ Oromo (om_ET)
To add a new language:
- Create translation file in
lib/core/localization/translations/ - Add locale to
lib/core/localization/app_translations.dart - Update
LocalizationControllerif needed
- Environment Variables: Sensitive data stored in
.env(not in version control) - Secure Storage: Tokens and credentials encrypted with Flutter Secure Storage
- API Security: JWT-based authentication with automatic token refresh
- Input Validation: All user inputs validated before processing
- HTTPS Only: All API calls over HTTPS
For security concerns, please email security@leyu.ai or open a private security advisory on GitHub.
# Run all tests
flutter test
# Run with coverage
flutter test --coverage
# Run specific test
flutter test test/widget_test.dart- β Android: API 21+ (Android 5.0+)
- β iOS: iOS 12.0+
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the 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
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
This project is licensed under the MIT License - see the LICENSE file for details.
- Development Team: Leyu Development Team
- Contributors: See CONTRIBUTORS.md
- Flutter team for the amazing framework
- GetX for state management
- OneSignal for push notifications
- All contributors who have helped improve this project
- Documentation: Check the docs section
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Add more task types
- Implement offline mode
- Add dark mode
- Improve accessibility
- Add unit tests coverage
- Add integration tests
- Performance optimizations
- UI/UX improvements
- Version: 1.0.0+2
- Status: Active Development
- Last Updated: January 2026


