個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證[GAK] 모여서 각자 작업 서비스
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗
링크 하나로 빠르게 모여서, 제한된 시간 동안 각자 작업에 몰입하는 협업 플랫폼
| 분류 | 기술 |
|---|---|
| Framework | Next.js 16 (App Router) |
| UI | React 19, Tailwind CSS v4, Storybook |
| Language | TypeScript |
| Data/State | TanStack Query, Zustand |
| Validation/Form | Zod, React Hook Form |
| Realtime | SSE (Server-Sent Events) |
| Test | Jest, Vitest, Testing Library |
| CI/CD | GitHub Actions, Chromatic, Vercel |
src/app에서 구성하고, 서버/클라이언트 컴포넌트를 역할에 따라 분리src/app/api/**/route.ts에서 프런트 전용 API 경계를 제공src/lib/api/api-route-forwarder.ts를 통해 인증 쿠키 전달, 에러 응답 형식, 백엔드 요청 처리를 일관되게 관리src/proxy.ts에서 공개/보호 경로 분기, 토큰 만료 임박 시 리프레시 자동 시도src/app/api/sse/** + 클라이언트 훅으로 구독이 프로젝트는 기능 구현뿐 아니라, 프런트엔드에서 반복적으로 발생하는 API 호출/캐시 관리 문제를 일관된 규칙으로 다루는 데 초점을 맞췄습니다.
22.21.1 (.nvmrc)10.27.0 (packageManager)# 1. 저장소 클론
git clone https://github.com/dnd-side-project/dnd-14th-9-frontend.git
cd dnd-14th-9-frontend
# 2. pnpm 활성화
corepack enable
# 3. 의존성 설치
pnpm install
# 4. Git hooks 설정 (최초 1회)
pnpm prepare
# 5. 개발 서버 실행 (토큰 빌드 watch + Next dev 동시 실행)
pnpm dev
| 명령어 | 설명 |
|---|---|
pnpm dev | 토큰 watch + Next 개발 서버 실행 |
pnpm build | 디자인 토큰 생성 후 프로덕션 빌드 |
pnpm start | 프로덕션 서버 실행 |
pnpm storybook | Storybook 로컬 실행 (:6006) |
pnpm build-storybook | Storybook 정적 빌드 |
pnpm test | Jest 테스트 실행 |
pnpm test:auth-concurrency | 빌드 후 Refresh Token 다중 인스턴스 통합 검증 |
pnpm test:coverage | 커버리지 포함 테스트 |
pnpm lint | ESLint 검사 |
pnpm typecheck | TypeScript 타입 검사 |
pnpm codegen | Orval 기반 API 클라이언트 코드 생성 |
pnpm tokens | Style Dictionary 기반 디자인 토큰 생성 |
.env.local)이 프로젝트는 .env.example 대신 실제 사용 키를 기준으로 환경을 구성합니다.
아래 키를 .env.local에 설정하세요.
보안 원칙
- 실제 토큰/시크릿 값은 절대 저장소에 커밋하지 않습니다.
NEXT_PUBLIC_*변수는 브라우저에 노출되므로 비밀값을 넣지 않습니다..env*는 기본적으로.gitignore에 포함되어 있습니다.
| 키 | 필수 | 예시 | 용도 |
|---|---|---|---|
BACKEND_API_BASE | 필수 | https://<backend-api-origin> | 서버 측 API 호출 기본 URL, 프록시 토큰 재발급 호출 |
BACKEND_ORIGIN | 필수 | https://<backend-origin> | OAuth 인가 URL 생성 기준 origin |
FRONTEND_ORIGIN | 필수 | http://localhost:3000 | 서버 측 프런트 오리진 참조 |
NEXT_PUBLIC_BACKEND_API_BASE | 필수 | https://<backend-api-origin> | 클라이언트/API 호출 및 sitemap 데이터 소스 |
NEXT_PUBLIC_BACKEND_ORIGIN | 필수 | https://<backend-origin> | 백엔드 origin 공개값 (OAuth fallback) |
NEXT_PUBLIC_FRONTEND_ORIGIN | 필수 | https://<frontend-origin> | SEO canonical, metadata base URL |
NEXT_PUBLIC_ENABLE_DEVTOOLS | 선택 | true | 개발 환경 React Query Devtools 노출 제어 |
NEXT_PUBLIC_GOOGLE_ANALYTICS | 선택 | G-XXXXXXXXXX | Google Analytics 스크립트 주입 |
NEXT_PUBLIC_GOOGLE_VERIFICATION | 선택 | <google-verification-token> | Google Search Console 검증 |
NEXT_PUBLIC_NAVER_VERIFICATION | 선택 | <naver-verification-token> | 네이버 웹마스터 검증 |
NEXT_PUBLIC_WS_URL | 선택 | ws://localhost:8080 | 웹소켓 클라이언트 기본 주소 |
BACKEND_URL | 선택 | https://<backend-origin> | BACKEND_ORIGIN 미지정 시 fallback |
NEXT_PUBLIC_BACKEND_URL | 선택 | https://<backend-origin> | NEXT_PUBLIC_BACKEND_ORIGIN 미지정 시 fallback |
NEXT_PUBLIC_API_URL | 선택 | https://<backend-api-origin> | API URL 호환용 fallback |
.github/workflows/ci.yml)
main 대상 PR 생성 및 업데이트 시 lint -> 기존 Jest 단계 -> 어댑터 빌드 회귀 검사 -> build -> 인증 동시성 통합 검증 실행pnpm test:coverage --ci --coverageProvider=v8를 사용scripts/test-next-adapter-build.mjs)
onBuildComplete 어댑터를 연결해 실제 앱을 clean build하고, 어댑터와 출력 설정의 호환성을 검증.next를 정리하므로 개발 서버나 다른 빌드와 병렬 실행하지 않으며, 이후 pnpm build로 일반 실행 결과물을 생성scripts/auth-refresh-concurrency.mjs)
next start 프로세스 2개에서 회전형 Refresh Token 경합과 백엔드 멱등 계약을 로컬 가짜 백엔드로 검증.github/workflows/chromatic.yml)
27개 (src/test/**)24개 (src/stories/**/*.stories.tsx|ts)| 역할 | 이름 | GitHub |
|---|---|---|
| FE | 장근호 | Rootjang92 |
| FE | 이경환 | tnemnorivnelee |
| BE | 이소정 | Sojeong0430 |
| BE | 박용현 | yonghyeonpark |
| Design | 김시라 | - |
| Design | 임세원 | - |
MIT License. 자세한 내용은 LICENSE를 참고하세요.
NEXT_PUBLIC_APP_URL |
| 선택 |
http://localhost:3000 |
| URL 유틸 함수 fallback |