ef1757181d
복잡도를 줄이기 위해 저장소 연동 기능을 전부 제거하고 프로젝트를 단독 단위로 운영한다. 백엔드: - modules/repo, modules/gitea 모듈 전체 삭제(엔티티/서비스/컨트롤러/DTO/역방향 동기화) - app.module 에서 RepoModule 제거 - ProjectService: repoCount 집계·repoRepo·"미분류" 시스템 프로젝트(ensureUnassigned/ onApplicationBootstrap)·isSystem 게이트 전부 제거. ProjectResponse 에서 repoCount/isSystem 제거 - Project 엔티티 is_system 컬럼 제거(dev synchronize 가 DROP) - ProjectModule forFeature 에서 Repo 제거 - Activity 타입 repo.linked/unlinked 제거 - env example 에서 Gitea/REPO_IMPORT 섹션 제거 프론트: - ProjectReposPage, useRepo 삭제. ProjectTabs 의 '저장소' 탭·repoCount prop 제거 - 4개 페이지의 :repo-count 제거, 라우트 /projects/:id/repos 제거 - types/project·project.store·mock 에서 repoCount/isSystem·Repo 뷰 제거 - ProjectListPage 저장소수/시스템 배지·gitea CSS 제거, activity 의 repo.* 케이스 제거 - types/repo 는 공용 ApiMember 만 유지 - 잔여 '저장소'/Gitea 사용자 문구를 프로젝트로 정리 검증: 백엔드 build/lint 0·8 tests, 프론트 type-check/lint/build 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
39 lines
2.0 KiB
Bash
39 lines
2.0 KiB
Bash
# ==========================================
|
|
# 백엔드 고유 설정 — 루트 .env 에서 내려주지 않는 값만 작성 (JWT/Gitea 등)
|
|
# DB/Redis/CORS/포트 등은 docker-compose 가 루트 .env.development 에서 주입한다.
|
|
# .example 을 복사해 .env.development 를 만들고 실제 값으로 채운다.
|
|
# ==========================================
|
|
|
|
# JWT 시크릿 (access/refresh 분리) — 임의의 강력한 랜덤 문자열로 교체
|
|
# 생성 예: node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
|
|
JWT_ACCESS_SECRET=change-me-access-secret
|
|
JWT_REFRESH_SECRET=change-me-refresh-secret
|
|
|
|
# 토큰 만료 시간
|
|
JWT_ACCESS_TTL=15m
|
|
JWT_REFRESH_TTL=14d
|
|
|
|
# --- 앱 URL (소셜 로그인/이메일 인증 리다이렉트) ---
|
|
# APP_API_URL: 백엔드 공개 주소(글로벌 prefix /api 포함) — 인증 메일 링크 생성에 사용.
|
|
# 미설정 시 http://localhost:3100/api 로 폴백.
|
|
APP_API_URL=http://localhost:3100/api
|
|
# FRONTEND_URL: 프론트 공개 주소 — 인증 완료/소셜 로그인 후 이 주소로 리다이렉트.
|
|
# 미설정 시 CORS_ORIGIN → http://localhost:5273 순으로 폴백.
|
|
FRONTEND_URL=http://localhost:5273
|
|
|
|
# --- 소셜 로그인 (OAuth) ---
|
|
# 각 제공자 콘솔에서 발급한 키. CLIENT_ID 가 비어 있으면 해당 소셜 로그인은 비활성화된다.
|
|
# 콜백 URL 은 각 콘솔에 등록한 값과 정확히 일치해야 한다(글로벌 prefix /api 포함).
|
|
KAKAO_CLIENT_ID=change-me-kakao-rest-api-key
|
|
KAKAO_CLIENT_SECRET=change-me-kakao-client-secret
|
|
KAKAO_CALLBACK_URL=http://localhost:3100/api/auth/kakao/callback
|
|
GOOGLE_CLIENT_ID=change-me-google-client-id
|
|
GOOGLE_CLIENT_SECRET=change-me-google-client-secret
|
|
GOOGLE_CALLBACK_URL=http://localhost:3100/api/auth/google/callback
|
|
|
|
# --- AI 에이전트 (Claude) ---
|
|
# Claude(Anthropic) API 키 — AI 채팅 패널용. 미설정 시 AI 기능 비활성.
|
|
CLAUDE_API_KEY=change-me-claude-api-key
|
|
# 사용할 모델 ID — 미설정 시 claude-sonnet-4-6. 콘솔에서 사용 가능한 모델로 교체 가능.
|
|
CLAUDE_MODEL=claude-sonnet-4-6
|