Privet uses a Spaced Repetition algorithm to speed up your learning.
Spaced repetition is a method for efficient learning that has you practice concepts or skills over increasing periods of time. It's based on the notion of a "forgetting curve," or the idea that over time, if we don't actively use or reflect on something we know, our knowledge decays.
With Privet, we help you stay ahead of that moment of forgetting, and we do it efficiently.
As you answer words correctly, we'll show you those words less frequently. If you guess the wrong answer, we'll give you more opportunities to practice that word. Learning has never been easier!
Front-end: React / Redux / CSS Grid [ repo ]
Back-end: [ repo ]
- Express.js server
- Node.js
- Passport/JWT for authentication
- MongoDB/Mongoose for data persistence
- Mocha/Chai for testing
https://privet-hello.herokuapp.com/
Username: privet
Password: learnrussian
- POST /api/login
- POST /api/refresh
- POST /api/users
- GET /api/users/progress
- PUT /api/users/reset
- GET /api/word
- POST /api/word
Example: POST https://example.com/api/login
Request body:
{
"username": "JohnSmith",
"password": "correct-horse-battery-staple"
}
[ more examples ]
Example: POST https://example.com/api/refresh
Response body:
{
"authToken": "A_VALID_JWT"
}
[ more examples ]
Example: POST https://example.com/api/users
Request body:
{
"name": "John Smith",
"username": "JohnSmith",
"password": "correct-horse-battery-staple"
}
Response body:
{
"id": "MONGO_DOCUMENT_ID",
"name": "John Smith",
"username": "JohnSmith"
}
[ more examples ]
Example: https://example.com/api/users/progress
Response body:
{
"questions": [
{
"russian": "Привет",
"translit": "pree-vyEt",
"english": "hello",
"score": "1",
"attempts": "1",
"sessionScore": "1",
"sessionAttempts": "1"
},
{ "repeat": "for" },
{ "each": "word" }
]
}
[ more examples ]
Example: PUT http://example.com/api/users/reset
Request body: empty
Response: status 200
[ more examples ]
Example: http://example.com/api/word
Response body:
{
"word": "Привет",
"translit": "pree-vyEt"
}
[ more examples ]
Example: POST http://example.com/api/word
Request body:
{
"answer": "hello" //_user_input
}
Response body:
{
"answer": "hello", //_answer_from_database
"correct": "true"
}
[ more examples ]