A Hindi-to-Tamil language learning application built with Flutter
Tamil Setu is a Flutter application designed to help Hindi speakers learn Tamil through an interactive, engaging learning experience. The app uses a structured curriculum with topic-based lessons, audio pronunciation support, and interactive quizzes to reinforce learning.
To update Play Store screenshots from a real Android emulator/device:
cd tamil_setu
flutter test integration_test/screenshots_test.dart -d <android-device-id>
Screenshots are saved by the Flutter tool under build/ output. Copy them into
tamil_setu/test/metadata/en-US/images as needed for Play Store assets.
For golden widget screenshots (UI regression):
./update_golden_screenshots.sh
Play Store screenshots are saved under tamil_setu/test/metadata/en-US/images.
Clone the repository
git clone https://github.com/pmundada/tamil_via_hindi.git
cd tamil_via_hindi/tamil_setu
Install dependencies
flutter pub get
Run the app
flutter run
flutter build apk --release
The APK will be available at build/app/outputs/flutter-apk/app-release.apk
flutter build ios --release
lib/
├── main.dart # App entry point and configuration
├── theme.dart # App theme and styling (PeacockTheme)
├── firebase_options.dart # Firebase configuration
├── data/ # Data loading logic
│ └── curriculum.dart # Loads lesson and quiz content from JSON
├── models/ # Data models
│ ├── lesson.dart # Lesson model
│ ├── word_pair.dart # Word pair model for lessons
│ ├── checkpoint.dart # Checkpoint quiz model
│ └── review_card.dart # Review card model for SRS
├── providers/ # State management using Provider
│ ├── content_provider.dart # Provides lesson and quiz content
│ ├── progress_provider.dart # Manages user progress
│ ├── review_provider.dart # Manages review cards for SRS
│ └── theme_provider.dart # Manages app theme (light/dark)
├── screens/ # UI screens
│ ├── dashboard_screen.dart # Main screen with lesson list
│ ├── lesson_screen.dart # Screen for individual lessons
│ ├── quiz_view.dart # View for lesson quizzes
│ ├── checkpoint_quiz_screen.dart # Screen for checkpoint quizzes
│ ├── multiple_choice_quiz.dart # Multiple choice quiz widget
│ └── review_screen.dart # Screen for spaced repetition review
├── services/ # Business logic and services
│ ├── auth_service.dart # Authentication service (Google Sign-In)
│ ├── progress_service.dart # Service for saving/loading progress locally
│ ├── review_storage_service.dart # Local storage for review cards
│ ├── srs_service.dart # Spaced Repetition System logic
│ ├── sync_service.dart # Service for syncing data with Cloud Firestore
│ └── tts_service.dart # Text-to-Speech service
└── widgets/ # Reusable UI widgets
├── peacock_mascot.dart # Peacock mascot widget
└── word_card.dart # Card widget for displaying words
The app currently includes over 30 lessons with hundreds of word pairs, loaded dynamically from assets/data/master_content.json. The curriculum covers a wide range of topics, including:
assets/data/master_content.jsonEdit lib/theme.dart to modify the PeacockTheme class. You can change colors for both light and dark themes.
class PeacockTheme {
// Peacock-inspired color palette
static const Color peacockBlue = Color(0xFF005DAA);
static const Color peacockGreen = Color(0xFF00A896);
// ... more colors
}
flutter test
flutter test --coverage
The project uses GitHub Actions for continuous integration and release:
See .github/workflows/build_and_release.yml for configuration.
Tamil Setu uses a proven language learning methodology:
Contributions are welcome! Here's how you can help:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is open source and available under the MIT License.
If you have questions or need help:
Give a ⭐️ if this project helped you learn Tamil!
Made with ❤️ for Hindi speakers learning Tamil
A Hindi-to-Tamil language learning application built with Flutter
Tamil Setu is a Flutter application designed to help Hindi speakers learn Tamil through an interactive, engaging learning experience. The app uses a structured curriculum with topic-based lessons, audio pronunciation support, and interactive quizzes to reinforce learning.
To update Play Store screenshots from a real Android emulator/device:
cd tamil_setu
flutter test integration_test/screenshots_test.dart -d <android-device-id>
Screenshots are saved by the Flutter tool under build/ output. Copy them into
tamil_setu/test/metadata/en-US/images as needed for Play Store assets.
For golden widget screenshots (UI regression):
./update_golden_screenshots.sh
Play Store screenshots are saved under tamil_setu/test/metadata/en-US/images.
Clone the repository
git clone https://github.com/pmundada/tamil_via_hindi.git
cd tamil_via_hindi/tamil_setu
Install dependencies
flutter pub get
Run the app
flutter run
flutter build apk --release
The APK will be available at build/app/outputs/flutter-apk/app-release.apk
flutter build ios --release
lib/
├── main.dart # App entry point and configuration
├── theme.dart # App theme and styling (PeacockTheme)
├── firebase_options.dart # Firebase configuration
├── data/ # Data loading logic
│ └── curriculum.dart # Loads lesson and quiz content from JSON
├── models/ # Data models
│ ├── lesson.dart # Lesson model
│ ├── word_pair.dart # Word pair model for lessons
│ ├── checkpoint.dart # Checkpoint quiz model
│ └── review_card.dart # Review card model for SRS
├── providers/ # State management using Provider
│ ├── content_provider.dart # Provides lesson and quiz content
│ ├── progress_provider.dart # Manages user progress
│ ├── review_provider.dart # Manages review cards for SRS
│ └── theme_provider.dart # Manages app theme (light/dark)
├── screens/ # UI screens
│ ├── dashboard_screen.dart # Main screen with lesson list
│ ├── lesson_screen.dart # Screen for individual lessons
│ ├── quiz_view.dart # View for lesson quizzes
│ ├── checkpoint_quiz_screen.dart # Screen for checkpoint quizzes
│ ├── multiple_choice_quiz.dart # Multiple choice quiz widget
│ └── review_screen.dart # Screen for spaced repetition review
├── services/ # Business logic and services
│ ├── auth_service.dart # Authentication service (Google Sign-In)
│ ├── progress_service.dart # Service for saving/loading progress locally
│ ├── review_storage_service.dart # Local storage for review cards
│ ├── srs_service.dart # Spaced Repetition System logic
│ ├── sync_service.dart # Service for syncing data with Cloud Firestore
│ └── tts_service.dart # Text-to-Speech service
└── widgets/ # Reusable UI widgets
├── peacock_mascot.dart # Peacock mascot widget
└── word_card.dart # Card widget for displaying words
The app currently includes over 30 lessons with hundreds of word pairs, loaded dynamically from assets/data/master_content.json. The curriculum covers a wide range of topics, including:
assets/data/master_content.jsonEdit lib/theme.dart to modify the PeacockTheme class. You can change colors for both light and dark themes.
class PeacockTheme {
// Peacock-inspired color palette
static const Color peacockBlue = Color(0xFF005DAA);
static const Color peacockGreen = Color(0xFF00A896);
// ... more colors
}
flutter test
flutter test --coverage
The project uses GitHub Actions for continuous integration and release:
See .github/workflows/build_and_release.yml for configuration.
Tamil Setu uses a proven language learning methodology:
Contributions are welcome! Here's how you can help:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is open source and available under the MIT License.
If you have questions or need help:
Give a ⭐️ if this project helped you learn Tamil!
Made with ❤️ for Hindi speakers learning Tamil