Skriuw Documentation

Skriuw

A lightweight, fast, feature-rich personal knowledge base, a blend of Obsidian and Notion, built on Next.js and Tauri for native, sub-6 MB desktop binaries.

Skriuw (noun)
/skrɪu̯/ - Frisian, “to write.”

Skriuw is a personal knowledge base for people who would rather not reach for the mouse. It's minimal by default and feature-rich when you ask it to be, and because the desktop client is built on Rust and Tauri, the whole thing ships as a native binary under 6 MB.

Size isn't the only reason it feels fast. Skriuw is keyboard-first: you can move through the entire app without touching a mouse, and every binding is customizable. See Shortcuts for the full list.

Run it your way

You choose where your notes live, and the app works the same either way:

  • Hosted cloud - sign in with email and password, or GitHub and Google OAuth. Nothing to set up.
  • Self-hosted - Skriuw is fully open source, and ships with a Docker setup for your own infrastructure or a serverless deploy.
  • Fully local - a storage adapter writes your notes as plain .md files wherever you point it. No database, no telemetry.

There's a web app and a native desktop app, and both talk to the same WorkspaceBackend adapter, so feature code never branches on where your data lives.

For more background, see the README.

Explore the docs

Stack & technology

Skriuw started as a web monolith: Next.js 16, React 19, TypeScript, Tailwind CSS, and PostgreSQL via neon.tech. It later moved to Prisma as the data layer.

The desktop client is Rust on Tauri 2.0. That addition also pushed the project into a Bun-managed monorepo built with Turbopack.

Desktop integration

The desktop build doesn't ship the Next.js front-end - that surface is built around API routes and server actions, which don't translate to a native binary. Instead, web-spa is a client-only React SPA that re-renders whatever was Next.js-specific or server-rendered, while sharing one platform-agnostic layer (UI, hooks, utilities, and read-only actions) with the web app.

Approach

Skriuw follows a domain-driven, feature-sliced structure, written in a functional style rather than OOP. See Development features for the full list of feature domains.

Back-end access goes through a single adapter interface (WorkspaceBackend) with three implementations - server, local, and Tauri - so feature code never branches on auth state or platform. See Architecture for the full contract.

On this page