모집 중인 모각작 세션을 찾아보고 참여하세요.
Translation pending
SocialTypeScript · CSSGitHub @dnd-side-projectOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
[GAK] 모여서 각자 작업 서비스
Translation pending
Taken from the repository README
Loading the full README.
Read the full 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 |