Use Case
Fisimate is the client-side mobile application of a gamified Physics Learning Management System (LMS) designed for high school students. It serves as a visual, interactive platform that simplifies abstract physics concepts, helping students learn through structured study modules, searchable formula lists, gamified quizzes, and direct AI-powered study assistance. By fetching all dynamic course materials and rankings directly from the fisimate-api backend, the app maintains a lightweight, responsive interface optimized for learning on the go.
Key Features
- Material Bank — a structured catalog of physics chapters featuring a modular viewer that supports PDF modules and media-rich content
- Formula Directory — a fully searchable and browsable index of fundamental physics formulas and equations
- Gamified Question Bank — practice quizzes with a points-based gamification scoring system to make learning engaging
- AI Chatbot Assistant — an AI-powered tutor and practice question generator integrated directly into the chat interface (connected to the backend)
- Student Leaderboard — real-time student ranking system based on earned points to foster healthy, friendly competition
- Interactive Simulations — support for visual Unity-based physics simulations (motion, forces, friction) designed for execution inside Flutter (currently deactivated, displaying fallback placeholders)
- Profile & Auth — secure authentication sessions with token management, user photo updates, and password customization
Technical Architecture
Fisimate is built on a highly modular and robust frontend architecture using Flutter and Dart:
- State Management & Routing: Utilizes the GetX modular pattern for structured dependency injection, reactive state updates, and clean route management.
- Backend Communication: Interfaces with a custom RESTful API (
fisimate-api) to retrieve course databases, user accounts, and leaderboard states. - Embedded Game Engine Integration: Built support for embedding Unity Engine scenes (simulating block-and-pulley or vehicle friction models) inside Flutter’s widget tree using
flutter_unity_widgetand bidirectional Dart-C# event synchronization viaUnityWidgetController.
