Files
hanarang-rails/.claude/rules/stack.md
이랑이 e58945dc2c chore: 내부망 IP/인프라 정보 제거 — 공개 레포 정리
- 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>
2026-04-10 13:37:26 +09:00

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` 직접 참조 금지