generated from ttipo/project-base
c54df9cefa
아임웹 관리자 페이지에서 회원을 유입경로·그룹 기준으로 보고, 무료 강의 신청을 기록·조회하기 위한 백엔드다. 관리자 화면(아임웹)과 API(wandergo.net)가 다른 사이트라 인증은 쿠키 대신 Bearer 토큰으로 한다. - 관리자 인증: env 단일 계정(ADMIN_USERNAME/PASSWORD)을 여러 사람이 공유, 기기별 세션(로그아웃은 그 기기만, 비밀번호 변경 시 전체 무효) - 아임웹 Open API 연동: OAuth 연결·토큰 갱신, 회원·그룹 주기 동기화, 가입 폼 '홈페이지' 항목의 유입정보 파싱, 회원 엑셀 '유입경로' 가져오기 스크립트 - 회원 조회: 유입경로·그룹·기간 필터, 유입원 집계 - 강의 신청 기록: 신청 완료 화면이 보내는 공개 API(회원 확인·중복 방지·요청 제한), 오픈카톡 클릭 기록, 관리자 신청 내역 조회 - CORS 다중 도메인, env 검증(운영 필수값), CI e2e 전 마이그레이션 적용, 개발 컨테이너 메모리 한도 2g, 에러 코드 IMWEB_001~005·APPLY_001 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
1.3 KiB
Bash
25 lines
1.3 KiB
Bash
# ==========================================
|
|
# 백엔드 고유 시크릿 (development)
|
|
#
|
|
# ⚠️ DB / Redis / CORS / PORT 는 루트 .env.development 에서 docker-compose 가 주입한다.
|
|
# 여기에 중복 작성하지 말 것 (SSOT: 루트 .env — .claude/rules/env-structure.md).
|
|
# 이 파일에는 "루트에서 내려주지 않는 값"만 작성한다.
|
|
#
|
|
# 사용법: cp .env.development.example .env.development
|
|
# docker-compose 의 env_file 지시자 때문에 파일은 비어 있어도 존재해야 한다.
|
|
# ==========================================
|
|
|
|
# JWT 서명 키 — 인증 도입 시 사용. 환경마다 다른 값을 쓰고 절대 커밋하지 않는다.
|
|
JWT_SECRET=change-me-generate-a-long-random-string
|
|
JWT_ACCESS_EXPIRES_IN=1h
|
|
JWT_REFRESH_EXPIRES_IN=12h
|
|
|
|
# 아임웹 개발자센터에서 발급받은 앱 키 — 회원 개인정보를 읽을 수 있으므로 절대 커밋하지 않는다
|
|
IMWEB_CLIENT_ID=change-me-imweb-client-id
|
|
IMWEB_CLIENT_SECRET=change-me-imweb-client-secret
|
|
|
|
# 관리자 계정 — 관리자 화면 로그인용 단일 계정 (여러 사람이 함께 쓴다)
|
|
# 비밀번호를 바꾸고 재시작하면 로그인해 있던 모든 기기가 로그아웃된다. 12자 이상.
|
|
ADMIN_USERNAME=change-me-admin-username
|
|
ADMIN_PASSWORD=change-me-admin-password
|