DATA STRUCTURES LEARNING TOOL
This application helps to solve the problem of learning new terminology by using a spaced-repetition algorithm learning technique that incorporates increasing intervals of time between subsequent review of previously learned material in order to exploit the psychological spacing effect. The application allows individual users to create their own account and tracks their progress through the content. Also included is a reset button to allow the user to start back at the beginning of the content at any time and reset their progress.
Deployed Version & Repos
Deployed Version: https://chasen-mitch-spacedrep-client.herokuapp.com
Client-side repo: https://github.com/thinkful-ei22/chasen-mitch-spacedRep-client
Server-side repo: https://github.com/thinkful-ei22/chasen-mitch-spacedRep-server
Tech Stack
Front-end technologies
- ReactJs, Redux, CSS
Server technologies
- NodeJs, JWT auth, Express
Data Persistence
- Mongo/Mongoose
Hosting/SaaS
- Heroku (client & api)
Development Environment
- Managed through Trello
- Sublime3, VS Code
- Postman
Data Persistence
- MongoDB
Hosting
- Heroku (client & api)
Additional Features Coming Soon
- Detailed progress summary
- Leaderboard with top scoring users
- Loyalty rewards for high Sscores
Routes
POST /api/users/
This route to create a user
Params:
- firstName: string
- username: string
- password: string
- email: string
Request
{
"firstName": string,
"username": string,
"password": string,
"email": string
}
Response
201 on success, 422 on error
POST /api/auth/login
This route is for logging in and retrieving auth token.
POST /api/auth/refresh
This route is for refreshing auth token.
GET /api/questions/
This route gets question at the head of the list.
Params:
- user.id: string
Request
{
"user.id": string
}
Response
{
"question": "_________ is a method of solving problems that involves a function calling itself.",
"answer": "recursion",
"explanation": "In each call, it breaks down the problem into smaller and smaller subproblems until you get to a small enough problem that it can be solved trivially. You can think of it as the process of defining a problem (or the solution to a problem) in terms of (a simpler version of) itself. It may be applied to several data structures and algorithms to solve problems, but by itself is not a data structure or an algorithm, it is a concept.",
"id": "5b9bc7d05779c62defd5b78f"
}
GET /api/questions/all
This route is to retrieve all questions in the list.
Params:
- user.id: string
Request
{
"user.id": string
}
Response
[
{
"question": "_________ is a method of solving problems that involves a function calling itself.",
"answer": "recursion",
"explanation": "In each call, it breaks down the problem into smaller and smaller subproblems until you get to a small enough problem that it can be solved trivially. You can think of it as the process of defining a problem (or the solution to a problem) in terms of (a simpler version of) itself. It may be applied to several data structures and algorithms to solve problems, but by itself is not a data structure or an algorithm, it is a concept.",
"id": "5b9bc7d05779c62defd5b78f"
}
]
POST /api/questions/
This route is to post answers to questions.
Params:
- user.id: string
- guess: string
Request
{
"user.id": string,
"guess": string
}
Response
Returns 200 on success, returns feedback based on correct/incorrect answer
POST /api/questions/reset
This route resets the answers for the entire set for the logged in user.
Params:
- user.id: string
Request
{
"user.id": string
}
Response
Returns 200 on success