Effective Geo is a geography learning application designed to maximize memory retention. Unlike simple quiz apps, it implements the SuperMemo-2 (SM-2) algorithm to schedule reviews based on the user's performance.
If you struggle to recall a capital, the app brings it back quickly. If you know it well, it schedules the next review weeks into the future. It features a comprehensive offline database of countries, flags, and population data.
| Home & Progress | Flashcard Learning | Country Details |
|---|---|---|
![]() |
![]() |
![]() |
- 🧠 Spaced Repetition: Uses the SM-2 algorithm to calculate the optimal interval for memory consolidation.
- 📊 Progress Tracking: Visual charts using
fl_chartto monitor mastery levels over time. - 💾 Offline First: Complete country database stored locally using SQLite.
- 🌗 Dark Mode: Fully supported UI theming.
- Quality Feedback: 4-level rating system (Again, Hard, Good, Easy) directly influencing the scheduling algorithm.
- Framework: Flutter & Dart
- State Management:
rxdart(Reactive Streams) - Local Database:
sqflite(Raw SQLite interaction) - Dependency Injection:
get_it - Architecture: Service-based architecture separating UI, Logic, and Data.
The core logic revolves around the SuperMemo-2 algorithm. Every card has dynamic properties stored in the SQLite database:
- Interval (I): Days until next review.
- Repetition Factor (EF): Easiness factor, adjusted based on user rating (0-3).
- Repetitions (n): Correct streaks.
// Simplified Logic
NextInterval = PreviousInterval * EasinessFactor
NewEasinessFactor = OldEF + (0.1 - (5 - Quality) * (0.08 + (5 - Quality) * 0.02))This ensures that "hard" cards are shown frequently, while "easy" cards are pushed to long-term memory.
- Clone the repo
git clone https://github.com/libaum/effective_geo.git- Install dependencies
flutter pub get- Run
flutter run

