Skip to content

iamyoganathan/language_learning_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌏 Language Learning App

Flutter Dart Firebase License

An interactive Flutter application for learning Tamil language with engaging lessons, quizzes, and progress tracking.


πŸ“– About

The Language Learning App is a comprehensive mobile application built with Flutter that helps users learn Tamil through structured lessons, interactive quizzes, and personalized progress tracking. The app leverages Firebase for authentication, cloud storage, and real-time data synchronization.

✨ Key Features

  • πŸ” User Authentication - Secure sign-up/login with Firebase Auth and Google Sign-In
  • πŸ“š Interactive Lessons - Structured Tamil language lessons with detailed content
  • 🎯 Quiz System - Test your knowledge with interactive quizzes after each lesson
  • πŸ“Š Progress Tracking - Real-time progress monitoring with completion percentages
  • πŸ‘€ User Profiles - Personalized user profiles with customizable avatars
  • πŸ”Š Audio Support - Text-to-speech functionality for pronunciation
  • 🎀 Speech Recognition - Practice speaking with speech-to-text capabilities
  • 🎨 Beautiful UI - Modern, animated interface with Google Fonts and Flutter Animate
  • πŸ’Ύ Cloud Storage - All data synced with Cloud Firestore

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

Installation

  1. Clone the repository

    git clone https://github.com/iamyoganathan/language_learning_app.git
    cd language_learning_app
  2. Install dependencies

    flutter pub get
  3. Firebase Setup

    ⚠️ Important: You need to set up your own Firebase project

    • Create a new Firebase project at Firebase Console
    • Add an Android and/or iOS app to your Firebase project
    • Download google-services.json (Android) and place it in android/app/
    • Download GoogleService-Info.plist (iOS) and place it in ios/Runner/
    • Enable Firebase Authentication (Email/Password and Google Sign-In)
    • Enable Cloud Firestore database
    • Set up Firestore security rules as needed
  4. Run the app

    flutter run

πŸ“± Screenshots

Add your app screenshots here to showcase the UI

Home Screen Lessons Quiz Profile
Home Lessons Quiz Profile

πŸ—οΈ Project Structure

lib/
β”œβ”€β”€ main.dart                    # App entry point with Firebase initialization
β”œβ”€β”€ models/
β”‚   └── lesson_model.dart        # Data models for lessons and quizzes
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ login_screen.dart    # User login interface
β”‚   β”‚   └── signup_screen.dart   # User registration interface
β”‚   β”œβ”€β”€ home_screen.dart         # Main dashboard
β”‚   β”œβ”€β”€ lesson_screen.dart       # Lesson listing screen
β”‚   β”œβ”€β”€ lesson_detail_screen.dart # Detailed lesson view
β”‚   β”œβ”€β”€ quiz_screen.dart         # Interactive quiz interface
β”‚   └── profile_screen.dart      # User profile management
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ auth_service.dart        # Authentication logic
β”‚   └── lesson_service.dart      # Lesson data management
└── assets/
    └── images/
        └── profile.png          # Default profile image

πŸ› οΈ Technologies & Packages

Package Version Purpose
firebase_core ^3.12.0 Firebase initialization
firebase_auth ^5.5.0 User authentication
cloud_firestore ^5.6.4 Cloud database
google_sign_in ^6.2.2 Google authentication
google_fonts ^6.2.1 Custom typography
flutter_animate ^4.5.2 Animations
flutter_animator ^3.2.2 Advanced animations
audioplayers ^6.2.0 Audio playback
flutter_tts ^4.2.2 Text-to-speech
speech_to_text ^7.0.0 Speech recognition
string_similarity ^2.1.1 Text comparison

πŸ”₯ Firebase Configuration

Firestore Database Structure

// Users Collection
users/{userId}
  β”œβ”€β”€ name: string
  β”œβ”€β”€ email: string
  β”œβ”€β”€ profilePic: string (URL)
  └── progress: {
      β”œβ”€β”€ completedLessons: array
      └── percentage: number
  }

// Lessons Collection
tamil_lessons/{lessonId}
  β”œβ”€β”€ title: string
  β”œβ”€β”€ description: string
  β”œβ”€β”€ content: string
  β”œβ”€β”€ level: string
  └── quiz: array [
      β”œβ”€β”€ question: string
      β”œβ”€β”€ options: array
      └── correctAnswer: string
  ]

Security Rules (Example)

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    
    match /tamil_lessons/{lessonId} {
      allow read: if request.auth != null;
      allow write: if false; // Only admins can write
    }
  }
}

🎯 Features in Detail

πŸ” Authentication

  • Email/Password authentication
  • Google Sign-In integration
  • Secure session management
  • Auto-login functionality

πŸ“š Lessons

  • Progressive learning structure
  • Rich content with images and audio
  • Text-to-speech for pronunciation
  • Bookmarking favorite lessons

🎯 Quizzes

  • Multiple-choice questions
  • Instant feedback
  • Score tracking
  • Progress calculation
  • Retry functionality

πŸ“Š Progress Tracking

  • Percentage-based progress
  • Completed lessons tracking
  • Visual progress indicators
  • Real-time synchronization

🀝 Contributing

Contributions are welcome! Please follow these steps:

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

Code Style Guidelines

  • Follow Effective Dart guidelines
  • Use meaningful variable and function names
  • Add comments for complex logic
  • Format code using flutter format .

πŸ› Known Issues & Roadmap

Current Issues

  • iOS Firebase configuration needs testing
  • Audio playback may have latency on some devices

Roadmap

  • Add more languages (French, Spanish, etc.)
  • Implement flashcard system
  • Add gamification with badges and achievements
  • Offline mode support
  • Social features (leaderboards, friends)
  • Dark mode theme
  • Voice conversation practice
  • Admin panel for content management

πŸ“„ License

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


πŸ‘¨β€πŸ’» Author

Yoganathan


πŸ™ Acknowledgments

  • Flutter team for the amazing framework
  • Firebase for backend services
  • Google Fonts for beautiful typography
  • Flutter community for helpful packages and resources

πŸ“ž Support

If you encounter any issues or have questions:


Made with ❀️ using Flutter

⭐ Star this repository if you find it helpful!

About

A Flutter-based language learning application with Firebase integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published