TP282 min read

a wiki with a review step

why stillwiki keeps drafts private and makes every page pass a reviewer before it goes live.

most wikis publish the moment you hit save. that sounds convenient, but it changes what people write. if a half-finished paragraph goes live as soon as you stop typing, you only write down things you’re already sure about.

i wanted the opposite, so stillwiki has two rules:

  1. your drafts are private. you can work on a page for a week and nobody sees it until you submit it.
  2. publishing needs a reviewer. someone with the reviewer role reads it first, then it goes live.

i built it as the internal knowledge base at work first, then pulled it out into its own open-source project.

we already work this way with code. nobody merges to main without a review, and nobody calls that bureaucracy. somehow docs are the one place where anyone can push straight to production.

the review isn’t really about typos. a page that someone other than the author has read is usually a better page. the reviewer asks “what does this mean?” at least once, and the answer ends up in the text.

private drafts matter just as much. with a review step but no private drafts, people write in google docs and paste the finished page in at the end. the draft should live where the page will live.

here’s what’s in it:

  • markdown in and out, with a split editor and live preview. you can bulk import and export everything as markdown files with frontmatter, so leaving is as easy as moving in.
  • four roles (admin, editor, reviewer, viewer), plus optional access tags on individual articles.
  • version history for published pages, a trash you can restore from, and an audit log.
  • postgres full-text search with fuzzy matching, and bookmarks.
  • an optional “ask the kb” feature using pgvector and any openai-compatible endpoint. it’s off by default.

it runs on supabase: postgres, auth, storage and row-level security. the row-level security policies are what actually keep drafts private. the small express api in front mostly writes audit logs, so even if the api has a bug, the database won’t hand out someone’s draft.

everything ships as one docker image that you point at a supabase project. the free tier is plenty for a team, and one person can set it up on a saturday.

it’s deliberately small: no databases, no boards, no comment threads on every paragraph. just pages people read, with a review step borrowed from code and an editor that feels like a text editor. it’s mit licensed, and the readme has a quickstart.

All notes
nomadic.al