An academic cross-platform learning prototype built with Flutter and Supabase, combining role-based quiz workflows, score feedback, optional device authentication, QR scanning, and PDF export.
QuizInt is an educational mobile application designed to turn passive reading into active, gamified retrieval practice. Built as an academic coursework project, the application offers class-based quiz management, interactive quiz runs with power-up mechanics, real-time leaderboards, and PDF analytics generation.
The app communicates with Supabase Cloud for authentication and data storage, while leveraging SharedPreferences for local data persistence and offline state caching.
- 🎓 Role-Based Workspaces:
- Learner Hub: Join classes via code/QR, run timed quizzes, activate power-ups, view score statistics and peer leaderboards.
- Instructor Workspace: Manage question banks, assign quizzes to classes, track student analytics, sync with Google Classroom, and export PDF gradebooks.
- Admin Center: Platform user oversight and system management.
- 🔐 Biometric Access: Optional device-level fingerprint or face check through
local_auth. - 📷 QR Code Scanner: Camera-based QR code scanner (
mobile_scanner) for rapid class onboarding. - ⚡ Interactive Quiz Power-Ups: In-game mechanics including Double Score, Freeze Timer, 50:50, and Second Chance (
PowerUpModel). - 📄 PDF Analytics Export: Automated gradebook and quiz summary report generation (
pdf&printing). - 📲 OTA Integration: Includes the Shorebird Code Push package and project configuration.
| 01. Learner Hub / Home | 02. Quiz Selection | 03. Interactive Quiz Engine |
|---|---|---|
![]() |
![]() |
![]() |
| 04. Score & Results | 05. Realtime Leaderboard | 06. Instructor Analytics Suite |
|---|---|---|
![]() |
![]() |
![]() |
- Dart (3.10+)
- Flutter (3.x Cross-Platform Framework)
- Provider (
provider) - Service-Repository Pattern
- Supabase Cloud (
supabase_flutter) - SharedPreferences (
shared_preferenceslocal persistence)
- Local Authentication (
local_auth) - Mobile Camera Scanner (
mobile_scanner) - PDF & Printing Engine (
pdf,printing) - Google API & Sign-In (
google_sign_in,googleapis) - Shorebird OTA (
shorebird_code_push)
flowchart TD
subgraph Client["Flutter Mobile App"]
UI["Flutter Reactive Views"]
Providers["Provider State Management"]
LocalCache["SharedPreferences Cache"]
Plugins["Native Plugins (Biometrics, Camera Scanner, PDF)"]
end
subgraph Backend["Supabase Cloud Infrastructure"]
Auth["Supabase Authentication"]
DB[("PostgreSQL Database")]
end
UI --> Providers
Providers <--> LocalCache
Providers <--> Plugins
Providers -->|"Authenticate"| Auth
Providers <-->|"Fetch & Sync Quizzes, Results"| DB
quizint-learning/
├── lib/
│ ├── main.dart # Application entry point & Supabase init
│ ├── core/ # App themes and shared widgets
│ ├── data/
│ │ ├── models/ # User, Quiz, Question, Attempt, PowerUp models
│ │ ├── providers/ # Auth, Mahasiswa, Dosen, Admin, Gameplay providers
│ │ └── services/ # DB, Auth, File, Update & Google Classroom services
│ └── presentation/ # UI screens divided by persona
│ ├── admin/ # Admin dashboard & management
│ ├── auth/ # Splash, Login, Register, Forgot Password
│ ├── dosen/ # Instructor analytics, CRUD, classroom sync
│ └── mahasiswa/ # Learner dashboard, gameplay, results, leaderboard
├── assets/ # App logos and media assets
├── docs/screenshots/quizint/ # Application screenshots
└── pubspec.yaml # Flutter package manifest & dependencies
This application was developed collaboratively as a team project:
- Mohammad Raihan Hadriansyah Prasetya: Mobile Application Developer — Led the implementation and development of the Flutter codebase, core quiz gameplay engine, Provider state management, Supabase database integration, biometric auth, camera QR scanner, and user interface flows.
- Mayang: Product Manager & Requirements Specialist — Spearheaded product planning, Product Requirements Document (PRD) specification, feature scope definition, project coordination, and implementation monitoring against functional requirements.
- Flutter SDK (
^3.10.3) - Android Studio / Xcode
- VS Code with Flutter Extension
-
Clone the Repository:
git clone https://github.com/RaihanHadriansyah21/quizint-learning.git cd quizint-learning -
Install Dependencies:
flutter pub get
-
Environment Configuration: The current prototype reads its Supabase URL and publishable client key from constants in
lib/main.dart:const String supabaseUrl = 'https://<your-project-ref>.supabase.co'; const String supabaseAnonKey = '<your-publishable-anon-key>';
A Supabase publishable/anonymous key is expected to be visible in a client application and must be protected by appropriate Row Level Security policies. Never place a service-role or server secret in the Flutter source.
-
Launch Application:
flutter run
Academic / Coursework Project — Mobile application prototype with local fallback data and Supabase-backed flows.
- Supabase client configuration is currently stored directly in
lib/main.dartinstead of being injected at build time. - The repository contains only a small Flutter test surface and does not establish comprehensive end-to-end coverage.
- Google Classroom and Shorebird functionality depends on external account/project configuration that is not included.
- This is an academic prototype, not a production learning-management system.
This repository is licensed under the MIT License.





