Updated:

Kaspa Notes β€” Web Site Context

Kaspa Notes is an educational documentation site for the Kaspa blockchain. Covers technical deep dives (covenants, vProgs, ZK, PSKT), ecosystem directory, glossary, and interactive RPC tools. Built and maintained by Charles Vallone (GitHub: smartgoo).

Live site: https://www.kaspanotes.com


Obsidian Context

FilePurpose
c-Areas/Kaspa Notes 𐀊.mdArea note β€” next actions, incubation backlog
d-Resources/Crypto/Kaspa/Resources.mdKaspa learning resources and reference links
d-Resources/Crypto/Kaspa/Glossary.mdGlossary terms and structure notes
d-Resources/Kaspa Notes - Web/This directory β€” Obsidian mirror of site pages (synced to SvelteKit)

Always check c-Areas/Kaspa Notes 𐀊.md for current priorities.


Local Repository


Tech Stack

LayerDetails
FrameworkSvelteKit + Svelte 5
Contentmdsvex (Markdown in Svelte) for page content
StylingTailwind CSS 4, @tailwindcss/typography
IconsLucide Svelte
SEOCustom SEO.svelte component, super-sitemap, rehype plugins (slug, autolink-headings, external-links)
HostingVercel (adapter-vercel)
AnalyticsVercel Analytics
LintingESLint + Prettier (with svelte and tailwind plugins)

Commands

npm run dev        # Local dev server
npm run build      # Production build
npm run preview    # Preview production build
npm run lint       # Check formatting (prettier + eslint)
npm run format     # Auto-format with prettier

Project Structure

src/
β”œβ”€β”€ app.html
β”œβ”€β”€ app.css
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ components/       # Reusable Svelte components
β”‚   β”‚   β”œβ”€β”€ RpcCall.svelte       # Interactive RPC tool
β”‚   β”‚   β”œβ”€β”€ CodeTabs.svelte      # Multi-language code blocks
β”‚   β”‚   β”œβ”€β”€ TableOfContents.svelte
β”‚   β”‚   β”œβ”€β”€ SEO.svelte
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ kaspa/            # Kaspa-specific logic
β”‚   β”‚   β”œβ”€β”€ rpc/          # RPC client
β”‚   β”‚   β”œβ”€β”€ rpc-methods.js
β”‚   β”‚   └── full/         # Full node connection utils
β”‚   β”œβ”€β”€ links.js          # Auto-generated sidebar nav (from sync script)
β”‚   β”œβ”€β”€ utils/
β”‚   └── highlighter.js    # Syntax highlighting config
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ ecosystem/        # Ecosystem directory
β”‚   β”‚   β”œβ”€β”€ cross-chain/
β”‚   β”‚   β”œβ”€β”€ explorers-&-analytics/
β”‚   β”‚   β”œβ”€β”€ l1-protocols/
β”‚   β”‚   β”œβ”€β”€ l2/
β”‚   β”‚   β”‚   β”œβ”€β”€ igra-labs/
β”‚   β”‚   β”‚   └── kasplex/
β”‚   β”‚   β”œβ”€β”€ news-sources-&-hubs/
β”‚   β”‚   β”œβ”€β”€ organizations/
β”‚   β”‚   └── wallets/
β”‚   β”œβ”€β”€ resources/        # Technical docs & reference
β”‚   β”‚   β”œβ”€β”€ covenants++/
β”‚   β”‚   β”œβ”€β”€ developer-resources/
β”‚   β”‚   β”œβ”€β”€ glossary/
β”‚   β”‚   β”œβ”€β”€ phantom-ghostdag/
β”‚   β”‚   β”œβ”€β”€ pskt-&-pskb/
β”‚   β”‚   β”œβ”€β”€ silverscript/
β”‚   β”‚   β”œβ”€β”€ vprogs/
β”‚   β”‚   └── zero-knowledge/
β”‚   β”œβ”€β”€ tools/            # Interactive tools
β”‚   β”‚   β”œβ”€β”€ rpc-calls/
β”‚   β”‚   └── rpc-subscriptions/
β”‚   β”œβ”€β”€ new-&-noteworthy/
β”‚   β”œβ”€β”€ llms.txt/
β”‚   └── sitemap.xml/
static/                   # Static assets

Content pages use .svx (mdsvex) files β€” Markdown with embedded Svelte components.


Obsidian β†’ SvelteKit Sync

Site content is authored in Obsidian at d-Resources/Kaspa Notes - Web/ and synced to SvelteKit via sync-from-obsidian.py in the repo root.

