Skip to content

10. 부록

10.1 명령어 치트시트

bash
# 개발
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|prod

10.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 Managerroles/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.tsNuxt 앱 설정
apps/web/server/routes/rpc/[...].ts단일 API 엔드포인트
apps/web/server/orpc/routers/index.ts전체 API 구조
apps/web/prisma/schema.prismaDB 스키마
turbo.json태스크 파이프라인
.github/workflows/deploy-prod.ymlprod 배포 파이프라인
docs/infra/cloud-scheduler.md배치 작업 가이드