10. 부록
10.1 명령어 치트시트
# 개발
mise install && bun install && bun run dev # 로컬 (web: 3800)
bun run lint / typecheck / test / e2e
# DB
bun run db:migrate / db:generate / db:seed / db:studio
bun run db:migrate:deploy # prod 마이그레이션
# 배포 (수동)
bun run deploy:hosting # Firebase Hosting (dev)
bun run deploy:cloudrun # Cloud Run (dev)
# 배치 (Cloud Scheduler)
./scripts/setup-cloud-scheduler.sh dev|prod
gcloud scheduler jobs run spective-ticket-recover-dev --location=asia-northeast3
# 환경 전환
firebase use dev|prod10.2 자주 쓰는 링크
| 링크 | URL |
|---|---|
| Notion 문서 | https://www.notion.so/passionfactory/2a29accad7c680f3bbaec48547276a24 |
| Asana 보드 | https://app.asana.com/1/1126020665644881/project/1211235680387094/board/1211842616522088 |
| dev 서비스 | https://spective-web-xf3kugqnca-du.a.run.app |
| prod 서비스 | https://spective-web-771785464554.asia-northeast3.run.app |
| GCP 콘솔 (dev) | https://console.cloud.google.com/run?project=spective-dev |
| GCP 콘솔 (prod) | https://console.cloud.google.com/run?project=spective-prod |
| 토스페이먼츠 상점관리자 | https://app.tosspayments.com (알렉스앤앨리스 계정) |
| Resend 콘솔 | https://resend.com (알렉스앤앨리스 계정) |
| Supabase 콘솔 | https://supabase.com/dashboard (알렉스앤앨리스 계정) |
10.3 FAQ
인계 과정에서 자주 나온 질문을 누적합니다. 새 질문은 아래에 계속 추가하세요.
소유권 · 인계 범위
Q. 결국 알렉스앤앨리스가 새로 넘겨받는 건 뭔가요? A. 계정/인프라는 거의 없습니다. prod(GCP spective-prod)·Cloudflare·토스PG·Resend·Supabase·도메인은 이미 알렉스앤앨리스 소유입니다. 열정팩토리가 실제로 넘기는 건 ① 소스코드 사본, ② prod 접근 권한(이민수 단독 → 알렉스앤앨리스 담당자), ③ dotenvx 복호화 키 뿐입니다. (§7.1)
Q. GitHub 저장소 권한을 받나요? A. 아니요. 저장소 접근 권한이 아니라 소스코드 사본을 받습니다. dev 환경·CI 인프라(GitHub/AWS)는 열정팩토리 자산으로 잔류하며 dev는 일정 기간 후 폐기됩니다. (§7.1)
환경 · 시크릿
Q. .env.keys 복호화 키는 어떻게 받나요? A. Bitwarden 공유 볼트 멤버로 추가되어 입수하거나, GCP Secret Manager에 roles/secretmanager.secretAccessor 권한을 위임받습니다. prod 런타임은 Secret Manager에서 키를 읽으므로 로컬 평문 키 없이도 운영 가능합니다. 이메일/메신저 평문 전달은 금지입니다. (§3.3, §7.2)
Q. 시크릿 회전(rotation) 정책이 있나요? A. 현재 없습니다. 인수 후 회전 주기를 정하는 것을 권장합니다. (§7.2)
로컬 개발
Q. 로컬에서 안 떠요 / 포트는? A. mise install && bun install && bun run dev (web 앱 포트 3800). DB 스크립트(db:migrate 등)는 apps/web에서만 실행됩니다 — 루트에서 실행하면 "Script not found"가 납니다. (§3.4, §10.1)
Q. 보고서에 데이터가 안 보여요. A. 3중 동기화 규칙을 확인하세요. 보고서 필드는 스키마(3) · 라우터(3) · 페이지(4)를 모두 수정해야 하며, 한 곳이라도 빠지면 API는 반환해도 UI에 안 나타납니다. (§2, §9)
운영 · 배포
Q. 이메일 발송은 무엇으로 하나요? A. Resend입니다 (apps/web/server/lib/resend.ts, Tokyo region). (§4.4)
Q. prod 배포는 어떻게 하나요? A. .github/workflows/deploy-prod.yml 파이프라인 + 수동 명령(bun run deploy:cloudrun, prod 마이그레이션 bun run db:migrate:deploy). 상세는 5장, 배치 작업은 docs/infra/cloud-scheduler.md. (§5, §10.1)
10.4 핵심 파일 빠른 참조
| 파일 | 설명 |
|---|---|
apps/web/nuxt.config.ts | Nuxt 앱 설정 |
apps/web/server/routes/rpc/[...].ts | 단일 API 엔드포인트 |
apps/web/server/orpc/routers/index.ts | 전체 API 구조 |
apps/web/prisma/schema.prisma | DB 스키마 |
turbo.json | 태스크 파이프라인 |
.github/workflows/deploy-prod.yml | prod 배포 파이프라인 |
docs/infra/cloud-scheduler.md | 배치 작업 가이드 |