DEV Community

Cover image for I Revived mQuiz: A Gamified Quiz App Built to Make Learning Addictive
Akinwumi Michael
Akinwumi Michael

Posted on

I Revived mQuiz: A Gamified Quiz App Built to Make Learning Addictive

GitHub “Finish-Up-A-Thon” Challenge Submission

This is a submission for the GitHub Finish-Up-A-Thon Challenge

What I Built

MQuiz is a gamified mobile quiz app built to make learning, trivia, and exam-style practice more engaging.

The project started as an older quiz app idea, but it needed a serious rebuild to become something that could feel like a real mobile product. For this challenge, I revived MQuiz by moving it into a new Flutter app, rebuilding the experience with a cleaner structure, and connecting it to a modern backend.

The new MQuiz app is built around the idea that quizzes should feel more like a game. Instead of only answering questions, users can progress, earn rewards, manage lives, use boosters, compete with others, join leagues, enter contests, and track their performance.

The current version includes:

  • Flutter mobile app built in a new apps/mobile/ project
  • NestJS API integration
  • Firebase authentication
  • Google sign-in
  • Apple sign-in
  • Phone OTP login
  • Guest mode
  • Profile setup flow
  • Game-style home dashboard
  • Category and subcategory quiz flow
  • Lives system
  • Coins system
  • XP and stage progress
  • Daily challenge card
  • Booster system
  • Booster store
  • Countdown timer during quizzes
  • Multiple-choice questions
  • Fun & Learn question mode
  • Guess the Word question mode
  • Image-supported questions
  • Quiz result screen
  • Share result feature
  • Mystery box reward trigger
  • Progress map
  • Leaderboard
  • Profile screen
  • Badges display
  • Referral code and native share
  • Coin history
  • Paystack payment flow
  • Apple in-app purchase setup
  • Live battle mode with Firestore sync
  • Battle result screen
  • League list, detail, quiz, and leaderboard
  • Contest list, detail, quiz, and result flow
  • Sponsor banner support
  • Active contest banner
  • Clean Material 3 design system
  • Light and dark theme support

The goal of MQuiz is to turn learning into a fun, competitive, and repeatable experience for students, quiz lovers, and casual learners.

Demo

APK Download: Download MQuiz APK

Demo Video: Watch MQuiz Demo

GitHub Repository: View Source Code

Screenshots:

App Screenshot

VS Code + GitHub Copilot

The Comeback Story

MQuiz was not originally in the shape I wanted it to be.

The older version was based on an existing CodeCanyon-style app structure. It gave me a starting point, but it was not the clean, scalable, original product I wanted to submit or continue building long-term.

The old version had several limitations:

  • The structure was not ideal for a full product rebuild
  • The app did not fully represent the experience I wanted for users
  • Some features were either incomplete or not connected properly
  • The user experience did not feel modern enough
  • The codebase needed a cleaner architecture
  • The app needed a stronger game-like flow
  • It was not ready as a primary mobile product for both Android and iOS

For the GitHub Finish-Up-A-Thon Challenge, I decided not to just polish the old app. I used the opportunity to properly revive MQuiz by rebuilding it as a new Flutter mobile app.

The new app now lives inside apps/mobile/, while the older lib/ app is being retired. The new Flutter app is now the primary delivery version for both Android and iOS.

That was the real comeback: MQuiz moved from an unfinished and older-style quiz app into a more complete, modern, game-like mobile experience.

What Changed

The biggest change was rebuilding the app around a cleaner product experience.

Instead of only having a basic quiz flow, I rebuilt MQuiz around the kind of features that make users come back:

  • Lives
  • Coins
  • Boosters
  • Streaks
  • XP
  • Stage progress
  • Daily challenges
  • Leagues
  • Contests
  • Leaderboards
  • Battles
  • Profile stats
  • Badges
  • Referrals
  • Rewards

I also connected the app to backend endpoints so the experience can become more server-driven and scalable.

The new backend integration includes endpoints for:

  • Lives
  • Boosters
  • Progress
  • Payments
  • Quiz data
  • User profile
  • Leaderboard
  • Leagues
  • Contests
  • Battle flow

The mobile app now uses a more organized feature-based structure, including:

  • Auth
  • Home
  • Quiz
  • Progress Map
  • Lives
  • Boosters
  • Battle
  • Leaderboard
  • Profile
  • Store
  • Leagues
  • Contests

This made the project easier to maintain and easier to continue after the challenge.

Core Features

Authentication

MQuiz supports multiple ways for users to get started:

  • Google sign-in
  • Apple sign-in
  • Phone OTP
  • Guest mode
  • First-time profile setup

This makes onboarding easier because users can choose the sign-in method that works best for them.

Game-Like Home Dashboard

The home screen was rebuilt to feel more like a mobile game dashboard.

It includes:

  • Greeting header
  • Coins counter
  • Lives counter
  • XP progress
  • Stage label
  • Category grid
  • Daily challenge card
  • Active contest banner
  • Sponsor banner
  • Battle call-to-action

The goal was to make the app feel exciting from the first screen.

Quiz Experience

The quiz feature supports different question experiences, including:

  • Standard multiple choice
  • Image-supported questions
  • Fun & Learn mode
  • Guess the Word mode
  • Countdown timer
  • Booster usage
  • Result summary
  • Score
  • Accuracy
  • Coins earned
  • Share result option

The quiz experience is designed to be simple enough for casual users but structured enough to support future exam practice and competitive learning.

Lives and Boosters

To make the app more engaging, MQuiz includes a lives system and boosters.

Users can lose lives, restore lives, use coins, and access boosters during gameplay.

