Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
Local-first C4 architecture diagrams in your browser. Edit visually, save as plain .dsl files. Structurizr DSL compatible, no signup, no server.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Draw C4 diagrams. Own the files. A visual canvas for the C4 model that saves to plain Structurizr DSL on your machine. Local-first, git-friendly, no account, Apache-2.0.
I built c4hero because I wanted to design C4 diagrams in a real editor — drag, drop, connect — and still get Structurizr's portable plain-text format on disk.README 전문 보기 ↗Draw C4 diagrams. Own the files. A visual canvas for the C4 model that saves to plain Structurizr DSL on your machine. Local-first, git-friendly, no account, Apache-2.0.
I built c4hero because I wanted to design C4 diagrams in a real editor — drag, drop, connect — and still get Structurizr's portable plain-text format on disk.
Website: c4hero.com · Open the app: app.c4hero.com · What's new in 0.5.0
.dsl file. Existing Structurizr DSL loads as-is, no conversion. Or start from a built-in sample (Big Bank, microservices, monolith, event-driven).workspace "E-Commerce Platform" {
model {
customer = person "Customer"
platform = softwareSystem "E-Commerce Platform" {
apiGateway = container "API Gateway" "Routes + auth" "Node.js"
orderService = container "Order Service" "Cart + checkout" "Go"
}
customer -> apiGateway "Browses"
apiGateway -> orderService "Routes"
}
views { container platform "Containers" { include * } }
}
The canvas and the text are two views of the same model. Edit either one, in c4hero or in any other Structurizr tool, and the other follows. Layout is kept in a sidecar file so hand-placed positions survive text edits.
New to C4? Start with c4model.com.
mod+e) shows the workspace as DSL beside the canvas and edits flow both ways; text that doesn't parse never touches your model. Element IDs are readable camelCase derived from names, so the exported DSL reads like code..dsl files as a collection or a single file. Layout lives in a sidecar JSON next to each workspace, so positions survive text edits. Installable as a PWA and works offline. There is no c4hero server.!docs and !adrs folders are read, not just preserved: the inspector shows an element's documentation and architecture decision records (adr-tools style or OKF frontmatter), superseded decisions are marked, and New decision writes a numbered record — or saves one the AI drafted — straight into the folder.mod+f), a highlighter that stacks tag, status, technology, and team filters, and a presentation mode for walkthroughs.The full catalogue lives in docs/FEATURES.md. How the code is put together is in ARCHITECTURE.md.
c4hero runs in any modern browser. Folder collections rely on the File System Access API, which is currently only available in Chromium browsers (Chrome, Edge, Brave, Arc, Opera).
In Firefox and Safari you can still open and edit a single .dsl file at a time, export PNG / SVG / DSL / interactive HTML, and use every other feature. When folder workflows aren't supported, c4hero automatically falls back to the single-file flow.
npx playwright install chromiumnpm install
npm run dev
The Vite dev server runs on http://localhost:3004 with strictPort: true.
npm run dev # dev server with HMR
npm run build # production bundle in dist/
npm run preview # serve the production bundle
npm run typecheck # tsc -b
npm run lint # eslint
npm test # unit tests with Vitest
npm run test:watch # vitest in watch mode
npm run test:coverage # vitest with coverage (what CI runs)
npm run test:conformance # DSL round-trip checks against the Structurizr parser
npm run test:e2e # playwright
npm run audit # npm audit (production) with allowlist
npm run check # lint + typecheck + unit tests + build
React 19 + TypeScript (strict), Vite, Zustand + immer, React Flow (@xyflow/react), CodeMirror 6 for the DSL pane, a hand-written Structurizr DSL lexer/parser/serializer, Vitest + Playwright. Static deploy, no backend.
c4hero is distributed as a source-available static app, not as an npm package. package.json is marked private to prevent accidental npm publish while still using npm for local development, CI, and builds.
Deployment guidance — Vercel pipeline, env-var expectations, security headers for self-hosting — is documented in docs/DEPLOYMENT.md.
c4hero is local-first. Workspaces stay on your device; nothing is uploaded to a c4hero server. AI provider keys are stored only in your browser and sent only to the provider you chose. The open source build has hosted observability off by default; app.c4hero.com may enable Cloudflare Web Analytics for aggregate usage counts and Sentry for scrubbed error reports. Full details in PRIVACY.md.
See CHANGELOG.md for notable changes. Releases are tagged in GitHub Releases.
c4hero is maintained by one person in their spare time. I aim to respond to issues within a week. If something is broken, please include browser, OS, and a minimal .dsl snippet so I can reproduce — the bug template will prompt you. PRs that come with tests get reviewed first.
If c4hero is useful to you, you can sponsor c4hero on GitHub. Starring the repo, sharing it, and filing good issues help too.
Contributions are welcome. Start with CONTRIBUTING.md for setup, workflow, and testing guidance, and please follow the Code of Conduct.
To report a security issue, see SECURITY.md.
Released under the Apache License 2.0.
The c4hero name, logo, domain, and product identity are not licensed under Apache-2.0. See TRADEMARKS.md for the brand-use boundary.
mod+k opens a command palette with every action; undo, redo, duplicate, drill-in, add-element, and presentation mode all have shortcuts.prefers-reduced-motion support.