# k-a/A-hoot! ## An Anki and Kahoot! replacement that gamifies studying This project is an attempt to engage students progressing through the 24 week online program at App Academy in interactive study sessions. This project will - Provide students with a portal to review material - Utilize websockets to provide an element of competition - Make use of GitHub's OAuth system to log in ## Features # Gamify Concept Review The current system of providing Anki decks to students can be somewhat counter productive. Anki requires extra config to enable students to continually review material as they desire. By default, Anki provides time spacing that goes beyond when a student will be required to have strong conceptual recall for Multiple Choice or Free Response sections of an assessment. This app will provide an engaging way to study on demand and work in extra review. With the recent changes to Kahoot!'s availability to large classroom sizes, we're left with exploring purchasing a subscription or pursuing an internal replacement. This project aims to explore the feasibility of building an engaging and enjoyable replacement by adding some extra features. Emulating the Kahoot model that students are so fond of, this app will give them lobbies to join for review (though students may choose to study solo by launching sessions alone). Students will earn a score based on how quickly questions are answered, final scores will exist on a leaderboard for others to see. A future iteration of this app may allow for modifiers to adjust scoring for students that don't perform as well against a timed prompt. # Module and Week Specific Review Students working their way through the program will have an opportunity to review important concepts and test their skills against each other. Students can choose the current Module they'd like to review, and select which weeks they'd like to review. Leaderboards will exist to track the highest scores for each week, students will be able to choose which results leaderboards show (all time, current month, current week, etc). # Lobbies supporting multiple players Utilizing websockets, students will be able to join games with each other by sharing lobby codes. Further, matchmaking will be implemented allowing users to join anonymously. Upon creating a study session (game lobby), students will be given the opportunity to mark their session as private and hide their lobby from matchmaking. Though we are utilizing web sockets, there are no plans to enable chat at this time. ## Typical User Experience # First Time The first time using this site, users will be prompted to login using their GitHub credentials similar to how Progress Tracker currently operates. Upon initial login, the backend server for the app will create a new user record tied to the student's GitHub. This user record will be tied to scorekeeping, records and all user functions on the app. # Subsequent Logins Upon returning to the app, students will find that their account has persisted through sessions. Students will be able to make use of an account portal to see game history and view their high scores. If the session has expired, they can reauthorize their login through GitHub. Currently, this are no plans to support a more robust account experience. Accounts are strictly for keeping track of game and score history. There are no plans to allow students to create aliases, provide full name information or update anything outside of what GitHub allows. Students will be able to use the account portal to delete their account record. Once deleted, all database entries tied to that student record are also deleted. # Joining a game After logging in, students can either enter a lobby code to join a game waiting to start or create a new lobby for others to join. Once a lobby is created, the game can begin whenever the game creator chooses. # Creating a lobby If a player chooses to start a new study session, they can select from a list of content what material the session should cover. This material will be categorized by the week in which it might be encountered in the full time online program. Subsequent iterations of this may choose to instead categorize by concept rather than week. Once all material is selected, a new lobby can be created with a randomly generated unique identifier. This identifier will be used to connect players game states' via web sockets and for scoreboard tracking after the game is complete. # Playing a game The game will proceed in a familiar fashion, with varying degrees of difficulty for multiple choice and true/false questions. Score is awarded by both selecting the correct answer and the amount of time left in answering the question. After all answers are in or time has expired, the correct choice is rendered on screen. # Post game A scoreboard is rendered for players, and afterwards they can see how well they did and find a record of their scores attached to their account on a home page or profile page.