Boosters include features such as:

  • Add more time
  • Skip question
  • 50/50 support

This makes the quiz experience more strategic and less flat.

Battle Mode

One of the biggest additions is live battle mode.

The battle feature uses Firestore sync so users can enter a competitive quiz experience with another player.

The battle flow includes:

  • Find opponent screen
  • Matchmaking state
  • Live battle screen
  • Real-time opponent progress
  • Quit guard
  • Auto-advance timer
  • Battle result screen
  • Win, lose, or draw result display

This feature helps MQuiz move beyond a normal quiz app into a more competitive game-based learning platform.

Leagues and Contests

MQuiz now supports leagues and contests.

The league feature includes:

  • Active league list
  • League detail screen
  • Join league flow
  • Daily league quiz
  • League quiz result
  • League leaderboard

The contest feature includes:

  • Contest list
  • Contest detail
  • Prize banner
  • Live contest status
  • Contest quiz
  • Contest result

These features are important because they give users a reason to return regularly and compete for progress.

Profile and Progress

The profile and progress features help users track their growth.

Users can view:

  • Quiz stats
  • Accuracy
  • Streak
  • Badges
  • Referral code
  • Coin history
  • Stage progress
  • Locked and unlocked stages

This helps turn quiz activity into a visible learning journey.

Store and Payments

MQuiz includes a store flow for coin packs and payments.

The app supports:

  • Coin pack listing
  • Paystack payment initialization
  • Paystack verification
  • Apple in-app purchase setup
  • Server-authoritative payment verification

This creates a foundation for monetization while keeping payment handling more secure.

My Experience with GitHub Copilot

GitHub Copilot helped me move faster while reviving MQuiz.

Because this was not a small one-screen app, I had to work across many areas: Flutter UI, Cubit state management, API services, Firebase auth, Firestore battles, payment flows, routing, models, and feature-based architecture.

Copilot helped me most when I used it as a coding assistant for focused tasks instead of asking it to build the entire app at once.

I used GitHub Copilot to help with:

  • Refactoring Flutter screens
  • Creating reusable widgets
  • Improving Cubit state flows
  • Writing model classes
  • Cleaning up API service methods
  • Improving feature folder structure
  • Debugging routing issues
  • Building UI states for loading, success, and error flows
  • Creating quiz interaction logic
  • Improving battle flow structure
  • Reducing repetitive code
  • Reviewing implementation patterns
  • Speeding up boilerplate work

Some of the most useful prompts were specific prompts such as:

  • “Refactor this Flutter screen into smaller reusable widgets.”
  • “Create a Cubit state structure for this feature.”
  • “Help me clean this quiz flow so the timer and answer selection are easier to manage.”
  • “Create a model class with Firestore serialization.”
  • “Improve this UI so loading, empty, and error states are handled clearly.”
  • “Help me structure this feature so it follows the same pattern as the rest of the app.”

Copilot helped me finish faster, but I still had to guide the product direction, review the code, test the flows, and make sure the app matched the MQuiz vision.

The main lesson was that Copilot is strongest when the developer already has a clear goal. It helped me move from unfinished work to a more complete product by speeding up the repetitive and structural parts of development.

Tech Stack

Mobile App

  • Flutter
  • Dart
  • GoRouter
  • Flutter Bloc / Cubit
  • Equatable
  • Dio
  • Material 3
  • SharedPreferences
  • Share Plus
  • URL Launcher
  • In-App Purchase

Backend and Services

  • NestJS API
  • Firebase Authentication
  • Firebase Firestore
  • Paystack
  • Apple In-App Purchase
  • Firebase configuration for Android and iOS

Development Support

  • GitHub
  • GitHub Copilot
  • Flutter Analyze
  • Feature-based architecture

Quality and Status

The new Flutter app has been organized as the primary mobile delivery version.

Important progress includes:

  • New Flutter project created
  • Android and iOS bundle ID set to com.togafrica.mquiz
  • Firebase files added for Android and iOS
  • GoRouter configured
  • API client connected to the NestJS backend
  • Design system implemented
  • App icon added
  • Splash screen implemented
  • Authentication screens implemented
  • Home dashboard implemented
  • Quiz flow implemented
  • Lives, boosters, progress, leaderboard, profile, store, leagues, contests, and battle features implemented
  • Firestore rules added for battle room access
  • Flutter analysis completed with no issues found in the new code

Some remaining production tasks are still outside the scope of this challenge submission, such as final App Store assets, TestFlight testing, and final store submission preparation.

What I Learned

This project taught me that reviving a project is sometimes more valuable than starting a new one.

MQuiz already had a vision, but it needed better execution. The challenge pushed me to turn it into a cleaner, more scalable, and more complete mobile app.

I also learned that gamification is not just about adding points. It is about designing a reason for users to continue.

For MQuiz, features like lives, boosters, leagues, contests, battles, leaderboards, and progress maps make the quiz experience feel more alive.

The biggest technical lesson was the importance of structure. Once the app was separated into clear features, it became easier to build, debug, and improve.

What’s Next

Next, I plan to continue improving MQuiz with:

  • Real device testing
  • More automated tests
  • Final app store assets
  • Privacy policy page
  • App Store Connect setup
  • Google Play release preparation
  • AI-powered question generation
  • Wrong-answer explanations
  • Exam prep mode for WAEC, JAMB, and NECO
  • Audio question support
  • Math question support
  • More original illustrations and lifeline icons
  • Stronger analytics
  • School/classroom challenge mode
  • More contest formats
  • More league seasons
  • Better reward balancing

MQuiz started as an unfinished quiz app, but it is now moving toward a full gamified learning and trivia platform.

Top comments (0)