A website application that allows you to take exams based on your knowledge notes
⚠️ The project is still under development and the first version will be released soon
'For learners, one of the best habits should be regular self-testing' - Make It Stick: The Science of Successful Learning
When I'm learning a new technology, I have the habit of taking notes and jotting down important information. It's a good habit, but I also have a bad habit of not enjoying reading the notes I've written (I'm not sure if this is the case for most people 🫣). This results in my notes becoming mere mementos without substantial use. That's why I choose to create an application that continuously prompts you with questions to review your note contents.
This project primarily focuses on question generation and answer detection based on user documentation. In the initial version, I've implemented a simplified version of the Ebbinghaus memory curve, which allows periodic reviews based on the accuracy of your answers.
When users create notes, they can upload associated documents. The application generates a set of questions from these documents, based on their content. These questions will be presented to the users in the future.
After users receive daily questions, they can provide answers. GPT will score, validate, and provide the correct answers. The score is determined by evaluating the correctness of the answers and the linked document (0 ~ 10 points). This score influences the subsequent Ebbinghaus review process.
I've implemented a simplified version of Ebbinghaus memory, currently consisting of only 8 lines of code. I plan to optimize this function further in the future.
Regarding the actual function, once GPT generates a test, the score is recorded and affects the future review date. Higher scores result in longer intervals until the next review.
Notes Management
is a module to oversee all uploaded documents. Within this module, you can delete or add new files to your uploaded notes. Note that deleting all documents under a note will clear the associated questions.
Random Question
is a module that randomly selects a question from the existing question bank. Implementation of this module enables this feature.
Note
is a virtual module generated in your app for each note you create. In this module, you can answer questions. Question pushing is implemented according to the Ebbinghaus memory curve. You will receive three types of question data:
-
Questions for Today's Review: As the name suggests, this data pertains to questions that need review on the current day for questions answered in the past.
-
Expired Questions: These are questions not completed within the required review timeframe on the same day, resulting in this data being collected.
-
New Questions: When the user-defined daily question count is not met from the above two data sets, this supplementary data set is pushed to the user.
Examine
is a central module where users answer questions, allowing GPT to score and validate answers. The module comprises three components:
-
Answer: Users enter their answers, and test content can be displayed after submission.
-
Last Record: Records the user's previous answer to the question and the detection outcome.
-
Document Content: This component displays the actual uploaded document content, serving as the basis and final answer for the question.
Contributions to the project are welcome! If you find a bug or have an idea for a new feature, please submit an issue or pull request.
AGPL-3.0 license © 2023-Present leyoonafr