MD Viewer

Self-hosted Markdown docs

A polished reading experience for your docs

Tree, search, favorites, and optional share links; start with SQLite or scale to PostgreSQL.

Private documentation that feels like a finished product—not a bare repo.

Next.js · Drizzle · SQLite / PostgreSQL · Redis-ready

Built for technical teams

Ship an internal docs site without maintaining a CMS.

Reading

Readable

Markdown, Mermaid, KaTeX, TOC, and mobile-friendly layout.

Deploy

Deploy your way

Web wizard for SQLite; PostgreSQL and optional Redis for larger deployments.

Share

Share & collaborate

Favorites for signed-in users; time-limited share links with optional password.

Security

Security-aware

Audit logs, password-protected shares, and admin-controlled docs root.

See the reading experience

Structured navigation, rich rendering, and calm typography.

  • Sidebar tree & favorites
  • Code blocks, Mermaid & math
  • Share links with expiry & optional password

Install & bootstrap

  1. 1

    Run the app

    Clone the repo, install dependencies (pnpm install), set AUTH_SECRET and env per .env.example.

  2. 2

    Initialize the database

    Use the First-time setup page to create SQLite and an admin user, or run pnpm db:push:sqlite and pnpm db:init-admin.

  3. 3

    Docs root

    Point DOCS_ROOT or the in-app setting to the folder that contains your .md files (absolute path).

For PostgreSQL: follow DEPLOY.md, run drizzle-kit push and db:init-admin; you may set MD_VIEWER_SKIP_INSTALL=true to skip the web wizard.

How to use

  • 1After setup, sign in with your admin account.
  • 2Browse the file tree on the left; star pages to save favorites.
  • 3Change password and docs path in Settings; create share links from a document when needed.