Open-source · github.com/YuZh98/notebuilder
Study material that does something. Build notebooks from reactive cards, drill them in Study mode, and hand them to anyone as a single offline file.

Download for macOS (Apple silicon, v0.3.0) · Website and live demo. Notebooks live in a local SQLite database on your machine; nothing is sent anywhere.
Who is this for?
- Students and self-learners who want flashcards that flip, quizzes that check themselves, practice problems with fresh numbers every attempt, and a progress meter that fills as they finish cards.
- Teachers and tutors who want to send one file that works in any browser, offline, with nothing to install, that remembers each student’s progress and hands back a results summary.
- Anyone explaining something quantitative. A slider, a formula, and a chart in one card wire together and react live. Drag the slider, watch the curve move.
Why not a document?
| Problem | Static notes | NoteBuilder |
|---|---|---|
| Self-testing | Re-reading, highlighting | Flashcards flip, quizzes grade themselves, practice problems redraw their numbers |
| Quantitative intuition | A pasted screenshot of a plot | Slider drives formula drives chart, live, per card |
| Knowing where you stand | Gut feeling | Per-reader progress meters count what you have actually finished |
| Sharing | Recipient needs your app or an account | One self-contained .html that opens offline in any browser |
| Authoring cost | Hours per lesson | Any chat AI drafts it from the built-in prompt; you review the drafts |
How it works
Cards are built from slots. A card is a small stack of primitives on a 12-column grid: text, slider, formula, chart, choice, practice problem, table, code, image, checklist, text answer, progress. Slots in the same card share variables; dependencies resolve by topological sort, and cycles or missing writers are caught at import.
Edit and Study are hard-separated. Edit shows structure and configuration; Study is the rendered, interactive result. Cmd+Enter flips between them.
Any AI can draft a notebook. + → From AI… writes a complete prompt for ChatGPT, Claude, Gemini, or any other chat AI. Paste the reply back; NoteBuilder validates it, explains any problems with where and how to fix them, and marks every new card as a draft until you review it. No AI runs inside the app, and the notebook format is published.
Sharing is a file. Export a notebook as a self-contained Reader .html. The recipient reads and interacts; their answers and progress are saved in their own browser, and My results gives them a summary to send back.
![]() | ![]() |
|---|---|
| Edit mode: every slot becomes its configuration fields. | The shared .html in a plain browser: authoring chrome is gone, and the reader’s state is their own. |
Engineering
- Stack: Svelte 5 + TypeScript (strict) front end in a Rust Tauri 2 shell; SQLite storage with migrations; native print and dialogs.
- Durable saves: every database access rides one queue, each save is a single transaction, and saves survive a crash or a Cmd+Q. Persisted-shape changes ship a migration, so old files keep loading.
- Security: no
evalon user content; formulas run through a small purpose-built expression evaluator, all user text is escaped before Markdown or KaTeX rendering, and SQL is parameterized throughout. - Tests: 2,718 tests across 204 files, svelte-check clean, CI on every push. Source-level guard tests lock architectural invariants so regressions fail loudly.
License
MIT.

