장단콩 보드게임 & 미니어처 게임 클럽

가입 신청 텔레그램 알림 설계

배경

register.js는 사용자가 가입 신청을 제출하면 users/{uid} Firestore 문서를 status: "pending"으로 생성(또는 rejected/문서없음 상태에서 재신청 시 덮어쓰기)한다. 운영자는 admin.html을 직접 열어야만 새 신청을 확인할 수 있다. 신청이 들어오는 즉시 운영자 텔레그램 채팅방으로 알림을 보내 확인 지연을 없앤다.

이 사이트는 서버가 없는 정적 Jekyll 사이트이며, 클라이언트 JS만으로 텔레그램 봇 토�큰을 다루면 토큰이 공개 코드에 노출되므로, Firebase Cloud Functions를 서버리스 계층으로 신규 도입한다.

아키텍처

register.js (setDoc: users/{uid}, status="pending")
        │
        ▼  Firestore 문서 쓰기
Cloud Function: notifyOnPendingSignup
  (functions.firestore.document("users/{uid}").onWrite)
        │  변경 후 status === "pending" 이고
        │  변경 전 status !== "pending" 인 경우에만 실행
        ▼
Telegram Bot API: POST https://api.telegram.org/bot<TOKEN>/sendMessage

인프라

에러 처리

범위 밖