replica-backend
replica/architecture.md를 읽습니다. 마이그레이션과 서버 코드를 작성하고, replica/backend.md(아래 체크리스트)를 최신 상태로 유지합니다.
규칙
- 공식, 공개 API만 사용하며, 사용자 본인의 키를 사용합니다. 절대 원본 앱의 비공개 엔드포인트를 호출하지 않고, OAuth 클라이언트를 재사용하지 않으며, 프록시를 통해 접근하지 않습니다.
- 사용자가 계정과 키를 생성합니다. 에이전트는 서비스에 가입하지 않고, 비밀번호, 카드 또는 라이브 키를 입력하지 않습니다. 사용자가 Stripe, Supabase, Resend 또는 Google Cloud 프로젝트를 생성하고
.env.local에 키를 넣습니다. 에이전트는 모든 변수 이름과 값 없이.env.example을 작성합니다. - 먼저 테스트 모드를 사용합니다. replica-deploy까지 Stripe 테스트 키와 테스트 카드를 사용합니다.
인증
- 확인이 포함된 이메일 가입, 비밀번호 재설정, 원본에 있는 경우 매직 링크. OAuth(Google, Apple)는 사용자 자신의 개발자 앱을 사용합니다.
- 세션: http-only 보안 쿠키. 모든 곳에서 로그아웃.
- recon 맵에 역할과 팀이 있는 경우: owner, admin, member, "이 사용자가 이 레코드에 이 작업을 수행할 수 있는가?"에 답하는 하나의 함수가 있습니다.
- 실제로 삭제되는 계정 삭제. Apple은 가입이 있는 앱에 이를 요구합니다.
데이터베이스
architecture.md의 마이그레이션, 버전 관리, 스크립트로 실행.- 모든 테이블에 대한 접근 규칙: Supabase의 행 수준 보안 정책 또는 모든 쿼리에서 호출되는 인증 함수. 테스트: 두 번째 사용자는 아무것도 반환받지 못해야 합니다.
- 현실적인 가짜 데이터(실제 인물 없음)가 포함된 시드 스크립트.
- 백업(호스트의 일일 백업 횟수 확인, 활성화되어 있는지 확인).
결제
- 요금제 가입을 위한 Stripe Checkout, 변경 및 취소를 위한 Customer Portal. 카드 양식을 구축하지 마세요.
- 웹훅: 서명 확인, 이벤트 ID 저장, 모든 핸들러를 멱등성으로 만듦(Stripe 재시도).
checkout.session.completed,customer.subscription.updated,customer.subscription.deleted,invoice.payment_failed를 처리합니다. - 구독 상태는 데이터베이스에 저장되고, 웹훅에 의해 업데이트되며, 앱이 읽습니다. 절대 클라이언트를 신뢰하지 마세요.
- 취소는 한 번의 클릭으로 가능합니다. 취소가 어려운 청구는 대부분의 앱에서 가장 큰 불만 사항이며, 많은 지역에서 불법입니다.
이메일 및 작업
- 자신의 도메인에서 Resend 또는 Postmark를 통한 트랜잭션 이메일. 템플릿은 새로 작성합니다.
- 시간 기반 작업(알림, 다이제스트, 동기화, 정리)에 대한 재시도 및 데드 레터 로그. 시간은 UTC 기준, 사용자 시간대로 표시합니다.
통합
기능 매트릭스의 각 통합에 대해: 공식 API, 필요한 OAuth 범위(가능한 최소), 제공자의 검토 프로세스, 속도 제한. Google 캘린더와 같은 Google 범위는 공개 출시 전에 Google의 OAuth 확인이 필요하며, 몇 주가 소요됩니다. 일찍 시작하고 backend.md에 기록합니다.
보안 체크리스트
- 비밀은 환경 변수에만 저장,
.env*는.gitignore에 포함, 클라이언트 번들에 없음 - 모든 라우트에서 서버 측 입력 검증(zod 또는 유사)
- 모든 읽기 및 쓰기에서 권한 확인, 두 번째 사용자로 테스트
- 인증, 가입, 이메일 또는 SMS를 보내는 모든 작업에 속도 제한
- 웹훅 서명 확인
- 업로드: 크기 및 유형 제한, 별도의 도메인 또는 버킷에서 제공
- URL 또는 로그에 사용자 데이터 없음
- 종속성 감사(
npm audit) - 개인정보 보호정책에 모든 처리업체(Stripe, Resend, 호스트, 분석) 나열
출력
작동하는 인증, 데이터베이스, 결제(테스트 모드), 이메일 및 통합, .env.example, 체크리스트가 완료된 replica/backend.md, 업데이트된 기능 매트릭스 행. 다음: /replica-test.