Wiki-RS

A Rust-based wiki system with 6 storage backends, built with Yew (WASM) and Axum

Rust WebAssembly Yew Axum SQLite Git

Live Demos

Ephemeral Wiki

Live

In-memory HashMap storage. Pages exist only during the browser session. Perfect for quick scratchpads.

Try it

Browser Memory Wiki

Live

Uses localStorage for persistence. Pages survive page refreshes and browser restarts.

Try it

Export/Import File Wiki

Live

Download your wiki as JSON, upload it later. Portable wiki you can carry as a file.

Try it

Server-Backed Variants

These require a running Rust server. Clone the repo and run locally.

Server File Wiki

Local only

Each page stored as a flat .md file on the server. Simple, inspectable, grep-friendly.

Port 7400

Server SQLite Wiki

Local only

Pages stored in a SQLite database with full timestamp support. Fast queries, single-file DB.

Port 7401

Server Git Wiki

Local only

Every save creates a git commit. Full version history of every page change, built on libgit2.

Port 7402

Features

Markdown Rendering Headings, bold, italic, lists, code blocks via pulldown-cmark
Wiki Links [[PageName]] syntax with red links for missing pages
Page Aging 5 visual tiers from Fresh to Ancient based on last edit time
Sub-wiki Theming CSS custom properties with 5 color themes by page prefix
Import/Conversion VQWiki and TiddlyWiki markup converters
XSS Protection Raw HTML filtered, wiki links in backticks not expanded

Screenshots

Main page
Main Page with wiki links
Page editor
Editing a page with Markdown
Saved page
Rendered page with formatting
All pages
All Pages index
Red link
Red link for nonexistent page

Running Locally

# Client-side wikis (requires trunk: cargo install trunk)
cd frontend/wiki-ephemeral && trunk serve      # port 7408
cd frontend/wiki-browser-memory && trunk serve  # port 7409
cd frontend/wiki-export-file && trunk serve     # port 7407

# Server-backed wikis (build WASM frontend first)
cd frontend/wiki-server-ui && trunk build
cargo run -p wiki-server -- --backend file --data-dir ./data/file   # port 7400
cargo run -p wiki-server -- --backend db   --data-dir ./data/db     # port 7401
cargo run -p wiki-server -- --backend git  --data-dir ./work/git    # port 7402