TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI-native knowledge IDE — agentic chat with typed tools & playbooks, durable workflows (n8n spoke), resumable AI streams, TTS/STT, real-time Y.js collab, and publishing. Next.js 16 · TypeScript strict · AI SDK v6
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Digital Garden — an AI-native knowledge IDE
An Obsidian-class knowledge IDE that grew into an AI automation platform: agentic chat with a
typed tool registry, reusable agent playbooks, durable workflows with an n8n spoke, resumable AI
streams, multimodal pipelines (TTS · STT · image), real-time multiplayer editing — multiple people
in the same document at once, live — and a publishing system that renders my actual personal site.
Live site → rendered by this repo's publishing system ·
Video demo → ·
Feature inventory → ·
Deployment → ·
Documentation →README 전문 보기 ↗An Obsidian-class knowledge IDE that grew into an AI automation platform: agentic chat with a typed tool registry, reusable agent playbooks, durable workflows with an n8n spoke, resumable AI streams, multimodal pipelines (TTS · STT · image), real-time multiplayer editing — multiple people in the same document at once, live — and a publishing system that renders my actual personal site.
Live site → rendered by this repo's publishing system · Video demo → · Feature inventory → · Deployment → · Documentation →
📷 Fig 1-1 · Three-panel Content IDE (hero) — media pending
Solo-built, production-deployed, and used daily — this is my working environment for notes, research capture, my published site, and the agentic systems that run my own job search.
Every AI capability here is a first-class subsystem with typed contracts, CI gates, and fallback behavior — not a chat window bolted onto a notes app. The table maps each capability to where it lives in the code.
| Capability | What's built | Where |
|---|---|---|
| Durable workflows | Visual workflow builder (React Flow) with trigger system and run history, plus an n8n spoke — outbound webhooks and inbound callbacks for jobs that outlive a request | extensions/workflows/ |
| Agent playbooks | Notes/folders marked as reusable playbooks; progressive-disclosure injection (agents load steps as needed, not all upfront); discoverable via a search_playbooks tool; checkpoint gating | lib/domain/ai/playbooks/ |
| Grounded learning studio | Folder Studio: a NotebookLM-parallel studio, minus the source-curation step — any folder's existing notes are the source corpus (auto-context assembly, no separate upload/select ritual). Grounded chat plus three generation shelves: Create (reports, flashcards, mind maps, audio/video overviews, slide decks, infographics), Practice (quizzes, oral exams, teach-it-back, study plans), Analyze (glossaries, comparisons, prerequisites) | extensions/studio/ |
| Multimodal pipelines | TTS generation + storage catalog (read-aloud player), speech-to-text, AI image generation, AI-mediated media injection into notes | lib/domain/ai/speech/, transcribe/, image/ |
| Tool-calling orchestration | Server-side tool registry with a client-safe metadata split (no Prisma in the client bundle); editor, flashcard, and workflow tool families; canonical output-placement so agent output lands , not just chat |
flowchart LR
U["Chat / editor / extension surface"] --> R["Feature router<br/>per-feature model routes"]
R --> F["Fallback chain<br/>executeWithFallback"]
F --> P["Provider factories<br/>Anthropic · OpenAI · Google · Groq · Mistral · xAI · DeepSeek<br/>+ OpenAI-compatible (Kimi, Fireworks, …)"]
F --> T["Tool loop<br/>server tool registry"]
T --> PB["Playbooks<br/>progressive disclosure"]
T --> OP["Output placement<br/>into notes + references"]
F --> S["Resumable SSE stream<br/>survives page reload"]
S --> L["Run ledger + persistence<br/>conversation tables"]
📷 Fig 2-1 · AI chat executing tools — media pending
Playbooks turn the agent from a chatbot into an operator: any note or folder can be marked as a playbook, and agents discover and execute them with steps injected progressively — my job-search playbook runs this way daily (Fig 2-2). Workflows cover the durable side: multi-step automations built on a visual canvas, executed through triggers and an n8n spoke with callback verification (Fig 2-3). Folder Studio is the NotebookLM-parallel piece: point it at a folder and its existing notes become the grounding corpus — no separate source-upload step — then chat, or generate study material across three shelves: Create (reports, flashcards, mind maps, audio/video overviews, slide decks, infographics), Practice (quizzes, oral exams, teach-it-back, study plans), and Analyze (glossaries, comparisons, prerequisites) (Fig 2-4).
📷 Fig 2-2 · Playbook run (progressive disclosure) — media pending
📷 Fig 2-3 · Workflow canvas + run history — media pending
📷 Fig 2-4 · Folder Studio grounded chat — media pending
Infrastructure details that usually get skipped: streams are resumable — reload the page mid-generation and the response keeps going (Fig 2-5); every run is metered in a ledger; tool outputs are compacted to keep context windows honest; and models are user-configurable per feature with BYOK keys stored encrypted (Fig 2-7). Text-to-speech, transcription, and image generation run as first-class pipelines with storage-backed catalogs (Fig 2-6).
📷 Fig 2-5 · Resumable stream surviving a reload — media pending
📷 Fig 2-6 · Read-aloud TTS player — media pending
📷 Fig 2-7 · Model routing & BYOK connections — media pending
flowchart TD
subgraph Clients
B["Browser app"]
X["Chrome extension<br/>side panel · capture · acquisition"]
end
subgraph Vercel
N["Next.js 16 app<br/>RSC + API routes + AI domain"]
end
subgraph CloudRun["Google Cloud Run"]
H["Hocuspocus<br/>Y.js collaboration server"]
end
subgraph HomeServer["Home server · Cloudflare Tunnel"]
N8["n8n<br/>workflow spoke"]
end
PG[("PostgreSQL<br/>Neon prod · Docker dev")]
ST[("Object storage<br/>R2 · S3 · Vercel Blob")]
AI["AI providers<br/>Anthropic · OpenAI · Google · DeepSeek · Kimi · …"]
B --> N
X --> N
B <-->|"WebSocket"| H
N --> PG
H --> PG
N --> ST
N <-->|"webhooks + callbacks"| N8
N --> AI
ContentNode v2.0 — one polymorphic table is the universal container: folders form the
hierarchy; leaves attach exactly one typed payload (NotePayload TipTap JSON, FilePayload
binary + storage metadata, CodePayload, HtmlPayload, ExternalPayload with Open Graph
metadata). Soft delete, display ordering, and full-text search live on the container, so every
content type inherits them.
Real-time multiplayer editing — multiple people can open and edit the same note at the same
time, live, with each other's cursors and selections visible (Fig 3-2) — powered by Y.js CRDTs
synced through a Hocuspocus server on Cloud Run. Presence survives Vercel's serverless split by
persisting awareness state to Postgres. A CI gate (collab:schema:check) statically verifies that
every editor extension has a server-safe variant registered with the collaboration server — schema
drift between client and collab server fails the build, because at runtime it would corrupt
documents that multiple people are editing simultaneously.
Extension system — features ship as 10 first-party extension modules
(daily-notes, flashcards, people, workplaces, calendar, publishing, speed-reader,
browser-bookmarks, studio, workflows), each owning its manifest, client/server runtimes,
components, and state. Disabled extensions disappear through registry filters — shared UI has no
per-feature conditionals.
TipTap-based, with a custom block inventory: wiki-links with autocomplete ([[Note Title]]),
Obsidian-style callouts, tabs/columns/accordions, and multiplayer-editable Mermaid and Excalidraw
blocks — several people can sketch on the same diagram at once — plus inline tags and timestamps,
slash commands, and a schema-versioning system with migration support. Unknown node types
round-trip as explicit placeholders instead of being silently dropped.
📷 Fig 1-2 · Sixty-second tour — media pending
📷 Fig 3-1 · Block library breadth — media pending
📷 Fig 3-2 · Live collaboration — media pending
Notes compose into public pages from a registry of publishing blocks (hero, cards, galleries, pricing, testimonials, …), rendered server-side with light/dark theming and per-block Playwright visual regression. davidvalentine.org is this pipeline in production (Fig 4-2).
📷 Fig 4-1 · Publishing composer → live page — media pending
📷 Fig 4-2 · davidvalentine.org, rendered by this repo — media pending
A Chrome extension embeds the garden in a side panel, captures pages under explicit capture-policy safety gates, and acts as an acquisition provider: when the app needs a page's full content, it climbs a ladder from service-worker fetch to session-tab extraction — with the server building the trusted envelope (Fig 5-1).
📷 Fig 5-1 · Browser extension side panel & acquisition — media pending
Flashcards with FSRS spaced repetition · daily/periodic notes with activity summaries · people + workplace entities with mentions · full-text search with tag filtering and backlinks · multi-cloud file storage with two-phase presigned uploads · an RSVP speed reader · export to Markdown/HTML/JSON with metadata sidecars.
The part that doesn't screenshot well but matters most:
pnpm typecheck → pnpm lint (warning-count ratchet — new
warnings fail CI) → pnpm build → browser smoke test.quality.yml),
collaboration schema coverage (collaboration-hardening.yml), and publishing schema +
per-block visual regression (publishing-visual.yml).Server* variants,
Zod-default vs. render-fallback drift, dark-mode CSS coverage audits.CLAUDE.md and AGENTS.md
encode the repo's conventions for agentic coding tools — the same discipline the product's own
agents get held to.docs/,
130+ merged PRs in sprint format.Prerequisites: Node 20+, pnpm, Docker (for local Postgres).
git clone https://github.com/CenterValentine/Digital-Garden.git
cd Digital-Garden
pnpm install
cp .env.example .env.local
pnpm db:local:up
npx prisma generate
npx prisma migrate deploy
pnpm db:seed
pnpm dev
The app runs at http://localhost:3015. Required env vars: DATABASE_URL (use localhost,
not 127.0.0.1, for the Docker Postgres) and STORAGE_ENCRYPTION_KEY (32-byte hex). AI features
need at least one provider key (BYOK — configured in-app). Live collaboration in dev needs the
local Hocuspocus server in a second terminal:
pnpm dev:collab
with NEXT_PUBLIC_HOCUSPOCUS_URL=ws://localhost:1234 in .env.local. Full production builds
need a larger Node heap: NODE_OPTIONS='--max-old-space-size=8192' pnpm build.
Three services deploy independently:
| Service | Platform | How |
|---|---|---|
| Next.js app | Vercel | vercel --prod (build skips local-only gates; migrations run manually via npx prisma migrate deploy) |
| Hocuspocus (collab) | Google Cloud Run | gcloud builds submit --config cloudbuild.hocuspocus.yaml . — must be redeployed after schema-changing merges, or unknown blocks degrade to placeholders |
| n8n (workflow spoke) | Any long-lived host | Self-hosted (here: a home server behind a Cloudflare Tunnel, no inbound ports) |
Postgres (Neon in production) and object storage (Cloudflare R2 primary; S3/Vercel Blob supported) are managed services. Full guide — env reference, migration baseline caveats, the Hocuspocus redeploy rules, and post-deploy verification: docs/DEPLOYMENT.md.
Labeled honestly — nothing below is shipped yet:
docs/notes-feature/00-START-HERE.mddocs/media/figures/FIGURES.md. Drop a correctly-named media
file in that folder, run pnpm showcase:figures, and it appears here automatically.docs/notes-feature/guides/showcase/SHOWCASE-MAINTENANCE.mdMIT. If you want to build on something here, reach out.
Built and maintained by David Valentine · Request a demo
lib/domain/ai/tools/ |
| Provider abstraction (BYOK) | Dedicated factories for Anthropic · OpenAI · Google · Groq · Mistral · xAI · DeepSeek behind one interface, plus a generic OpenAI-compatible connection type covering Moonshot (Kimi), Fireworks, Together, OpenRouter, Ollama, and any other OpenAI-compatible endpoint. Encrypted key storage, gateway routing | lib/domain/ai/providers/ |
| Agentic browser reach | Chrome extension as a content-acquisition provider: service-worker fetch → session-tab ladder, client-mediated with a server-built trust envelope; capture-policy safety gates | lib/domain/ai/acquisition/ |
| Multi-model routing + fallback | Per-feature model routes with fallback chains (executeWithFallback), registry-authoritative model catalog, per-model constraints | lib/domain/ai/features/ |
| Resumable streaming | AI responses stream over SSE and survive a page reload mid-generation (Upstash-backed resumable streams) | lib/domain/ai/resumable/ |
| Resource governance | Per-run ledger, tool-output compaction to control context growth, dangling-tool-call repair, prompt caching | lib/domain/ai/run-ledger.ts, compact-tool-outputs.ts |
| MCP interoperability | 🔭 Planned — MCP server exposing garden tools/resources to external agents + MCP client consuming external servers in the chat tool loop (design doc in progress) | — |