A Flutter mobile app for discovering, enrolling in, and practicing courses. Built with Firebase as the backend and featuring spaced repetition for long-term retention.
- Browse and search courses by category
- Enroll in courses and track progress through sections
- Multiple exercise types: MCQ, true/false, fill-in-the-blank, matching, open-ended, photo (AI-validated), and map-based
- Spaced repetition (SM-2 algorithm) for review scheduling
- Push notifications for review reminders
- Course recommendations via collaborative filtering
- Google Sign-In and email/password authentication
- Profile management with photo upload
- Admin dashboard for managing courses, sections, and exercises
- Course ratings and reviews
- Flutter (Dart SDK ^3.11.0)
- Firebase — Firestore, Auth, Storage, Messaging, Gemini AI
- Riverpod — state management (with code generation)
- GoRouter — navigation with bottom nav shell
- Freezed + json_serializable — immutable models
- Google Maps + Geolocator — map exercises
- Flutter SDK 3.11+
- A Firebase project with Firestore, Auth, Storage, and Messaging enabled
- Android Studio / Xcode for platform-specific builds
- A Google Maps API key (for map exercises)
-
Clone the repo
git clone <repo-url> cd "Deep Learn"
-
Install dependencies
flutter pub get
-
Firebase setup
The project uses FlutterFire CLI. If you need to reconfigure:
flutterfire configure
This generates
lib/firebase_options.dartwith your project's config. -
Run code generation (for freezed models and riverpod providers)
dart run build_runner build --delete-conflicting-outputs
-
Run the app
flutter run
lib/
core/
constants/ # App-wide constants and enums
errors/ # Failure classes
extensions/ # Dart/Flutter extensions
services/ # NotificationService (FCM + local)
theme/ # Colors, typography, theme data
utils/ # SM-2 algorithm, exercise scorer, validators
widgets/ # Shared widgets (CourseCard, CategoryChipBar, etc.)
features/
admin/ # Admin dashboard, course/section/exercise editors
auth/ # Login, register, Google sign-in, profile photos
courses/ # Course browsing, enrollment, exercises, reviews
home/ # Home feed, enrolled courses, CTA banner
practice/ # Spaced repetition review screen
profile/ # User profile, settings, notification preferences
search/ # Course and section search
app.dart # GoRouter config, bottom nav shell, MaterialApp
main.dart # Entry point (Firebase init, notifications, ProviderScope)
test/
core/ # Unit tests for utils, algorithms
features/ # Feature-level tests
Each feature follows clean architecture with three layers:
data/— Firestore datasources, models (DTOs), repository implementationsdomain/— Entities, repository interfacespresentation/— Screens, widgets, Riverpod providers
flutter testMIT License. See LICENSE for details.