Goal
- To create the functionality for a first-class games integration so the application can track game completion/scores for students
Context
EndsideOut maintains a library of custom React games outside of this application. Each game has a unique URL slug and is built for a specific ContentModule in the EndsideOut curriculum.
This integration lets EndsideOut admins manage the explicit link between an externally-hosted game and a ContentModule in our app. Creating a Game record associates it with a ContentModule — so once a course/classroom is built using that module, the linked game becomes available to students in that module, the same way a Link is today.
Rather than sending students off-site, we iframe the game on a show page within our own app so students never leave the app to play. Because the games post their session/score data back to us via JSON endpoints, our app becomes the source of truth for game results — which student played which game, and what they scored.
This replaces the existing game option on Link#link_type — games get their own model and their own management flow instead of being a generic link.
Included Features
- Adding a new
Game model, associated with a ContentModule, with a unique slug
- Removing the
game link_type on Link in favor of Game
- Adding a new
GameSession model to track a student's play of a game
- Adding CRUD actions for game sessions
- Adding JSON endpoints so EndsideOut games can post session/score events to our app
Goal
Context
EndsideOut maintains a library of custom React games outside of this application. Each game has a unique URL slug and is built for a specific ContentModule in the EndsideOut curriculum.
This integration lets EndsideOut admins manage the explicit link between an externally-hosted game and a ContentModule in our app. Creating a
Gamerecord associates it with a ContentModule — so once a course/classroom is built using that module, the linked game becomes available to students in that module, the same way aLinkis today.Rather than sending students off-site, we iframe the game on a show page within our own app so students never leave the app to play. Because the games post their session/score data back to us via JSON endpoints, our app becomes the source of truth for game results — which student played which game, and what they scored.
This replaces the existing
gameoption onLink#link_type— games get their own model and their own management flow instead of being a generic link.Included Features
Gamemodel, associated with aContentModule, with a unique sluggamelink_type onLinkin favor ofGameGameSessionmodel to track a student's play of a game