Skip to content

farhan0167/wiki-viewer

Repository files navigation

wiki-view

A local-first knowledge-base app for people who want their notes to stay as plain markdown files on disk.

Think of it as a tool for building personal wikis, research notebooks, reading logs, project journals, or practice trackers — any domain where you accumulate entries over time and want to query, cross-reference, and revisit them — all plain markdown, queryable through Notion-style table, board, list, and gallery views.

What makes it different from Notion or Obsidian: your knowledge base lives as a folder of .md files on your filesystem, and wiki-view ships with an integrated terminal rooted at the workspace. That means you can launch Claude Code directly against your notes, run scripts over them, or execute source files that live alongside your notes — all without leaving the app. No API, no export step. wiki-view indexes frontmatter so both the user (through the UI) and Claude (through the structured filesystem + the terminal) can work the same knowledge base together.

No database server, no lock-in. Built with Electron, React, and TypeScript.

Core concepts

Documents

Every .md file is a document. Base frontmatter keys (title, created, updated, tags) are implicit; custom keys (e.g. status, difficulty, last_reviewed) are user-defined and their types live in .wikiview/schema.json.

Bundles

A folder that behaves as one document in the sidebar. Marked by a direct-child .md with wikiview.role: index in frontmatter. Use bundles when a topic grows multi-file — notes plus attachments plus sub-docs.

Databases

A folder with a .wvdb.json view definition. Child .md files are queryable rows. Views (table, board, list, gallery) are configured in the UI with filters, sorts, and groupings.

Links and transclusions

Inline markdown links [text](path.md) are tracked with automatic backlinks and broken-link warnings. ![[target]] transcludes another doc's body inline (depth capped at 3).

Embedded views

A ```wikiview-view fenced block inside a document renders a live query result against the workspace, scoped by default to the host doc's directory.

Integrated terminal

A pty-backed terminal panel rooted at the workspace. Launch claude, run scripts, or grep your own knowledge base — without leaving the app.

Sync

Optional cross-device sync with a .wikiviewignore file (gitignore syntax) to exclude non-markdown artifacts. Built-in ignores cover .git, node_modules, .wikiview, .DS_Store, and all dotfiles.

Example use case: LeetCode practice tracker

One way to see wiki-view in action is a LeetCode practice workspace — a place to track problems you've solved, group them by technique, surface ones due for review, and run your solutions without leaving the app.

The problems/ folder rendered as a table view — filtered by status = solved, sorted by updated, with columns for patterns, categories, difficulty, and status.

The workspace looks like this:

leetcode/
├── CLAUDE.md                 ← operating rules for Claude Code sessions
├── repo-index.md             ← root index listing top-level directories
├── seed.md                   ← blueprint the workspace was scaffolded from
├── problems/                 ← one bundle per problem
│   ├── 3Sum/
│   │   ├── 3Sum.md           ← wikiview.role: index (write-up + solution notes)
│   │   └── solution.py       ← runnable alongside the notes
│   ├── Two Sum/
│   └── …
├── concepts/                 ← techniques, each with a bundle of linked problems
│   ├── Backtracking/
│   │   └── Backtracking.md
│   ├── Trees/
│   └── Linked Lists/
├── practice/                 ← dated practice-session logs
├── learning_plan/            ← roadmap docs
├── todo/
│   ├── todo.md
│   ├── backlog.md
│   └── completed.md
├── scripts/
│   └── query.py              ← custom frontmatter query tool
└── ingest/                   ← drop-zone for unstructured input

How it comes together:

  • Each problem bundle carries frontmatter like difficulty: medium, status: solved, last_reviewed: 2026-04-10, concepts: [Backtracking]. The bundle holds the problem statement, your notes, and the solution file side-by-side.
  • problems/ as a database (once you drop a .wvdb.json in it) gives you a board grouped by status, or a table sorted by last_reviewed to surface stale problems.
  • Transclusion pulls a concept's summary into every problem that uses it: ![[concepts/Backtracking/Backtracking]] in a problem doc inlines the concept write-up.
  • Embedded views on the root repo-index.md show live lists like "problems due for review" — a ```wikiview-view block with filters over last_reviewed.
  • Integrated terminal is rooted at the workspace: open a problem bundle, jump to the terminal, python problems/3Sum/solution.py without leaving the app. Or launch claude and ask it to draft a new problem bundle using your workspace's conventions.

A concept bundle pulls the pieces together — the Backtracking page below carries its own frontmatter (tags, custom properties), shows inbound links from the concepts index, and uses headings like "Problems with patterns: [Backtracking]" to manually surface related problems:

The Backtracking concept bundle open in wiki-view — frontmatter editor at the top, backlinks panel, prose articles, and a list of related problems.

Split panes and the integrated terminal let you write notes, browse example source files, and execute them side-by-side:

Split editor showing the Backtracking note on the left and a basic.py example script on the right, with the terminal panel below running python3 basic.py.

Because the terminal is rooted at the workspace, you can launch Claude Code inside it and ask questions about your knowledge base directly — Claude runs your own scripts (here, scripts/query.py) over your frontmatter to answer:

Claude Code running inside the wiki-view terminal, answering "what was the last problem i solved?" by invoking scripts/query.py and reading back the most recently updated solved problem.

The workspace was scaffolded via the /new-seed flow — see Starting a new workspace with Claude below.

Recommended IDE Setup

Project Setup

Install

$ npm install

Development

$ npm run dev

Build

# For windows
$ npm run build:win

# For macOS
$ npm run build:mac

# For Linux
$ npm run build:linux

Starting a new workspace with Claude

wiki-view ships a slash-command template that interviews you about a new workspace and writes a seed.md blueprint tailored to it. A follow-up Claude session then uses the seed to scaffold CLAUDE.md, repo-index.md, the todo queue, and your content directories.

To use it in an empty workspace:

  1. Copy docs/workspace-templates/new-seed.md into .claude/commands/new-seed.md at the workspace root.
  2. Open Claude Code in that directory and run /new-seed.
  3. Answer the interview questions. Claude writes seed.md at the root.
  4. Start a fresh Claude Code session and say read seed.md and scaffold this workspace.

The template is a frozen snapshot of wiki-view's user-facing rules (bundles, transclusions, sync ignores, etc.) — copy the current version each time you start a new workspace so you're working off up-to-date behaviour.

About

An Obsedian style LLM Knowledge Base Platform inspired by Karpathy. Organize markdown files, and have an LLM index it. End result: query-able knowledge base.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages