How tokushi12/capstone-wizardfrac works
WizardFrac is a React game-based fraction assessment experience backed by a Spring service. Students log in, choose a character and island/stage, play fraction mechanics, then have gameplay and progress recorded for dashboard and leaderboard reporting. The README documents similar-fraction Same Container, dissimilar-fraction Butterfly Method, mixed-fraction handling, three themed islands and step-level diagnostics. Backend call evidence is strongest for lobby setup and progress persistence; unsampled routes and frontend API details are omitted or shown only where documented.
Main entry points: controller REST controllers · App.jsx App routing · DissimilarIslandGame.jsx Dissimilar island · HybridIslandGame.jsx Hybrid island
Components 26
Student access
- App routing
frontend/src/App.jsx - Login
frontend/src/pages/login.jsx - Character selection
frontend/src/pages/character-selection.jsx - Settings
frontend/src/pages/SettingsPage.jsx
Fraction gameplay
- Game lobby
frontend/src/pages/game-lobby.jsx - Similar island
frontend/src/pages/SimilarIslandGame.jsx - Dissimilar island
frontend/src/pages/DissimilarIslandGame.jsx - Hybrid island
frontend/src/pages/HybridIslandGame.jsx - Mixed conversion
frontend/src/components/ImproperToMixedGame.jsx - Drawing input
frontend/src/components/DrawingCanvas.jsx - Fraction tutorials
frontend/src/components/ButterflyTutorial.jsx - Audio controls
frontend/src/utils/audio.js
Progress and reporting
- Student dashboard
frontend/src/pages/StudentDashboard.jsx - Leaderboard
frontend/src/pages/Leaderboard.jsx
Backend services
- REST controllers
backend/src/main/java/com/WizardFrac/WizardFrac/controller - Student service
backend/src/main/java/com/WizardFrac/WizardFrac/service/StudentService.java - Character service
backend/src/main/java/com/WizardFrac/WizardFrac/service/CharacterService.java - Lobby service
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameLobbyService.java - Progress service
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameProgressService.java - Student records
backend/src/main/java/com/WizardFrac/WizardFrac/repository/StudentRepository.java - Game sessions
backend/src/main/java/com/WizardFrac/WizardFrac/repository/GameSessionRepository.java - Progress records
backend/src/main/java/com/WizardFrac/WizardFrac/repository/GameProgressRepository.java - Session model
backend/src/main/java/com/WizardFrac/WizardFrac/entity/GameSession.java - Progress model
backend/src/main/java/com/WizardFrac/WizardFrac/entity/GameProgress.java
Other components
- Student
- Relational database
Connections 45
- Student → App routing: opens
frontend/src/App.jsx - App routing → Login: routes to
frontend/src/App.jsx - App routing → Character selection: routes to
frontend/src/App.jsx - App routing → Game lobby: routes to
frontend/src/App.jsx - Login → REST controllers: authenticates
- Character selection → REST controllers: selects character
- Game lobby → REST controllers: starts session
- Game lobby → Similar island: launches
- Game lobby → Dissimilar island: launches
- Game lobby → Hybrid island: launches
- Similar island → Drawing input: uses input
frontend/src/pages/SimilarIslandGame.jsx - Dissimilar island → Drawing input: uses input
frontend/src/pages/DissimilarIslandGame.jsx - Hybrid island → Drawing input: uses input
frontend/src/pages/HybridIslandGame.jsx - Similar island → Mixed conversion: handles conversion
frontend/src/pages/SimilarIslandGame.jsx - Dissimilar island → Mixed conversion: handles conversion
frontend/src/pages/DissimilarIslandGame.jsx - Hybrid island → Mixed conversion: handles conversion
frontend/src/pages/HybridIslandGame.jsx - Dissimilar island → Fraction tutorials: renders
frontend/src/pages/DissimilarIslandGame.jsx - Hybrid island → Fraction tutorials: teaches mechanic
- Similar island → Audio controls: plays effects
frontend/src/pages/SimilarIslandGame.jsx - Dissimilar island → Audio controls: plays effects
frontend/src/pages/DissimilarIslandGame.jsx - Hybrid island → Audio controls: plays effects
frontend/src/pages/HybridIslandGame.jsx - App routing → Student dashboard: routes to
frontend/src/App.jsx - App routing → Leaderboard: routes to
- App routing → Settings: routes to
- REST controllers → Student service: delegates
backend/src/main/java/com/WizardFrac/WizardFrac/controller/StudentController.java - REST controllers → Character service: delegates
backend/src/main/java/com/WizardFrac/WizardFrac/controller/CharacterController.java - REST controllers → Lobby service: delegates
backend/src/main/java/com/WizardFrac/WizardFrac/controller/GameLobbyController.java - REST controllers → Progress service: delegates
backend/src/main/java/com/WizardFrac/WizardFrac/controller/GameProgressController.java - Student service → Student records: reads/writes
backend/src/main/java/com/WizardFrac/WizardFrac/service/StudentService.java - Character service → Student records: loads student
backend/src/main/java/com/WizardFrac/WizardFrac/service/CharacterService.java - Lobby service → Student records: loads student
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameLobbyService.java - Lobby service → Progress records: loads progress
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameLobbyService.java - Lobby service → Game sessions: saves session
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameLobbyService.java - Progress service → Game sessions: loads sessions
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameProgressService.java - Progress service → Progress records: updates progress
backend/src/main/java/com/WizardFrac/WizardFrac/service/GameProgressService.java - Game sessions → Session model: stores
backend/src/main/java/com/WizardFrac/WizardFrac/repository/GameSessionRepository.java - Progress records → Progress model: stores
backend/src/main/java/com/WizardFrac/WizardFrac/repository/GameProgressRepository.java - Student records → Relational database: persists
- Game sessions → Relational database: persists
- Progress records → Relational database: persists
- Similar island → REST controllers: submits gameplay
- Dissimilar island → REST controllers: submits gameplay
- Hybrid island → REST controllers: submits gameplay
- Student dashboard → REST controllers: requests reports
- Leaderboard → REST controllers: requests rankings