LangENKO

빠른 시작

Mandu 앱을 5분 안에 띄웁니다. 설치 두 가지 경로, 에이전트가 끝까지 돌릴 수 있는 prompt 한 줄.

since v0.22
On this page

빠른 시작

TL;DR — Mandu 설치 (binary 또는 npm) → mandu create my-appcd my-app && bun run devhttp://localhost:3333. 5분, 명령 3줄.

왜 Mandu

다른 풀스택 프레임워크는 사람이 한 줄씩 짜는 것 을 전제로 만들어졌어요. Mandu 는 처음부터 AI 에이전트가 코드를 쏟아낸다 는 가정으로 설계됐습니다 — Guard 가 런타임 경계 강제, contract 한 파일이 타입·검증·OpenAPI 를 파생, MCP 100+ 도구가 에이전트와 직접 대화. 그래서 5분이면 충분합니다.

설치

설치 경로 두 가지. 상황에 맞는 것을 고르세요.

경로 A · Standalone 바이너리 (사전 요구사항 없음, ~132 MB)

Bun 이 바이너리에 포함되어 따로 설치할 게 없습니다.

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/konamgil/mandu/main/install.sh | sh

# Windows (PowerShell)
iwr https://raw.githubusercontent.com/konamgil/mandu/main/install.ps1 -useb | iex

mandu --version 으로 확인. "command not found" 면 셸을 재시작해 PATH (~/.mandu/bin, Windows 는 %LOCALAPPDATA%\Mandu\bin) 가 잡히도록 합니다.

경로 B · npm / Bun 패키지 (~5 MB, Bun 필요)

다운로드는 작지만 Bun 이 미리 설치돼 있어야 합니다.

bun --version
# 1.3.12 이상이어야 합니다
bun install -g @mandujs/cli

Bun 이 없으면 bun.sh/docs/installation 에서 설치하세요. Node.js 는 지원하지 않습니다 — Mandu 의 라우터·번들러·테스트 러너 모두 Bun API 에 묶여있습니다.

프로젝트 스캐폴드

mandu create my-app
cd my-app

스캐폴더가 두 가지 묻습니다:

  • Templateminimal / starter / agent-ready. 처음이면 starter.
  • MCP agents — Claude Code · Claude Desktop · Gemini CLI 사전 구성 여부. 나중에 mandu mcp add 로 추가.

dev 서버 실행

bun run dev
# standalone 바이너리만 있으면: `mandu dev`

http://localhost:3333 에서 만두 캐릭터가 인사하면 성공.

🤖 에이전트 프롬프트

🤖 Agent Prompt — Bootstrap a new project
Bootstrap a new Mandu project. Walk me through:

1. Install Mandu — prefer the standalone binary:
   - Unix:    curl -fsSL https://raw.githubusercontent.com/konamgil/mandu/main/install.sh | sh
   - Windows: iwr https://raw.githubusercontent.com/konamgil/mandu/main/install.ps1 -useb | iex
   (Or `bun install -g @mandujs/cli` if Bun is already installed.)

2. `mandu create my-app` (template: `starter`).
3. `cd my-app && bun run dev`.
4. Open http://localhost:3333 and confirm the welcome page renders.

Diagnose using these invariants:
- routes live at app/**/page.tsx (.tsx only)
- .island.tsx with `use client` is required for hydration
- dev port is 3333
- the npm path requires Bun >= 1.3.12 (the binary embeds Bun)

Once dev is running, show me the project tree
(app/, src/client, src/server, src/shared, spec/, content/, mandu.config.ts).

Claude Code · Cursor · OpenAI Codex · GitHub Copilot · Gemini CLI 등 어떤 AI 에이전트에 붙여 넣어도 그대로 동작합니다. ai-hintinvariants 가 frontmatter 에 있어 에이전트가 자동으로 끌어다 씁니다.

무엇이 만들어졌나요

스캐폴드 직후 트리:

my-app/
├── app/
│   ├── page.tsx          # "/" 라우트
│   ├── layout.tsx        # body 래퍼 (html/head 는 Mandu 자동 생성)
│   └── api/              # 파일 시스템 API 라우트
├── src/
│   ├── client/           # UI 코드 (FSD: shared/entities/features/widgets)
│   ├── server/           # 서버 코드 (domain/application/infra)
│   └── shared/           # 양쪽이 공유하는 contract 와 타입
├── spec/                 # 스펙 (contract, decision, sketch)
├── content/              # MDX 컨텐츠 레이어
└── mandu.config.ts       # 프레임워크 설정

놓치면 안 되는 5가지

  • Bun ≥ 1.3.12 — npm 경로 사용 시 (바이너리는 Bun 포함, 사전 요구 없음).
  • 라우트 = app/**/page.tsx 만 인식. .jsx, index.tsx, .mdx 는 무시.
  • .island.tsx 만 hydrate. 일반 .tsx 는 서버 전용.
  • 포트 3333 고정 — mandu.config.tsserver.port 로 변경.
  • Guard 가 런타임에 경계 강제 — features 가 entities 의 internal 을 import 하면 dev 콘솔에서 즉시 거부.

다음 읽을거리

For Agents

AI hint

Install via the standalone binary (curl/iwr) or `bun install -g @mandujs/cli`, scaffold with `mandu create my-app`, then `bun run dev` on port 3333. Routes live under `app/` as `page.tsx`. Bun >= 1.3.12 is required for the npm path.

Invariants
  • Bun >= 1.3.12 is required for the npm/Bun package path; the standalone binary embeds Bun and has no prerequisite
  • Routes are recognised only as `app/**/page.tsx` (no `.jsx`, no `index.tsx`)
  • Interactive components must end with `.island.tsx` and start with `"use client"`
  • The dev server defaults to port 3333; configure via `mandu.config.ts`
Guard scope
project-init