How it works

  1. Each .md file under Kaspa Notes - Web/ maps to a SvelteKit route
  2. Route is derived entirely from the file’s relative path: lowercase, spaces β†’ hyphens
  3. The script reads YAML frontmatter (title, description, updated) and body
  4. It wraps the body in Svelte boilerplate (SEO, MdPageHeader, TableOfContents)
  5. Writes to src/routes/{route}/+page.svx
  6. Generates src/lib/links.js β€” sidebar navigation data used by +layout.svelte

Obsidian file structure

Kaspa Notes - Web/
β”œβ”€β”€ Home.md                          β†’ src/routes/+page.svx (raw, no boilerplate)
β”œβ”€β”€ ecosystem/
β”‚   β”œβ”€β”€ Cross Chain.md              β†’ ecosystem/cross-chain/
β”‚   β”œβ”€β”€ Explorers & Analytics.md    β†’ ecosystem/explorers-&-analytics/
β”‚   β”œβ”€β”€ L1 Protocols.md             β†’ ecosystem/l1-protocols/
β”‚   β”œβ”€β”€ News Sources & Hubs.md      β†’ ecosystem/news-sources-&-hubs/
β”‚   β”œβ”€β”€ Organizations.md            β†’ ecosystem/organizations/
β”‚   β”œβ”€β”€ Wallets.md                  β†’ ecosystem/wallets/
β”‚   └── l2/
β”‚       β”œβ”€β”€ Igra Labs.md            β†’ ecosystem/l2/igra-labs/
β”‚       └── Kasplex.md              β†’ ecosystem/l2/kasplex/
β”œβ”€β”€ resources/
β”‚   β”œβ”€β”€ covenants++/
β”‚   β”‚   β”œβ”€β”€ Opcodes.md              β†’ resources/covenants++/opcodes/
β”‚   β”‚   └── Overview.md             β†’ resources/covenants++/overview/
β”‚   β”œβ”€β”€ Developer Resources.md      β†’ resources/developer-resources/
β”‚   β”œβ”€β”€ Glossary.md                 β†’ resources/glossary/
β”‚   β”œβ”€β”€ PHANTOM GHOSTDAG.md         β†’ resources/phantom-ghostdag/
β”‚   β”œβ”€β”€ PSKT & PSKB.md             β†’ resources/pskt-&-pskb/
β”‚   β”œβ”€β”€ SilverScript.md             β†’ resources/silverscript/
β”‚   β”œβ”€β”€ VProgs.md                   β†’ resources/vprogs/
β”‚   └── Zero Knowledge.md           β†’ resources/zero-knowledge/
└── tools/
    β”œβ”€β”€ RPC Calls.md                β†’ skipped (skip_sync: true)
    └── RPC Subscriptions.md        β†’ rpc-subscriptions/

Content format

Each .md file has YAML frontmatter + pure markdown. Dates use YYYY-MM-DD format and are localized client-side by FormattedDate.svelte.

---
title: Page Title
description: One-line description.
updated: 2026-01-24
nav_title: Custom Label
---

Body content here...
FieldRequiredPurpose
titleYesPage title (used in SEO and header)
descriptionYesOne-line description
updatedYesLast updated date (YYYY-MM-DD)
nav_titleNoOverride label in sidebar (defaults to title)
nav_hiddenNoSet to true to exclude from sidebar nav
skip_syncNoSet to true to skip syncing this file

Sidebar nav section is inferred from the top-level directory under Kaspa Notes - Web/ (e.g., ecosystem/ β†’ β€œEcosystem”, resources/ β†’ β€œResources”). Root-level files appear without a section header. Links are sorted alphabetically within each section.

Workflow

1. Write/edit in Obsidian
2. Run: python3 sync-from-obsidian.py
3. git diff to review
4. Commit & push β†’ Vercel deploys

Infrastructure

ComponentDetails
FrontendVercel (auto-deploys from main)
RPC proxyrpc.kaspanotes.com β€” proxies to Kaspa node, behind Cloudflare
Kaspa nodeRuns on OVH VPS (shared with Kaspalytics infra)

Git Workflow

  • Always pull latest from main before starting work
  • Always develop in a feature branch β€” never commit directly to main
  • Merge feature branch back to main for deployment β€” Vercel auto-deploys on merge

Maintenance

At the start of any session involving Kaspa Notes Web, verify this file is accurate:

  • Repo path, branch, and tech stack match reality
  • Site routes and content structure are current
  • Obsidian note references still exist

Flag any drift and offer to update before proceeding.