3030```
3131devnogi-front/
3232├── src/
33- │ ├── app/ # Next.js App Router
34- │ │ ├── (auth)/ # 인증 관련 페이지 (sign-in)
35- │ │ ├── (main)/ # 메인 애플리케이션 (auction, auction-history, community)
36- │ │ ├── api/ # BFF API 라우트 (게이트웨이로 프록시)
37- │ │ └── fonts/ # 폰트 파일 (Pretendard, Mabinogi Classic)
33+ │ ├── app/ # Next.js App Router
34+ │ │ ├── (auth)/ # 인증 페이지 그룹
35+ │ │ │ ├── sign-in/ # 로그인 페이지
36+ │ │ │ ├── sign-up/ # 회원가입 페이지
37+ │ │ │ └── social-callback/ # 소셜 로그인 콜백
38+ │ │ ├── (main)/ # 메인 애플리케이션 (NavBar 포함)
39+ │ │ │ ├── auction/ # 경매장 페이지
40+ │ │ │ ├── auction-history/ # 거래 내역 페이지
41+ │ │ │ ├── community/ # 커뮤니티 페이지
42+ │ │ │ │ ├── [id]/ # 상세 페이지
43+ │ │ │ │ └── write/ # 글쓰기 페이지
44+ │ │ │ └── mypage/ # 마이페이지
45+ │ │ ├── api/ # BFF API 라우트
46+ │ │ │ ├── auth/ # 인증 API
47+ │ │ │ ├── posts/ # 게시글 API
48+ │ │ │ ├── comments/ # 댓글 API
49+ │ │ │ ├── boards/ # 게시판 API
50+ │ │ │ ├── auction-history/ # 경매 내역 API
51+ │ │ │ └── item-categories/ # 아이템 카테고리 API
52+ │ │ └── fonts/ # 폰트 파일
3853│ ├── components/
39- │ │ ├── page/ # 페이지별 컴포넌트
40- │ │ │ ├── auction/ # 경매장 관련
41- │ │ │ ├── auction-history/ # 거래 내역 관련
42- │ │ │ └── community/ # 커뮤니티 관련
43- │ │ └── ui/ # Shadcn UI 컴포넌트
54+ │ │ ├── page/ # 페이지별 컴포넌트
55+ │ │ │ ├── auction/ # 경매장 관련
56+ │ │ │ ├── auction-history/ # 거래 내역 관련
57+ │ │ │ ├── community/ # 커뮤니티 관련
58+ │ │ │ └── auth/ # 인증 관련
59+ │ │ ├── commons/ # 공용 컴포넌트
60+ │ │ ├── navigation/ # 네비게이션 컴포넌트
61+ │ │ ├── errors/ # 에러 페이지 컴포넌트
62+ │ │ └── ui/ # Shadcn UI 컴포넌트
63+ │ ├── hooks/ # 커스텀 React Hooks
64+ │ ├── types/ # TypeScript 타입 정의
65+ │ ├── contexts/ # React Context
4466│ ├── lib/
45- │ │ └── api/ # API 클라이언트 & 서버 설정
46- │ │ ├── clients.ts # clientAxios, TanStack Query 설정
47- │ │ └── server.ts # createServerAxios, MSW 초기화
48- │ ├── mocks/ # MSW 모킹 설정
49- │ │ ├── data/ # Mock JSON 데이터
50- │ │ ├── server.ts # MSW 핸들러
51- │ │ └── initServer.ts # MSW 서버 초기화
52- │ └── utils/ # 공통 유틸리티 함수
53- └── public/ # 정적 파일
67+ │ │ ├── api/ # API 클라이언트 & 서버 설정
68+ │ │ │ ├── clients.ts # clientAxios, TanStack Query 설정
69+ │ │ │ ├── server.ts # createServerAxios, MSW 초기화
70+ │ │ │ └── gateway-selector.ts # 게이트웨이 URL 선택
71+ │ │ └── auth/ # 인증 관련 유틸
72+ │ ├── mocks/ # MSW 모킹 설정
73+ │ │ ├── data/ # Mock JSON 데이터
74+ │ │ ├── server.ts # MSW 핸들러
75+ │ │ └── initServer.ts # MSW 서버 초기화
76+ │ └── utils/ # 공통 유틸리티 함수
77+ ├── public/ # 정적 파일
78+ ├── Dockerfile # Docker 멀티 스테이지 빌드
79+ └── docker-compose-*.yml # Docker Compose 설정
5480```
5581
82+ ## 주요 기능
83+
84+ ### 인증 시스템
85+ - ** 이메일 로그인** : 이메일/비밀번호 기반 로그인
86+ - ** 소셜 로그인** : 구글, 카카오, 네이버 OAuth 연동
87+ - ** 회원가입** : 이메일/닉네임 중복 체크, 약관 동의
88+ - ** 세션 관리** : 쿠키 기반 인증 상태 유지
89+
90+ ### 커뮤니티
91+ - ** 게시글 목록** : 카드 형태 UI, 무한 스크롤
92+ - ** 카테고리 필터** : 게시판별 분류
93+ - ** 정렬 옵션** : 최신순, 인기순, 댓글순, 조회순
94+ - ** 게시글 상세** : 댓글 작성 및 조회
95+ - ** 글쓰기** : 모달 기반 게시글 작성
96+
97+ ### 경매 내역
98+ - ** 무한 스크롤** : TanStack Query 기반 페이지네이션
99+ - ** 검색 기능** : 아이템 이름 검색
100+ - ** 필터링** : 카테고리, 가격 범위, 날짜 범위, 아이템 옵션
101+ - ** 정렬** : 거래 최신순, 가격순 등
102+ - ** 반응형 UI** : 데스크톱 사이드바 / 모바일 모달 필터
103+
104+ ### 마이페이지
105+ - 사용자 정보 조회 및 프로필 편집
106+
56107## 아키텍처
57108
58109### BFF (Backend for Frontend) 패턴
@@ -94,6 +145,18 @@ Backend Services
94145- ` staleTime: 200ms `
95146- 윈도우 포커스, 재연결, 마운트 시 자동 refetch 비활성화
96147
148+ ### 커스텀 Hooks
149+
150+ | Hook | 용도 |
151+ | ------| ------|
152+ | ` useInfiniteAuctionHistory ` | 경매 내역 무한 스크롤 |
153+ | ` useAuctionHistory ` | 경매 내역 단일 페이지 조회 |
154+ | ` useInfinitePosts ` | 게시글 무한 스크롤 |
155+ | ` usePostDetail ` | 게시글 상세 조회 |
156+ | ` useItemCategories ` | 아이템 카테고리 트리 조회 |
157+ | ` useSearchOptions ` | 검색 옵션 조회 |
158+ | ` useItemInfos ` | 아이템 정보 조회 |
159+
97160### API 모킹 (MSW)
98161
99162** 활성화 조건:**
@@ -122,6 +185,7 @@ http://168.107.43.221:8080/
122185| --------| --------| ---------| -----------|
123186| OPEN API BATCH | ` /oab ` | [ Swagger UI] ( http://138.2.126.248:8080/swagger-ui/index.html ) | 경매장, 거래 내역 |
124187| 커뮤니티 서버 | ` /dcs/api ` | [ Swagger UI] ( http://3.39.119.27/swagger-ui/index.html ) | 게시판, 게시글, 댓글 |
188+ | Auth 서버 | ` /das/api ` | - | 인증, 회원가입, 소셜 로그인 |
125189
126190** 커뮤니티 API 응답 구조:**
127191``` typescript
@@ -134,6 +198,38 @@ http://168.107.43.221:8080/
134198}
135199```
136200
201+ ### API 라우트 목록
202+
203+ ** 인증 API (` /api/auth/* ` )**
204+ ```
205+ POST /api/auth/login # 로그인
206+ POST /api/auth/signup # 회원가입
207+ POST /api/auth/signup/social # 소셜 회원가입
208+ POST /api/auth/logout # 로그아웃
209+ GET /api/auth/me # 현재 사용자 정보
210+ POST /api/auth/check-email # 이메일 중복 체크
211+ POST /api/auth/check-nickname # 닉네임 중복 체크
212+ ```
213+
214+ ** 커뮤니티 API (` /api/posts/* ` , ` /api/comments/* ` )**
215+ ```
216+ GET /api/posts # 전체 게시글 조회
217+ GET /api/posts/[id] # 게시판별 게시글 조회
218+ GET /api/posts/details/[id] # 게시글 상세 조회
219+ GET /api/comments/[postId] # 댓글 조회
220+ POST /api/comments/[postId] # 댓글 작성
221+ GET /api/boards # 게시판 목록 조회
222+ ```
223+
224+ ** 경매 API (` /api/auction-history/* ` )**
225+ ```
226+ GET /api/auction-history # 경매 내역 조회
227+ POST /api/auction-history/search # 상세 검색
228+ GET /api/item-categories # 아이템 카테고리 조회
229+ GET /api/item-infos # 아이템 정보 조회
230+ GET /api/search-option # 검색 옵션 조회
231+ ```
232+
137233### Slash Commands
138234
139235프로젝트에서 사용 가능한 커스텀 명령어:
@@ -315,6 +411,31 @@ npm run lint
315411npm test
316412```
317413
414+ ## Docker 배포
415+
416+ ### 로컬 개발
417+
418+ ``` bash
419+ # 개발 환경 실행
420+ docker-compose -f docker-compose-dev.yml up
421+
422+ # 로컬 환경 실행
423+ docker-compose -f docker-compose-local.yml up
424+ ```
425+
426+ ### 프로덕션 배포
427+
428+ ``` bash
429+ # 프로덕션 빌드 및 실행
430+ docker-compose -f docker-compose-prod.yaml up -d
431+ ```
432+
433+ ** Docker 설정:**
434+ - 멀티 스테이지 빌드 (node:20-alpine)
435+ - Next.js standalone 출력 모드
436+ - 기본 포트: 3010
437+ - 보안 사용자(nextjs)로 실행
438+
318439## 디자인 시스템
319440
320441### 디자인 철학
0 commit comments