- deployment.md: 구체적 IP/VMID/LXC ID 제거 → 일반화 - stack.md: DB 호스트 정보 제거 - SPRINT-004: LXC 참조 제거 - migration: LXC ID 제거 → 역할 기반 - install.sh: 하드코딩 repo URL 제거 → RAILS_REPO_URL 또는 --repo 필수 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
25 lines
1.0 KiB
Markdown
25 lines
1.0 KiB
Markdown
# 기술 스택
|
|
|
|
| 레이어 | 선택 |
|
|
|---|---|
|
|
| 런타임 | **Node 22 + TypeScript (strict)** |
|
|
| 패키지 | **pnpm** (npm/yarn 금지) |
|
|
| 상태 머신 | **XState v5** |
|
|
| 스키마 | **Zod** |
|
|
| 영속화 | **MariaDB** (Prisma ORM) |
|
|
| 프로세스 | **execa + AbortController** |
|
|
| CLI | **citty** |
|
|
| 로그 | **pino** (구조화 JSON) |
|
|
| 디스코드 | **discord.js v14** |
|
|
| 테스트 | **Vitest** |
|
|
|
|
## 코딩 룰
|
|
|
|
- **TypeScript strict 모드 고정** (`strict: true` + `noUncheckedIndexedAccess: true`)
|
|
- **Zod 검증 경계** — 모든 외부 입력(파일, 네트워크, subprocess stdout)은 Zod 로 파싱 후 사용
|
|
- **async/await 만 사용** — `.then()` 체이닝 금지
|
|
- **Result<T, E> 패턴** — throw 대신 `neverthrow` 또는 자체 Result 로 에러 표면화
|
|
- **로그는 pino** — `console.*` 금지
|
|
- **파일 경로는 `node:path` + `import.meta.url`** — `__dirname` 금지
|
|
- **환경변수는 Zod schema 로 검증된 env 객체 통해서만** — `process.env.X` 직접 참조 금지
|