graph LR
Plugin_Core_Settings["Plugin Core & Settings"]
Vault_Data_Flashcard_Parser["Vault Data & Flashcard Parser"]
Spaced_Repetition_Engine["Spaced Repetition Engine"]
Review_Session_Queue_Manager["Review Session & Queue Manager"]
User_Interface["User Interface"]
Unclassified["Unclassified"]
Plugin_Core_Settings -- "Initializes data loading, provides configuration" --> Vault_Data_Flashcard_Parser
Plugin_Core_Settings -- "Registers commands, initializes review flow" --> Review_Session_Queue_Manager
Plugin_Core_Settings -- "Initializes UI components, provides settings for display" --> User_Interface
Vault_Data_Flashcard_Parser -- "Provides card data for scheduling updates" --> Spaced_Repetition_Engine
Vault_Data_Flashcard_Parser -- "Supplies parsed cards and notes for review queues" --> Review_Session_Queue_Manager
Spaced_Repetition_Engine -- "Returns updated schedule information for persistence" --> Vault_Data_Flashcard_Parser
Review_Session_Queue_Manager -- "Requests next card, sends updated card data for persistence" --> Vault_Data_Flashcard_Parser
Review_Session_Queue_Manager -- "Sends review responses for schedule calculation" --> Spaced_Repetition_Engine
Review_Session_Queue_Manager -- "Communicates review session state, requests UI updates" --> User_Interface
User_Interface -- "Triggers review sessions, sends user responses" --> Review_Session_Queue_Manager
User_Interface -- "Updates plugin settings" --> Plugin_Core_Settings
click Plugin_Core_Settings href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/obsidian-spaced-repetition/Plugin_Core_Settings.md" "Details"
click Vault_Data_Flashcard_Parser href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/obsidian-spaced-repetition/Vault_Data_Flashcard_Parser.md" "Details"
click Spaced_Repetition_Engine href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/obsidian-spaced-repetition/Spaced_Repetition_Engine.md" "Details"
click Review_Session_Queue_Manager href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/obsidian-spaced-repetition/Review_Session_Queue_Manager.md" "Details"
click User_Interface href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/obsidian-spaced-repetition/User_Interface.md" "Details"
The project is an Obsidian plugin for spaced repetition, designed to manage flashcards and notes for review. The core functionality revolves around loading and parsing notes, applying spaced repetition algorithms, managing review queues, and providing a user interface for interaction. The SRPlugin class in src/main.ts acts as the central orchestrator, initializing various components like settings, data stores, review handlers, and UI elements. Data flow primarily involves the Vault Data & Flashcard Parser reading and writing note content, which is then processed by the Spaced Repetition Engine to update schedules. The Review Session & Queue Manager uses this data to present cards to the user via the User Interface, which in turn sends user responses back for schedule updates.
Plugin Core & Settings [Expand]
Manages the plugin's lifecycle within Obsidian, including initialization, command registration, and persistent settings management.
Related Classes/Methods:
Vault Data & Flashcard Parser [Expand]
Responsible for scanning the Obsidian vault, loading notes, parsing flashcards from note content, organizing them into a hierarchical deck structure, and writing updated schedule information back to notes.
Related Classes/Methods:
Spaced Repetition Engine [Expand]
Implements the core spaced repetition algorithms (e.g., OSR) to calculate and update flashcard schedules based on user review responses.
Related Classes/Methods:
Review Session & Queue Manager [Expand]
Orchestrates the interactive flashcard review sessions, presents cards, processes user input, and manages the queue of notes and cards due for review, including opening the next note.
Related Classes/Methods:
User Interface [Expand]
Provides all user-facing elements for interacting with the plugin, including the flashcard review modal, sidebar, and settings interface.
Related Classes/Methods:
FlashcardModal:392-411SRTabViewOsrSidebarSRSettingTab
Component for all unclassified files and utility functions (Utility functions/External Libraries/Dependencies)
Related Classes/Methods: None