Skip to content

Repository files navigation

QuizInt — Gamified Mobile Learning Platform

Flutter Dart License: MIT

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.


📌 Overview

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.


✨ Key Features

  • 🎓 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.

📸 Product Screenshots

01. Learner Hub / Home 02. Quiz Selection 03. Interactive Quiz Engine
Learner Hub Quiz Selection Question Interface
04. Score & Results 05. Realtime Leaderboard 06. Instructor Analytics Suite
Quiz Result Leaderboard Analytics Suite

🛠️ Tech Stack

Language & Framework

  • Dart (3.10+)
  • Flutter (3.x Cross-Platform Framework)

State Management & Architecture

  • Provider (provider)
  • Service-Repository Pattern

Backend & Database

  • Supabase Cloud (supabase_flutter)
  • SharedPreferences (shared_preferences local persistence)

Hardware & Integrations

  • 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)

🏗️ System Architecture

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
Loading

📂 Project Structure

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

👥 Project Team & Contributions

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.

🚀 Getting Started

Prerequisites

  • Flutter SDK (^3.10.3)
  • Android Studio / Xcode
  • VS Code with Flutter Extension

Installation & Setup

  1. Clone the Repository:

    git clone https://github.com/RaihanHadriansyah21/quizint-learning.git
    cd quizint-learning
  2. Install Dependencies:

    flutter pub get
  3. 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.

  4. Launch Application:

    flutter run

📌 Project Status

Academic / Coursework Project — Mobile application prototype with local fallback data and Supabase-backed flows.

⚠️ Limitations

  • Supabase client configuration is currently stored directly in lib/main.dart instead 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.

📄 License

This repository is licensed under the MIT License.

About

Academic Flutter learning prototype with role-based quizzes, leaderboards, QR onboarding, PDF export, and Supabase integration.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages