Skip to content

stayzappy/abesabesi

Repository files navigation

Abesabesi - Language Learning App

A Flutter mobile application for learning the Abesabesi language through interactive lessons, quizzes, and audio pronunciation.

Features

✅ Authentication System

  • User registration and login
  • Password reset functionality
  • Secure session management with Appwrite backend

✅ Interactive Learning

  • Lesson-based learning with categories:
    • Greetings (Kuva, Bawo, Daadaa, E ku aaro)
    • Family (Baba, Iya, Omo, Egbon)
    • Numbers (Ikan, Meji, Meta, Merin)
  • Audio pronunciation for each word
  • Example sentences with translations
  • Progress tracking through lessons

✅ Quiz System

  • Interactive quizzes after completing lessons
  • Multiple choice questions with shuffled options
  • Score tracking and accuracy calculation
  • Pass/fail system (70% required to pass)
  • Lesson completion upon passing quizzes

✅ Progress Tracking

  • Learning streak counter (daily study tracking)
  • Words learned counter
  • Average accuracy from quiz results
  • Lesson completion status
  • Progress persistence using SharedPreferences

✅ User Experience

  • Modern UI with Material Design
  • Responsive design for different screen sizes
  • Floating banner notifications for user feedback
  • Loading states and error handling
  • Navigation between lessons and screens

✅ Audio Features

  • Audio playback for word pronunciation
  • Visual feedback during audio playback
  • Graceful fallback when audio files are missing

Technical Stack

  • Frontend: Flutter (Dart)
  • Backend: Appwrite (Authentication & User Management)
  • Local Storage: SharedPreferences (Progress & Settings)
  • Audio: AudioPlayers package
  • UI: Material Design with custom styling

Getting Started

  1. Install dependencies:

    flutter pub get
  2. Configure Appwrite:

    • Update lib/constants/appwrite_config.dart with your Appwrite credentials
    • Set up authentication in your Appwrite console
  3. Add audio files:

    • Place audio files in assets/sounds/ directory
    • Audio files should match the filenames in lesson_data.dart
  4. Run the app:

    flutter run

Project Structure

lib/
├── constants/
│   └── appwrite_config.dart
├── models/
│   ├── lesson_data.dart
│   ├── user_model.dart
│   └── user_progress.dart
├── screens/
│   ├── home_screen.dart
│   ├── lessons_screen.dart
│   ├── quiz_screen.dart
│   ├── progress_screen.dart
│   ├── profile_screen.dart
│   ├── login_screen.dart
│   ├── signup_screen.dart
│   └── forgot_password_screen.dart
├── services/
│   ├── appwrite_services.dart
│   ├── progress_service.dart
│   └── audio_service.dart
└── widgets/
    └── floating_banner.dart

Features in Detail

Progress System

  • Streak Tracking: Counts consecutive days of study
  • Word Counting: Tracks total words learned across all completed lessons
  • Accuracy Calculation: Based on quiz performance
  • Lesson Progress: Individual progress tracking per lesson

Quiz System

  • Question Generation: Creates multiple choice questions from lesson words
  • Option Shuffling: Randomizes answer options for variety
  • Score Calculation: Tracks correct answers and calculates percentage
  • Completion Logic: Marks lessons as complete upon passing (70%+)

Audio Integration

  • Asset-based Audio: Plays audio files from assets/sounds directory
  • Error Handling: Graceful fallback when audio files are missing
  • Visual Feedback: Shows playing state with icon changes

Future Enhancements

  • Offline mode support
  • More lesson categories
  • Advanced quiz types (matching, fill-in-the-blank)
  • Social features (leaderboards, sharing)
  • Push notifications for daily reminders
  • Voice recognition for pronunciation practice

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages