{"id":21530688,"url":"https://github.com/nikodiaz/flashcards_api","last_synced_at":"2026-05-06T08:31:32.494Z","repository":{"id":263500486,"uuid":"887469914","full_name":"nikodiaz/Flashcards_API","owner":"nikodiaz","description":"This project allows users to study vocabulary at scheduled intervals, strengthening long-term memory","archived":false,"fork":false,"pushed_at":"2024-11-21T21:11:54.000Z","size":46856,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T19:21:24.451Z","etag":null,"topics":["csharp","dotnet","jwt-authentication","sqlite","xunit"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikodiaz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-12T19:54:28.000Z","updated_at":"2024-11-18T22:30:08.000Z","dependencies_parsed_at":"2024-11-18T22:40:10.450Z","dependency_job_id":"a8b20190-a887-4446-948c-dfcb6f581237","html_url":"https://github.com/nikodiaz/Flashcards_API","commit_stats":null,"previous_names":["nikodiaz/flashcards_api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nikodiaz/Flashcards_API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikodiaz%2FFlashcards_API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikodiaz%2FFlashcards_API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikodiaz%2FFlashcards_API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikodiaz%2FFlashcards_API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikodiaz","download_url":"https://codeload.github.com/nikodiaz/Flashcards_API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikodiaz%2FFlashcards_API/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264619456,"owners_count":23638454,"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":["csharp","dotnet","jwt-authentication","sqlite","xunit"],"created_at":"2024-11-24T02:09:46.806Z","updated_at":"2026-05-06T08:31:32.448Z","avatar_url":"https://github.com/nikodiaz.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vocabulary Flashcards\n\n**Description:** Allows users to study vocabulary at scheduled intervals, reinforcing long-term memory.\n\n# API Objectives\n\n- Allow users to:\n    - Create new flashcards with English vocabulary.\n    - Query their flashcards and view their progress status (level within the Leitner system).\n    - Update flashcard information (such as its meaning or usage example).\n    - Delete flashcards.\n- Implement spaced repetition logic to optimize word review time.\n\n## Database Structure\n\n### User\n\n| **Property** | **Type** | **Description** |\n| --- | --- | --- |\n| ID | GUID | Unique identifier |\n| Username | String | User's name |\n| Password | String | Account password |\n| Email | String | User's email |\n| Flashcards | List | Flashcards created by the user |\n\n### Flashcard\n\n| **Property** | **Type** | **Description** |\n| --- | --- | --- |\n| ID | GUID | Unique identifier |\n| UserID | GUID | Unique identifier of the user who created the flashcard |\n| Word | String | The word in English |\n| Definition | String | Definition or meaning of the word |\n| Example | String | Example of usage in a sentence |\n| Level | Int | Repetition level representing the*box*of the Leitner system |\n| Next_review_date | DateTime | Date of the next review |\n\n## Endpoints\n\n- **POST** `/flashcards`: Create a new flashcard.\n- **GET** `/flashcards`: Get all flashcards.\n- **GET** `/flashcards/{id}`: Get a flashcard by its ID.\n- **PUT** `/flashcards/{id}`: Update an existing flashcard.\n- **DELETE** `/flashcards/{id}`: Delete a flashcard by its ID.\n- **POST** `/flashcards/{id}/review`: Mark a flashcard as reviewed.\n- **GET** `/flashcards/due`: Get flashcards due for review.\n\n## Spaced Repetition Algorithm (Leitner Method)\n\n- When creating a flashcard, it is assigned to level 1 (daily review).\n- If the answer is correct, flashcards move to the next level with a longer interval.\n    - Level 1: Daily review.\n    - Level 2: Review after 3 days.\n    - Level 3: Weekly review.\n    - Level 4: Monthly review.\n- If the answer is incorrect, it returns to level 1 to reinforce memorization.\n- If the answer is average, it stays at the current level.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikodiaz%2Fflashcards_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikodiaz%2Fflashcards_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikodiaz%2Fflashcards_api/lists"}