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
| File | Purpose |
|---|---|
c-Areas/Kaspa Notes π€.md | Area note β next actions, incubation backlog |
d-Resources/Crypto/Kaspa/Resources.md | Kaspa learning resources and reference links |
d-Resources/Crypto/Kaspa/Glossary.md | Glossary 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
- Path:
~/projects/kaspa-notes - GitHub: https://github.com/smartgoo/kaspa-notes (private)
- Main branch:
main
Tech Stack
| Layer | Details |
|---|---|
| Framework | SvelteKit + Svelte 5 |
| Content | mdsvex (Markdown in Svelte) for page content |
| Styling | Tailwind CSS 4, @tailwindcss/typography |
| Icons | Lucide Svelte |
| SEO | Custom SEO.svelte component, super-sitemap, rehype plugins (slug, autolink-headings, external-links) |
| Hosting | Vercel (adapter-vercel) |
| Analytics | Vercel Analytics |
| Linting | ESLint + 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
- Each
.mdfile underKaspa Notes - Web/maps to a SvelteKit route - Route is derived entirely from the fileβs relative path: lowercase, spaces β hyphens
- The script reads YAML frontmatter (
title,description,updated) and body - It wraps the body in Svelte boilerplate (SEO, MdPageHeader, TableOfContents)
- Writes to
src/routes/{route}/+page.svx - 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... | Field | Required | Purpose |
|---|---|---|
title | Yes | Page title (used in SEO and header) |
description | Yes | One-line description |
updated | Yes | Last updated date (YYYY-MM-DD) |
nav_title | No | Override label in sidebar (defaults to title) |
nav_hidden | No | Set to true to exclude from sidebar nav |
skip_sync | No | Set 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
| Component | Details |
|---|---|
| Frontend | Vercel (auto-deploys from main) |
| RPC proxy | rpc.kaspanotes.com β proxies to Kaspa node, behind Cloudflare |
| Kaspa node | Runs on OVH VPS (shared with Kaspalytics infra) |
Git Workflow
- Always pull latest from
mainbefore starting work - Always develop in a feature branch β never commit directly to
main - Merge feature branch back to
mainfor 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.