# 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.