Clone
git clone https://codeberg.org/caniko/plinth.git && cd plinth
A full-stack personal website platform you can operate yourself.
Run a Leptos-powered site with server-side rendering, WASM hydration, Postgres-backed content, semantic search, Typst publishing, image proxying, and reproducible Nix deployment.
Serve fast first loads through Leptos SSR, then hydrate client-side islands for interactive navigation and controls.
Keep content in a relational database with pgvector-backed semantic search for posts, portfolio entries, activity, and tags.
Author posts in Markdown or Typst; the CLI handles frontmatter, image references, HTML rendering, embeddings, and publishing.
Upload images through the CLI, store them in Immich, and serve them through Plinth with cache-friendly proxy URLs.
Build reproducible packages and run Plinth through a NixOS module with systemd hardening and reverse-proxy support.
Configure OpenTelemetry export and privacy-friendly Plausible analytics without turning observability into an application rewrite.
The development flow is intentionally direct: enter the Nix shell, start the local services, run the Leptos watcher, and publish content through the CLI.
git clone https://codeberg.org/caniko/plinth.git && cd plinth
nix develop
./scripts/dev-db.sh start
cargo leptos watch
cargo run --package plinth-cli -- publish my-post.md
Plinth is meant for operators who want a personal site that is inspectable, reproducible, and integrated with the infrastructure they already control.
Nix builds produce the server package, CLI, static assets, documentation, and this marketing site from the same repository.
Shared domain types connect the server, client, CLI, and project-site tooling without stringly-typed boundaries.
The marketing page stays concise while the full mdBook documentation remains available under /docs/.