{"id":13457261,"url":"https://github.com/codeacme17/examor","last_synced_at":"2025-05-15T00:09:50.799Z","repository":{"id":180326686,"uuid":"664655564","full_name":"codeacme17/examor","owner":"codeacme17","description":"For students, scholars, interviewees and lifelong learners. Let LLMs assist you in learning 🎓","archived":false,"fork":false,"pushed_at":"2025-02-16T03:21:37.000Z","size":9756,"stargazers_count":1045,"open_issues_count":1,"forks_count":68,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-13T21:34:00.791Z","etag":null,"topics":["azure","claude2","ebbinghaus-memory","gpt-4","learning-app","openai"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codeacme17.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-10T13:07:04.000Z","updated_at":"2025-04-11T15:39:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"a9a45659-97a6-4a50-b63a-ca6bfecb9f7c","html_url":"https://github.com/codeacme17/examor","commit_stats":null,"previous_names":["codeacme17/examor"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeacme17%2Fexamor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeacme17%2Fexamor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeacme17%2Fexamor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeacme17%2Fexamor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeacme17","download_url":"https://codeload.github.com/codeacme17/examor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249206,"owners_count":22039029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","claude2","ebbinghaus-memory","gpt-4","learning-app","openai"],"created_at":"2024-07-31T08:01:37.554Z","updated_at":"2025-05-15T00:09:45.786Z","avatar_url":"https://github.com/codeacme17.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Web applications","开源项目","Open Source Projects","Knowledge Manager","App","UIs"],"sub_categories":["Other","知识管理","Knowledge Management","Web applications"],"readme":"\u003c/br\u003e\n\n\u003cp\u003e\n  \u003cimg width=\"245\" src=\"/docs/logo-text.png\" /\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/codeacme17/examor/blob/main/docs/zh-doc.md\"\u003e\n    \u003cimg height=\"21\" src=\"https://img.shields.io/badge/中文文档-7d09f1?style=flat-square\" alt=\"zh-cn\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/codeacme17/examor/blob/main/docs/ROADMAP.md\"\u003e\n    \u003cimg height=\"21\" src=\"https://img.shields.io/badge/ROADMAP-7d09f1?style=flat-square\" alt=\"roadmap\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/codeacme17\"\u003e\n    \u003cimg height=\"21\" src=\"https://img.shields.io/badge/Twitter_Follow-%23fff?style=flat-square\u0026logo=twitter\u0026logoColor=7d09f1\" alt=\"reddit\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.producthunt.com/posts/examor?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-examor\"\u003e\n    \u003cimg height=\"21\" src=\"https://img.shields.io/badge/Product%20Hunt-fff?style=flat-square\u0026logo=producthunt\u0026logoColor=7d09f1\" alt=\"producthunt\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/codeacme17/examor/blob/main/LICENSE\"\u003e\n    \u003cimg height=\"21\" src=\"https://img.shields.io/badge/License-AGPL--3.0-ffffff?style=flat-square\u0026labelColor=fff\u0026color=7d09f1\" alt=\"license\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]\n\u003e I am currently trying to refactor the project using next.js, and may support next.js deployment solutions in the near future. For more progress, please pay attention to the [dev-next](https://github.com/codeacme17/examor/tree/dev-next) branch.\n\n\u003cp\u003e\n  \u003cstrong\u003e\n   A website application that allows you to take exams based on your knowledge notes. Let you really remember what you have learned and written 🧠.\n  \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cimg src = \"https://github.com/codeacme17/examor/blob/main/docs/product-full.png?raw=true\"\u003e\u003c/img\u003e\n\n\u003c!--\n## 🗒️ Dev-plan for this weeks（10/16 - 10/22）\n\n- **Add `quesiton-bank` module**\n- Refactor the code of the project as a whole to improve code readability and extensibility\n--\u003e\n\n## 💡 Inspiration\n\n\u003e **For learners, one of the best habits should be regular self-testing** - _Make It Stick: The Science of Successful Learning_\n\nWhen 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.\n\n## 🏁 Start\n\n\u003e [!IMPORTANT]\n\u003e Highly recommend reading [Best Documentation Practices](https://github.com/codeacme17/examor/blob/main/docs/best-practices/en-best-practices.md) before uploading notes to optimize your document.\n\n#### Clone this repo\n\n```bash\ngit clone https://github.com/codeacme17/examor.git\ncd examor\n```\n\n#### Run docker compose\n\n```bash\ndocker compose up\n```\n\n\u003e Please make sure Docker is installed on your local machine, and ports `51717`, `51818`, and `52020` are available on your local host\n\nOpen `http://localhost:51818` in your browser to access Examor. (Due to optimization scheme for modules, it may be slow when loading the program or entering a certain page for the first time)\n\n## ✨ Features\n\n### Generate Issues from Documentation\n\nWhen 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.When creating notes, users can choose the types of questions they want to generate, providing them with a richer learning experience.\n\n### Answer Detection\n\nAfter 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.\n\n### Ebbinghaus Memory\n\n\u003e 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 (v0.1).\n\nRegarding 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.\n\n### Role Selection\n\n\u003e [!NOTE]\n\u003e Recommend to use the GPT-4 model for a stable experience.\n\n\u003cimg width=\"500\" src=\"/docs/screen-shot/en-role.png\" /\u003e\n\nRoles can provide more possibilities for question generation and assessment. You can set roles in the configuration page. For more information about various roles, it's recommended to refer to the [Role Manual](/docs/en-role.md).\n\n### Question Type Selection\n\nChoose the question type when creating notes.\n\n\u003cimg  width=\"400\"  src=\"/docs/screen-shot/en-question-type.png\" /\u003e\n\nWhen practicing questions, you can answer using different methods. The image below shows an example of a single-choice question.\n\n\u003cimg  width=\"700\"  src=\"/docs/screen-shot/en-question-type-answer.png\" /\u003e\n\n## 🧩 Modules\n\n### Question Bank (New in v0.4.0)\n\nIn the **Question Bank**, we've accumulated some high-quality document questions, including outstanding open-source documents and books like the default `vue-component` and `vue-apis`. Within this feature module, you can easily import these existing questions into your notes. Furthermore, we warmly welcome you to contribute more high-quality documents or books to enrich our question bank! For detailed contribution guidelines, please see [Contributing to the Question Bank](/docs/contribute/en-bank.md).\n\n### Notes Management\n\n`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.\n\n### Random Question\n\n`Random Question` is a module that randomly selects a question from the existing question bank. Implementation of this module enables this feature.\n\n### Note\n\n`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:\n\n- 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.\n\n- Expired Questions: These are questions not completed within the required review timeframe on the same day, resulting in this data being collected.\n\n- 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.\n\n### Examine\n\n`Examine` is a central module where users answer questions, allowing GPT to score and validate answers. The module comprises three components:\n\n- Answer: Users enter their answers, and test content can be displayed after submission.\n\n- Last Record: Records the user's previous answer to the question and the detection outcome.\n\n- Document Content: This component displays the actual uploaded document content, serving as the basis and final answer for the question.\n\n## ♻️ Update the Project\n\nWhen starting the project, the application checks for updates. If an update is required, the user will be notified. You can follow these steps to update:\n\n1. Export your notes, questions, or configuration items as a backup through the **Export Configuration and Notes** button on the personal settings page. This will export a file named `examor-data.xlsx`. You can view the file contents, **but it's not recommended to modify the file content**\n\n   \u003cimg width=\"700\" src=\"/docs/screen-shot/en-export-import.png\" /\u003e\n\n2. Pull the latest remote code updates to refresh your local project.\n\n3. Delete the existing Docker container and rebuild the project with the `docker compose up --build` command to incorporate the latest changes.\n\n4. Once the build is successful, navigate to the personal settings page, click the **Import File** button, and re-import the backed-up data into the project.\n\n\u003e The current updating process is based on my personal usage. It might not be the best way to update. If you have better update methods, please feel free to provide assistance in the issues section ❤️\n\n\u003c!--\n## 🤩 Star History\n\u003ca href=\"https://star-history.com/#codeacme17/examor\u0026Timeline\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=codeacme17/examor\u0026type=Timeline\u0026theme=dark\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=codeacme17/examor\u0026type=Timeline\" /\u003e\n    \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=codeacme17/examor\u0026type=Timeline\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n--\u003e\n\n## Contributing\n\n**Since the project is in a very early stage, there are still many problems and bugs in the project.** If you find a bug or have an idea for a new feature, please submit an issue or pull request. See more in [CONTRIBUTING](/CONTRIBUTING.md).\n\n## License\n\n[AGPL-3.0 license](/LICENSE) © 2023-Present [leyoonafr](https://github.com/codeacme17)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeacme17%2Fexamor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeacme17%2Fexamor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeacme17%2Fexamor/lists"}