Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
프로젝트의 Markdown·JSON 파일에서 페르소나·여정·스토리를 읽고 보드에서 편집하면 파일이 자동으로 업데이트됩니다
A local app that reads your personas, journeys, flows and stories from Markdown and JSON files in your project. Edit a journey on the board and the file changes with it.
디자인TypeScript · JavaScriptGitHub @mattiamichini-design온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A local web app for the personas, user journeys, user flows and user stories that live in your repository as Markdown and JSON.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A local web app for the personas, user journeys, user flows and user stories that live in your repository as Markdown and JSON. You run it against a project folder and it works on that project's docs/ux/. The project keeps the files and needs nothing else installed.
Because the planning files sit next to the code, they go through review with it, Git keeps their history, and a coding agent can read the flow and the story before it builds a feature.
Requires Git and Node.js 22.15 or newer (the version is pinned in .nvmrc). Works on macOS and Linux.
Open http://127.0.0.1:4311/ux-planner.README 전문 보기 ↗A local web app for the personas, user journeys, user flows and user stories that live in your repository as Markdown and JSON. You run it against a project folder and it works on that project's docs/ux/. The project keeps the files and needs nothing else installed.
Because the planning files sit next to the code, they go through review with it, Git keeps their history, and a coding agent can read the flow and the story before it builds a feature.
Requires Git and Node.js 22.15 or newer (the version is pinned in .nvmrc). Works on macOS and Linux.
git clone https://github.com/mattiamichini-design/uxplanner.git
cd uxplanner
npm ci
npm run build
node /path/to/uxplanner/bin/ux-planner.mjs init --root /path/to/project
node /path/to/uxplanner/bin/ux-planner.mjs start --root /path/to/project --port 4311
Open http://127.0.0.1:4311/ux-planner.
init creates the docs/ux/ folders and leaves existing files as they are. start keeps a lock file in .ux-planner/ inside the project: add that folder to .gitignore and commit the planning files as usual. Each project takes one runner at a time; run several projects on different ports. Stop with Ctrl+C.
node /path/to/uxplanner/bin/ux-planner.mjs demo
The demo opens a temporary copy of the sample workspace in sample/ and prints its path. It has two personas, three journeys with a board for each persona so you can try comparison, and a few flows and stories. From the source checkout, npm run demo runs the development build.
docs/ux/
personas/*.md # YAML frontmatter + Markdown
user-journeys/<journey>/meta.json # title, description, icon
user-journeys/<journey>/<persona>.json # one board per persona
user-flows/<flow>/*.md # narrative + Mermaid diagram
user-stories/*.md # story + acceptance criteria
In the app you create and edit personas and journey boards. A journey holds several personas that you can compare side by side; you edit its columns, rows and notes with drag and drop, copy items between personas, and import or export CSV. You can also create a story. Flows are read-only, and you write flows and story content in your editor or with an agent using the ux-planner skill.
Project names, persona slugs and journey categories come from your files. Keep slugs stable, give rows and columns unique IDs, and point cells at existing columns. Editing a persona keeps its filename and extra frontmatter fields. Journey edits and CSV imports keep uxArtifact links.
The app ignores files and folders starting with . or _, README files and symlinks. A document that fails validation shows an error and is never overwritten. Text files are capped at 2 MB.
docs/ux/ in your project holds the planning files you create and edit..ux-planner/runner.lock in your project exists while a runner is active.init, start and demo add a small record with the project's absolute path to ${XDG_DATA_HOME:-~/.local/share}/ux-planner/workspaces/. The MCP server reads these records and opens only projects listed there. Set UX_PLANNER_REGISTRY_DIR to use another folder, and delete a record to unlist its project.demo puts its copy in the system temporary folder.The ux-planner skill describes the file formats, so an agent can write flows and stories in the right place. Point your agent at it, or copy the folder to where your agent loads skills (for Claude Code, .claude/skills/ux-planner/).
npm run build also builds a stdio MCP server that works with any MCP client, such as Claude Code, Codex or OpenCode. It connects to the runner you started, lets the agent read your planning documents, add and edit journey items and create stories, and shows the UX Planner interface in clients that support MCP Apps. Add it to your client's MCP configuration:
{
"mcpServers": {
"ux-planner": {
"command": "node",
"args": ["/path/to/uxplanner/mcp/server.bundle.mjs"]
}
}
}
Clients with a command line can add it directly, for example claude mcp add ux-planner -- node /path/to/uxplanner/mcp/server.bundle.mjs or codex mcp add ux-planner -- node /path/to/uxplanner/mcp/server.bundle.mjs. Start the runner for your project, then start the agent in the project folder. Routing between projects, the tool list and client limits are in docs/mcp.md.
node /path/to/uxplanner/bin/ux-planner.mjs export --root /path/to/project > ux-planner-handoff.json
The handoff contains every planning document, JSON and Markdown, with its repository path. An agent connected to Figma through MCP can use it to rebuild flows, journey maps and personas in Figma. Journey boards also export to CSV from the toolbar.
The server listens on 127.0.0.1 only and accepts writes only from the pages it serves (matching host and origin). It is a single-user tool.
Each save validates every document it touches, checks the files for external changes and rolls back if a write fails. CSV imports validate all personas before saving any of them. Persona forms and CSV imports reject edits made against an outdated revision. Git holds the history, so commit your planning files and avoid editing the same document in the app and in an editor at once.
If the runner was killed, the next start clears its stale lock. If the lock belongs to a running process, check that process before deleting .ux-planner/runner.lock.
To update, pull the checkout and run npm run build again. To uninstall, stop the runner, remove ux-planner from your MCP client's configuration, and delete the checkout and ${XDG_DATA_HOME:-~/.local/share}/ux-planner/.
npm ci
npm test # application tests
npm run test:core # packages/core tests
npm run lint
npm run typecheck
npm run build
To check a release build:
npm run pack:release
npm run verify:release
verify:release installs the packed archive offline in a temporary project and exercises the production runtime on port 4327 (set UX_TEST_PORT to change it).
packages/core holds the shared journey types, CSV and navigation helpers. docs/architecture.md describes how the pieces fit together and docs/design.md the design tokens and components. Contribution guidelines are in CONTRIBUTING.md.
site/ is the landing page, a separate Next app built as a static export.
npm run site:dev # http://localhost:3100
npm run site:typecheck
npm run site:build # writes site/out/
The landing's "Try the demo" opens /demo, the real interface running in the browser on the same sample workspace as ux-planner demo (sample/). Edits stay in that browser tab. How /demo runs the product code is described in docs/architecture.md.
site:dev and site:build need network access: they download Clash Display from Fontshare and Archivo and JetBrains Mono from Google Fonts. Clash Display's licence allows self-hosting but not redistribution, so the file is never committed.
Set NEXT_PUBLIC_SITE_URL to the public origin (for example https://uxplanner.example.com) before site:build; canonical links, social cards, robots.txt and sitemap.xml use it. On Vercel it falls back to the project's production domain. vercel.json builds the site with npm run site:build and serves site/out with clean URLs, so /demo resolves without .html.
UX Planner is released under the MIT License. The bundled Geist font is licensed under the SIL Open Font License 1.1.