Authoring studio
Publish a note in three moves.
Compose every article as Learn, Calculate, and Apply. The studio builds a database-ready document in real time, so a note can move from idea to the archive without hand-editing code.
Start from a note
Load an existing note to edit it, or begin with a blank draft. Every field maps directly to the archive content model.
Essentials
Lowercase, hyphenated
Learn · sections
Used for the table of contents
Feeds the formula library
Calculate · interactive tool
The list is generated from the calculator registry, so every kind the app can render is selectable here. A bespoke widget needs a new file and a registry entry; a formula experiment is picked up automatically.
Apply · case study & questions
Practice questions
Publishing
Publish straight to the API, which validates the article and upserts it into the notes collection. Prefer a file? Export the seed JSON from the panel beside this one and import it with mongosh.
Live preview
Untitled note
Add a summary to see it here.
1
Sections
0
Formulas
0
Questions
MongoDB document
{
"_id": "untitled",
"schemaVersion": 1,
"createdAt": "2026-10-20",
"slug": "untitled",
"title": "Untitled note",
"summary": "",
"subject": "Corporate Finance",
"track": "foundations",
"level": "Foundation",
"tags": [],
"readingMinutes": 4,
"updatedAt": "2026-10-20",
"sections": [
{
"id": "overview",
"title": "Overview",
"paragraphs": []
}
],
"calculate": {
"kind": "growth"
},
"references": [
{
"label": "OpenStax · Principles of Finance (free textbook)",
"url": "https://openstax.org/details/books/principles-finance"
}
]
}The content model
One shape, every note.
Every article is a single document with three deliberate stages. The frontend never hard-codes an article; it renders whatever the document describes. That is what makes adding a note a content task, not a code change.
Learn
sections[] with paragraphs, optional formulas, and key-point callouts.
Calculate
calculate.kind selects an interactive widget from the registry.
Apply
apply.caseStudy plus numeric or multiple-choice questions with explanations.
Available calculators
Assign one of these kinds to a note, or add a new widget in src/components/learning/widgets.
IRR & payback
irr
WACC & CAPM
wacc
CVP & break-even
cvp
Bond pricing
bond
Dividend model
ddm
Leverage & EPS
leverage
Duration & sensitivity
duration
Risk & performance
portfolio-risk
Net present value
npv
Compound growth
growth
Break-even
break-even
Working capital
working-capital
From draft to database
- 01Fill the three stages in the studio above (or edit a seed file in
src/data/notes). - 02Export the seed JSON and upsert it into MongoDB using the note slug as
_id. - 03Swap the reads inside
src/lib/notes.tsfor database queries. Components do not change.
Full details are in the project documentation: content model, authoring guide, and the MongoDB seeding runbook.
Download note packs as JSON