Skip to content
Β 
Β 

Repository files navigation

Leyu Mobile

Leyu Logo

A mobile application for dataset contributors of Leyu

Flutter Dart License PRs Welcome

Features β€’ Getting Started β€’ Documentation β€’ Contributing β€’ License


πŸ“± About

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.

Screenshots

Home Page Task Detail Page

Try the App

Want to try the app without building from source? Download the sample APK from Google Drive and install it on your Android device.

Key Highlights

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

✨ Features

For Contributors

  • 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

Technical Features

  • 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

πŸš€ Getting Started

Prerequisites

  • 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

Quick Start Options

Option 1: Try the Sample APK (No Setup Required)

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

Or manually transfer the downloaded APK to your Android device and install it.

Option 2: Build from Source

  1. Clone the repository

    git clone https://github.com/yourusername/leyu_mobile.git
    cd leyu_mobile
  2. Install dependencies

    flutter pub get
  3. Configure environment variables

    cp .env.example .env

    Edit .env and add your configuration:

    API_BASE_URL=your_api_base_url
    ONESIGNAL_APP_ID=your_onesignal_app_id

    See docs/SETUP.md for detailed instructions.

  4. Run the app

    # Development
    flutter run
    
    # Release
    flutter run --release

Building for Production

Android

flutter build apk --release
# or
flutter build appbundle --release

iOS

flutter build ios --release

πŸ“– Documentation

Getting Started

Technical Documentation

Additional Resources

πŸ—οΈ Architecture

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

Key Technologies

  • 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

🌍 Localization

The app supports multiple languages:

  • πŸ‡ΊπŸ‡Έ English (en_US)
  • πŸ‡ͺπŸ‡Ή Amharic (am_ET)
  • πŸ‡ͺπŸ‡Ή Oromo (om_ET)

To add a new language:

  1. Create translation file in lib/core/localization/translations/
  2. Add locale to lib/core/localization/app_translations.dart
  3. Update LocalizationController if needed

πŸ” Security

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

πŸ§ͺ Testing

# Run all tests
flutter test

# Run with coverage
flutter test --coverage

# Run specific test
flutter test test/widget_test.dart

πŸ“± Supported Platforms

  • βœ… Android: API 21+ (Android 5.0+)
  • βœ… iOS: iOS 12.0+

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Quick Contribution Steps

  1. Fork the 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

πŸ“ Code of Conduct

This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.

πŸ“„ License

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

πŸ‘₯ Team

  • Development Team: Leyu Development Team
  • Contributors: See CONTRIBUTORS.md

πŸ™ Acknowledgments

  • Flutter team for the amazing framework
  • GetX for state management
  • OneSignal for push notifications
  • All contributors who have helped improve this project

πŸ“ž Support

πŸ—ΊοΈ Roadmap

  • Add more task types
  • Implement offline mode
  • Add dark mode
  • Improve accessibility
  • Add unit tests coverage
  • Add integration tests
  • Performance optimizations
  • UI/UX improvements

πŸ“Š Project Status

  • Version: 1.0.0+2
  • Status: Active Development
  • Last Updated: January 2026

About

Leyu Mobile is a Flutter mobile app that enables contributors to perform speech-to-text, text-to-speech, and text-to-text tasks for building high-quality AI and machine learning datasets.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages