An interactive Flutter application for learning Tamil language with engaging lessons, quizzes, and progress tracking.
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.
- π 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
Before you begin, ensure you have the following installed:
- Flutter SDK (3.6.0 or higher) - Install Flutter
- Dart SDK (3.6.0 or higher)
- Android Studio or VS Code with Flutter extensions
- Firebase Account - Create Firebase Project
- Git - Install Git
-
Clone the repository
git clone https://github.com/iamyoganathan/language_learning_app.git cd language_learning_app -
Install dependencies
flutter pub get
-
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 inandroid/app/ - Download
GoogleService-Info.plist(iOS) and place it inios/Runner/ - Enable Firebase Authentication (Email/Password and Google Sign-In)
- Enable Cloud Firestore database
- Set up Firestore security rules as needed
-
Run the app
flutter run
Add your app screenshots here to showcase the UI
| Home Screen | Lessons | Quiz | Profile |
|---|---|---|---|
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
| 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 |
// 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
]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
}
}
}- Email/Password authentication
- Google Sign-In integration
- Secure session management
- Auto-login functionality
- Progressive learning structure
- Rich content with images and audio
- Text-to-speech for pronunciation
- Bookmarking favorite lessons
- Multiple-choice questions
- Instant feedback
- Score tracking
- Progress calculation
- Retry functionality
- Percentage-based progress
- Completed lessons tracking
- Visual progress indicators
- Real-time synchronization
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Effective Dart guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Format code using
flutter format .
- iOS Firebase configuration needs testing
- Audio playback may have latency on some devices
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Yoganathan
- GitHub: @iamyoganathan
- Repository: language_learning_app
- Flutter team for the amazing framework
- Firebase for backend services
- Google Fonts for beautiful typography
- Flutter community for helpful packages and resources
If you encounter any issues or have questions:
- Open an issue on GitHub Issues
- Check the Flutter documentation
- Visit Firebase documentation
Made with β€οΈ using Flutter
β Star this repository if you find it helpful!