Developer home

Build on Marknote.

Marknote is extended with data, not code: a theme is one JSON file, a plugin is a manifest and a sandboxed script, and both are reviewed in the open before they reach the marketplace. This page is the map. It is also what marknote.dev opens.

Guides

Endpoints and hooks

Public, anonymous, and stable. Nothing here needs an account.

Endpoints and hooks

What Where Notes
Theme marketplace index /themes/index.json What the app's gallery fetches. Every entry carries the file's SHA-256, computed from the file the site serves, so it can never drift.
Install a theme from a link marknote://install-theme?url=…&sha256=… Only https URLs on marknote.md are accepted, the download is checked against the hash, validated, and the app asks before installing. Nothing from the link itself is trusted.
Open the app from a link marknote://new, marknote://open, marknote://journal New note, open a file, today's journal page.
Service status /status.json The status page as JSON: overall state, each service, response time and 24 h uptime. Probed every 30 seconds.
Theme lint tools/ThemeLint The same validator, sanitiser and contrast check the app runs, as a console tool. It's what the themes repo runs on every pull request.
dotnet run --project tools/ThemeLint -- path\to\theme.json
On GitHub

The organisation is wearemarknote. Submissions are pull requests; the tracker is public.

Repositories

The rules everything here follows

  • Data, not code. A theme cannot run anything. A plugin runs only in a sandbox with no network and no disk. The app validates before it trusts.
  • Nothing phones home. The marketplace index is fetched when you open the gallery, never at launch, and never with an identity.
  • Free for everyone. Themes and plugins have no tier and no paywall. Reviewed in public, credited to their authors.

Questions that the guides don't answer: support@marknote.md.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.