A fully featured Learning Management System mobile app built for Internee.pk as an internship task. Built with Flutter, featuring 6 complete IT courses with topic-wise video lessons, quizzes, progress tracking, and certificates.
Add your own screenshots here after building the app
| Feature | Details |
|---|---|
| 🎓 6 IT Courses | Flutter, Python, React, ML, Figma, Node.js |
| 🎬 Topic-wise Lessons | 12 lessons per course, each with its own YouTube video |
| 📊 Progress Tracking | Per-lesson tracking saved on device with SharedPreferences |
| 🧠 Course Quizzes | 8 course-specific questions, 5-minute timer, 60% to pass |
| 🏆 Certificates | Earned on 100% course completion, preview + download as PDF |
| 👤 Profile Dashboard | Stats, progress report, quiz history |
| 🌙 Dark Mode | Full light/dark theme support |
| 📱 Responsive | Mobile, tablet, and desktop layouts |
Flutter 3.x — Cross-platform UI framework
Provider — State management
GoRouter — Navigation
youtube_player_flutter — Native video player (Android/iOS)
SharedPreferences — Local data persistence
Open Trivia DB API — Quiz questions (free, no key needed)
Google Fonts (Poppins) — Typography
flutter_animate — Animations
- Flutter SDK
>=3.3.0— Install - Android Studio or VS Code with Flutter extension
# Clone the repository
git clone https://github.com/YOUR_USERNAME/internee-lms.git
cd internee-lms
# Install dependencies
flutter pub get
# Run on connected device or emulator
flutter run
# Build APK
flutter build apk --releaselib/
├── main.dart # App entry + router
├── models/
│ └── models.dart # Course, Lesson, Quiz, User models
├── providers/
│ ├── auth_provider.dart # Auth + progress state (SharedPreferences)
│ ├── course_provider.dart # Course data from constants
│ └── quiz_provider.dart # Quiz state + timer
├── services/
│ └── api_service.dart # Open Trivia DB integration
├── screens/
│ ├── auth/ # Login & Register
│ ├── home/ # Dashboard
│ ├── courses/ # Course list, detail, lesson player
│ ├── quiz/ # Quiz + results
│ ├── profile/ # Profile, progress report
│ └── certificates/ # Certificate viewer + download
├── utils/
│ ├── app_theme.dart # Colors, typography, theme
│ ├── constants.dart # All 6 courses + lessons data
│ └── app_router.dart (or main.dart) # Route definitions
└── widgets/
└── widgets.dart # Shared widgets + R responsive helper
- Click "Mark Watched" on each lesson after watching the video
- Progress is saved locally with
SharedPreferences— no backend needed - Complete 100% lessons → course marked complete → certificate unlocked
- Mobile (Android/iOS): Videos play natively inside the app using
youtube_player_flutter - Web/Chrome: Click the play button to watch on YouTube
- Only unlocked after 100% course completion
- Preview button → view inside app (mobile) or new tab (web)
- Download button → opens in browser, press Ctrl+P to save as PDF
- 8 course-specific questions per course
- 5-minute timer
- 60% passing score
- Unlimited retakes
- +20 points for passing
| API | Purpose | Auth Required |
|---|---|---|
| Open Trivia DB | Quiz questions | ❌ Free, no key |
| YouTube (thumbnails) | i.ytimg.com for video thumbnails |
❌ Public URL |
| Google Fonts | Poppins font | ❌ Free CDN |
# Android APK
flutter build apk --release
# Android App Bundle (Play Store)
flutter build appbundle --release
# iOS (requires macOS + Xcode)
flutter build ios --release
# Web
flutter build web --releaseThis project uses no API keys, no Firebase, and no backend. All data is stored locally on the device. Safe to push to public GitHub.
This project was built as an internship task for Internee.pk.
Muhammad Hamza Ali Flutter Developer Intern @ Internee.pk