Skip to main content
create-sonamu ํŒจํ‚ค์ง€๋กœ ์ƒˆ Sonamu ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

Sonamu๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:
  • Node.js v22 ์ด์ƒ
  • pnpm v10.23 ์ด์ƒ
  • Docker (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ–‰์šฉ)
pnpm์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด corepack enable ๋ช…๋ น์–ด๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Node.js, pnpm, Docker ๋ฒ„์ „ ํ™•์ธ

ํ„ฐ๋ฏธ๋„์—์„œ node --version, pnpm --version, docker --version ์‹คํ–‰ ๊ฒฐ๊ณผ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ Sonamu ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

์ธ๋ผ์ธ ์˜ต์…˜

ํ”„๋กœ์ ํŠธ๋ช…์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜, ์˜ต์…˜์„ ํ†ตํ•ด ๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
--pnpm y, --docker y์—์„œ y๋Š” yes, true, 1๋กœ๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ n์€ no, false, 0์œผ๋กœ๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ผ์ธ ์˜ต์…˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ pnpm create sonamu ์‹คํ–‰

๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค:
1

ํ”„๋กœ์ ํŠธ๋ช… ์ž…๋ ฅ

์ƒ์„ฑํ•  ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ๋ช…์—๋Š” ๊ณต๋ฐฑ๊ณผ **ํ•˜์ดํ”ˆ(-)**์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ธ๋”์Šค์ฝ”์–ด(_)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
2

pnpm ์„ค์ •

pnpm์„ ์ž๋™์œผ๋กœ ์„ค์ •ํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
3

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •

Docker๋ฅผ ์‚ฌ์šฉํ•œ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Yes๋ฅผ ์„ ํƒํ•˜๋ฉด:
  • Docker Compose ํ”„๋กœ์ ํŠธ๋ช…
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๋ช…
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ
๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ด ์ •๋ณด๋กœ packages/api/.env ํŒŒ์ผ์ด ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์™„๋ฃŒ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์™„๋ฃŒ ๋ฉ”์‹œ์ง€ ๋ฐ ์ƒ์„ฑ๋œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

create-sonamu๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ๋…ธ๋ ˆํฌ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:
VS Code Explorer ์‚ฌ์ด๋“œ๋ฐ”

VS Code์—์„œ ์—ด๋ฆฐ ํ”„๋กœ์ ํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ฆฌ ๊ตฌ์กฐ

myapp
packages
pnpm-workspace.yaml (์›Œํฌ์ŠคํŽ˜์ด์Šค ์„ค์ •)
README.md

์ฃผ์š” ์„ค์ • ํŒŒ์ผ

pnpm ์›Œํฌ์ŠคํŽ˜์ด์Šค

๋ฃจํŠธ์˜ pnpm-workspace.yaml์—์„œ ๋ชจ๋…ธ๋ ˆํฌ ํŒจํ‚ค์ง€์™€ ๊ณตํ†ต ์˜์กด์„ฑ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
pnpm-workspace.yaml

API ์„œ๋ฒ„ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ

์ƒ์„ฑ๋œ API ์„œ๋ฒ„์˜ ์ง„์ž…์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
packages/api/src/index.ts ํŒŒ์ผ

VS Code์—์„œ ์—ด๋ฆฐ packages/api/src/index.ts ํŒŒ์ผ

Sonamu ์„ค์ •

sonamu.config.ts์—์„œ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
packages/api/src/sonamu.config.ts

Docker Compose ์„ค์ •

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Docker๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค:
packages/api/database/docker-compose.yml

ํ”„๋ก ํŠธ์—”๋“œ ์„ค์ •

Vite + React + TanStack Router + SSR ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:
packages/web/vite.config.ts

ํฌํŠธ ๊ตฌ์„ฑ

๊ธฐ๋ณธ ํฌํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค:
  • Sonamu UI: ๋ณ„๋„ ํฌํŠธ๊ฐ€ ์•„๋‹Œ API ์„œ๋ฒ„์˜ /sonamu-ui ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. - API ์„œ๋ฒ„ ํฌํŠธ: packages/api/src/sonamu.config.ts์—์„œ port ์ƒ์ˆ˜ ์ˆ˜์ • (์ด ๊ฒฝ์šฐ packages/web/.sonamu.env์˜ API_PORT๋„ ํ•จ๊ป˜ ์ˆ˜์ • ํ•„์š”) - Web ์•ฑ ํฌํŠธ: packages/web/vite.config.ts์—์„œ server.port ์ˆ˜์ •

๋‹ค์Œ ๋‹จ๊ณ„

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ์ฒซ ๋ฒˆ์งธ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  API๋ฅผ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”.