Skip to content

MKhalidHossain/exam-platform-app

EJ Flutter App

EJ Flutter App is the mobile codebase behind an inspector exam preparation experience that combines authentication, exam unlocks, paid resources, quiz sessions, performance tracking, referrals, and profile management in a single Flutter application.

It uses a controller-driven structure with GetX for state management, GoRouter for navigation, http for API access, local persistence for session data, deep links for shared content, and Stripe for purchase flows.


Preview

A compact product flow showing home, unlock, resources, exam practice, results, and profile management.

Home Screen Professional Plan
Home
Unlock Exam Selection Dialog
Exam Unlock
Add-on Resource Checkout Dialog
Checkout Add-on
Resources Tab Overview
Resources
API 510 Resource Category List
Category List
API 510 Resource Details Unlocked
Resource Details
API 510 Resource Details Payment
Resource Payment
Exam Session Question 1
Exam Session
Exam Review Screen
Exam Review
Quiz Complete Results
Results
Performance Dashboard
Performance
Profile Screen
Profile

Download APK

Get the latest Android build
Download Android APK

Recommended next step after previewing the product flow. Open the APK link to install and test the latest mobile build.


Highlights

  • Authentication, onboarding, OTP verification, password reset, and remember-me login
  • Exam selection, unlock flows, subscription upsell, and Stripe-based payment handling
  • Resource browsing with category pages, detail pages, and PDF-based content delivery
  • Quiz sessions, review flow, score summary, and performance tracking
  • Referral and shared-link flows through app links
  • Persistent local session and installation identity handling

Tech Stack

  • Flutter and Dart
  • GetX for app state and controllers
  • GoRouter for route handling
  • http for API requests
  • shared_preferences and flutter_secure_storage for persistence
  • flutter_stripe for checkout flows
  • app_links for deep-link handling
  • syncfusion_flutter_pdfviewer for in-app PDF viewing

Project Structure

lib/
├── controllers/   # GetX controllers and app state orchestration
├── models/        # API models and domain entities
├── routes/        # GoRouter route definitions
├── services/      # API, auth, storage, referral, ebook, and exam services
├── utils/         # Constants, theme, colors, navigation helpers
└── views/         # Screens and reusable UI widgets

Main Flows

  • Auth: splash, onboarding, login, sign up, forgot password, OTP, reset password
  • Practice: home, quiz settings, exam session, review, results, performance
  • Resources: resource tab, category list, detail page, PDF viewer, purchase path
  • Account: profile, edit profile, change password, subscription, referral

Getting Started

Requirements

  • Flutter SDK
  • Dart SDK
  • Android Studio or VS Code with Flutter tooling
  • Android emulator, iOS simulator, or a physical device

Install

flutter pub get

Run

flutter run

Build

flutter build apk --release
flutter build ios --release

Configuration

Update the main runtime constants in lib/utils/app_constants.dart.

Important values:

  • AppConstants.apiOrigin
  • AppConstants.baseUrl
  • AppConstants.publicBaseUrl
  • AppConstants.appLinkScheme
  • AppConstants.stripePublishableKey

Theme and styling live in:

Notes

  • The screenshot assets in this README currently live under docs/screenshorts/.
  • The project uses GetX, not Riverpod.
  • The Stripe publishable key is currently defined in source; for production, it should move to a safer environment-based configuration.

About

Flutter app for inspector exam preparation with premium practice tests, study resources, referrals, performance tracking, and Stripe-powered unlocks.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors