Obsidian-compatible digital garden built on Next.js + shadcn/ui
Nuartz turns your Obsidian vault into a modern web app — wikilinks, callouts, backlinks, graph view, and all — without compromising on UI quality.
Inspired by Quartz — jackyzha0's excellent Obsidian-to-web tool. Quartz pioneered the OFM (Obsidian Flavored Markdown) parsing approach: wikilinks, callouts, backlinks, and graph view. Nuartz takes that foundation and rebuilds it as a composable remark/rehype plugin set that plugs into a modern Next.js + shadcn/ui stack.
| Feature | Status |
|---|---|
Wikilinks [[page]], [[page|alias]], [[page#heading]] |
✅ |
Callouts > [!note], > [!warning]+ (foldable) |
✅ |
Inline tags #tag → /tags/tag |
✅ |
| Backlink index | ✅ |
| Table of contents (scroll-aware) | ✅ |
| Full-text search (Cmd+K) | ✅ |
Tag index pages (/tags, /tags/[tag]) |
✅ |
| Dark mode (system-aware) | ✅ |
| Mobile navigation drawer | ✅ |
| Dynamic OG images | ✅ |
| Math (KaTeX) | ✅ |
| GFM (tables, strikethrough, task lists) | ✅ |
| Graph view (D3 force-directed) | ✅ |
| Popover previews on hover | ✅ |
| Reader mode | ✅ |
| Comments (Giscus) | ✅ |
| Dead link detection | ✅ |
| Draft / private page filtering | ✅ |
| AI chat (LangGraph) | 🔜 |
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| UI | shadcn/ui + Radix UI |
| Styling | Tailwind CSS v4 |
| Markdown | unified / remark / rehype |
| Graph | D3 force-directed |
| Runtime | Bun |
git clone https://github.com/syshin0116/nuartz
cd nuartz
bun install
bun devPut your Obsidian markdown files in apps/web/content/ and start the dev server.
Edit apps/web/nuartz.config.ts:
import { defineConfig } from "nuartz"
export default defineConfig({
contentDir: "./content",
site: {
title: "My Garden",
description: "My digital garden",
baseUrl: "https://your-site.vercel.app",
},
features: {
wikilinks: true,
callouts: true,
backlinks: true,
search: true,
},
})If you want to embed a blog/garden into an existing Next.js app (e.g. a portfolio), install nuartz as a dependency instead of cloning the full repo:
bun add nuartzThen use the API directly in your app:
import { renderMarkdown, buildBacklinkIndex, buildSearchIndex } from "nuartz"When a new version of nuartz is released:
bun update nuartzCheck the releases page for changelogs before updating.
import {
renderMarkdown, // string → { html, frontmatter, toc, links, tags }
buildBacklinkIndex, // build slug → backlinks map
buildFileTree, // flat file list → nested tree
buildSearchIndex, // files → search-ready entries
defineConfig, // typed config helper
} from "nuartz"[[page]] → link to page
[[page|Custom Title]] → link with alias
[[page#heading]] → link with anchor
![[image.png]] → embed image> [!note]
> A simple note callout.
> [!warning]+ Optional foldable title
> This callout is foldable with +.
> [!tip]- Collapsed by default
> Use - to start collapsed.Nuartz is a monorepo — the Next.js app lives in apps/web. Override these settings when importing to Vercel:
| Setting | Value |
|---|---|
| Root Directory | apps/web |
| Install Command | cd ../.. && bun install --frozen-lockfile |
| Build Command | cd ../.. && bun run build:pkg && cd apps/web && next build |
Then add environment variables in Vercel's dashboard as needed:
NEXT_PUBLIC_SITE_URL=https://your-site.vercel.app
# Optional: Giscus comments
NEXT_PUBLIC_GISCUS_REPO=your-user/your-repo
NEXT_PUBLIC_GISCUS_REPO_ID=R_xxx
NEXT_PUBLIC_GISCUS_CATEGORY=Announcements
NEXT_PUBLIC_GISCUS_CATEGORY_ID=DIC_xxxNote: GitHub Pages is not supported — Nuartz uses server-side API routes and Edge runtime features that require Node.js.
See the full hosting guide for Netlify and Docker options.
Nuartz ships with Giscus (GitHub Discussions-based comments). It requires no backend and takes ~5 minutes to set up. See features/comments.
Alternatives by use case:
| System | Best for | Backend needed |
|---|---|---|
| Giscus | Dev/tech audience (GitHub login) | No |
| Waline | General audience (anonymous ok) | Yes (Vercel + DB) |
| Remark42 | Privacy-first, multiple social logins | Yes (Docker) |
| Cusdis | Minimal, anonymous, no-login | Yes (self-host) |
MIT