Loren Lisk

A Choice for Note Independence

Shard: git-backed, graph-aware notes

Shard is a personal project: a self-hosted, Obsidian-style notes backend. Notes are plain markdown files with YAML frontmatter, stored in git repositories, and the graph of [[wikilinks]] between them is a first-class resource you can query through an API. The repo is private, so this page is the tour.

What it is

Architecture

SvelteKit frontend
editor, graph view, offline PWA
API clients
scripts and services over HTTP
↓   HTTP + WebSocket   ↓
Go API (Gin)
notes, graph, search, tags, webhooks
↓ ↓ ↓ ↓ ↓
Git storage
go-git
Graph engine
wikilinks
Search
Bleve full-text
Events
embedded NATS JetStream
Metadata
SQLite or PostgreSQL

The backend is Go with Gin, using go-git for storage and goldmark for markdown and frontmatter parsing. Note content lives in git repositories on disk; tags, audit records and webhook state go in SQLite by default (zero config) or PostgreSQL. Events flow through an embedded NATS JetStream, so there is no external broker to run. Tracing, metrics and structured logs come from OpenTelemetry, Prometheus and zap.

Interesting bits

How it ships

CI runs the Go tests under the race detector, scans with govulncheck, gosec and Trivy, validates the API against its OpenAPI contract, and runs Playwright end-to-end tests, k6 load tests and smoke tests against a throwaway kind cluster. Releases build multi-arch container images that are cosign-signed with SBOMs attached, and Flux GitOps deploys them onto the homelab cluster on the server rack.

Timeline

"If I had more time, I would have made this shorter."

Top Of Page