stateDiagram-v2
direction LR
[*] --> Prompt: next due card
Prompt --> Reveal: try to recall
Reveal --> Rated: Forgot · Hard · Got it · Easy
Rated --> Prompt: more due and under the daily limit
Rated --> Done: none left
Done --> [*]: forecast for the coming days
reviews and the outbox in one transaction.| Setting | Effect | Stored in |
|---|---|---|
| Daily limit | Caps reviews per day; overflow rolls forward in due order | user_settings |
| Memory target | Desired retention for FSRS; higher means shorter intervals | user_settings |
| Forecast | Bar chart of cards due each day for the next week | computed |
| Recall rate | Real first-try recall over recent reviews, shown next to the target | computed |
success Showing the honest recall rate next to the target lets learners see whether their target is realistic and adjust it themselves.
Decks group boxes for focused review. There are three kinds:
| Kind | How it's made | Sync |
|---|---|---|
| Own | Learner picks boxes from the Shelf | Synced as a record; newest change wins |
| Topic | Follow a whole topic; new boxes in that topic join automatically | Stores only the topic id |
| Shared | Opened from a link | A snapshot fetched from /v1/decks/shared/:code, which can be saved as an own deck |
sequenceDiagram
participant A as Sharer
participant API as API
participant B as Friend
A->>API: POST /v1/decks/share (deck snapshot)
API-->>A: short code → link
A->>B: sends the link
B->>API: GET /v1/decks/shared/:code
API-->>B: name + box ids
B->>B: preview · save as own deck
Deleting a deck writes a tombstone (deleted), so the deletion syncs to every device like any other change.
${sch.nav()}