|
| 1 | +# SSOUL 프로젝트 인수인계 문서 |
| 2 | + |
| 3 | +## �� 프로젝트 개요 |
| 4 | + |
| 5 | +**프로젝트명**: SSOUL (칵테일을 좋아하는 사람들을 위한 서비스) |
| 6 | +**기술 스택**: Next.js 15, React 19, TypeScript, Tailwind CSS |
| 7 | +**저장소**: https://github.com/prgrms-web-devcourse-final-project/WEB5_6_HaeDokCoding_FE |
| 8 | + |
| 9 | +## �� 시작하기 |
| 10 | + |
| 11 | +### 개발 환경 설정 |
| 12 | +```bash |
| 13 | +# 의존성 설치 |
| 14 | +npm install |
| 15 | + |
| 16 | +# 개발 서버 실행 |
| 17 | +npm run dev |
| 18 | + |
| 19 | +# 빌드 |
| 20 | +npm run build |
| 21 | + |
| 22 | +# 코드 포맷팅 |
| 23 | +npm run format |
| 24 | + |
| 25 | +# 린트 검사 |
| 26 | +npm run lint |
| 27 | +``` |
| 28 | + |
| 29 | +### 환경 변수 |
| 30 | +프로젝트는 개발/운영 환경에 따라 다른 API URL을 사용합니다: |
| 31 | +- `NEXT_PUBLIC_API_URL_DEV`: 개발 환경 API URL |
| 32 | +- `NEXT_PUBLIC_API_URL_PROD`: 운영 환경 API URL |
| 33 | + |
| 34 | +## �� 프로젝트 구조 |
| 35 | + |
| 36 | +``` |
| 37 | +src/ |
| 38 | +├── app/ # Next.js App Router 페이지 |
| 39 | +│ ├── layout.tsx # 루트 레이아웃 |
| 40 | +│ ├── page.tsx # 메인 페이지 |
| 41 | +│ ├── community/ # 커뮤니티 관련 페이지 |
| 42 | +│ ├── recipe/ # 칵테일 레시피 페이지 |
| 43 | +│ ├── recommend/ # 취향 추천 페이지 |
| 44 | +│ ├── login/ # 로그인 관련 페이지 |
| 45 | +│ ├── mypage/ # 마이페이지 |
| 46 | +│ └── api/ # API 설정 |
| 47 | +├── domains/ # 도메인별 컴포넌트 |
| 48 | +│ ├── community/ # 커뮤니티 도메인 |
| 49 | +│ ├── recipe/ # 레시피 도메인 |
| 50 | +│ ├── recommend/ # 추천 도메인 |
| 51 | +│ ├── login/ # 로그인 도메인 |
| 52 | +│ ├── mypage/ # 마이페이지 도메인 |
| 53 | +│ └── shared/ # 공통 도메인 컴포넌트 |
| 54 | +└── shared/ # 공통 컴포넌트 및 유틸 |
| 55 | + ├── components/ # 공통 UI 컴포넌트 |
| 56 | + ├── styles/ # 글로벌 스타일 |
| 57 | + ├── assets/ # 이미지, 아이콘 등 |
| 58 | + ├── hook/ # 공통 훅 |
| 59 | + ├── types/ # 타입 정의 |
| 60 | + └── utills/ # 유틸리티 함수 |
| 61 | +``` |
| 62 | + |
| 63 | +## �� 주요 기능 |
| 64 | + |
| 65 | +### 1. 인증 시스템 |
| 66 | +- **소셜 로그인**: Google, Kakao, Naver 지원 |
| 67 | +- **상태 관리**: Zustand + localStorage persist |
| 68 | +- **주요 파일**: |
| 69 | + - `src/domains/shared/store/auth.ts`: 인증 상태 관리 |
| 70 | + - `src/domains/login/hook/useAuthHooks.ts`: 로그인 관련 훅 |
| 71 | + - `src/app/api/config/appConfig.ts`: API 설정 |
| 72 | + |
| 73 | +### 2. 페이지별 기능 |
| 74 | + |
| 75 | +#### �� 메인 페이지 (`/`) |
| 76 | +- 현재 기본 구조만 구현됨 |
| 77 | +- 추후 확장 예정 |
| 78 | + |
| 79 | +#### �� 칵테일 레시피 (`/recipe`) |
| 80 | +- **주요 컴포넌트**: |
| 81 | + - `CocktailList`: 칵테일 목록 표시 |
| 82 | + - `Accordion`: 필터링 옵션 |
| 83 | + - `SelectBox`: 정렬 옵션 |
| 84 | +- **기능**: 검색, 필터링, 정렬 |
| 85 | +- **상세 페이지**: `/recipe/[id]` - 개별 칵테일 상세 정보 |
| 86 | + |
| 87 | +#### �� 커뮤니티 (`/community`) |
| 88 | +- **주요 컴포넌트**: |
| 89 | + - `PostCard`: 게시물 카드 |
| 90 | + - `CommunityTab`: 카테고리 탭 |
| 91 | + - `WriteBtn`: 글쓰기 버튼 |
| 92 | +- **카테고리**: 레시피, 팁, 질문, 자유 |
| 93 | +- **글쓰기**: `/community/write` |
| 94 | +- **상세 페이지**: `/community/[id]` |
| 95 | + |
| 96 | +#### �� 취향 추천 (`/recommend`) |
| 97 | +- **챗봇 기반 추천**: `ChatSection` 컴포넌트 |
| 98 | +- **주요 컴포넌트**: |
| 99 | + - `BotMessage`, `UserMessage`: 메시지 컴포넌트 |
| 100 | + - `BotOptions`: 선택 옵션 |
| 101 | + - `MessageInput`: 입력창 |
| 102 | + - `TypingIndicator`: 타이핑 효과 |
| 103 | + |
| 104 | +#### �� 마이페이지 (`/mypage`) |
| 105 | +- **기본 리다이렉트**: `/mypage` → `/mypage/mybar` |
| 106 | +- **주요 섹션**: |
| 107 | + - `/mypage/mybar`: 나만의 바 |
| 108 | + - `/mypage/my-active`: 활동 내역 (게시물, 댓글, 좋아요) |
| 109 | + - `/mypage/my-alarm`: 알림 설정 |
| 110 | + - `/mypage/my-setting`: 계정 설정 |
| 111 | + |
| 112 | +#### �� 로그인 (`/login`) |
| 113 | +- **소셜 로그인**: `SocialLogin` 컴포넌트 |
| 114 | +- **성공 페이지**: `/login/success` |
| 115 | +- **신규 사용자**: `/login/user/first-user` |
| 116 | + |
| 117 | +## �� 기술적 세부사항 |
| 118 | + |
| 119 | +### 상태 관리 |
| 120 | +- **Zustand**: 클라이언트 상태 관리 |
| 121 | +- **Persist**: localStorage를 통한 상태 영속화 |
| 122 | +- **주요 스토어**: |
| 123 | + - `auth.ts`: 사용자 인증 상태 |
| 124 | + - `accordionStore.ts`: 아코디언 UI 상태 |
| 125 | + |
| 126 | +### UI/UX |
| 127 | +- **Tailwind CSS**: 스타일링 |
| 128 | +- **React Hot Toast**: 토스트 알림 |
| 129 | +- **Lottie**: 로딩 애니메이션 |
| 130 | +- **GSAP**: 고급 애니메이션 |
| 131 | +- **Responsive**: 모바일/데스크톱 대응 |
| 132 | + |
| 133 | +### 개발 도구 |
| 134 | +- **ESLint**: 코드 품질 관리 |
| 135 | +- **Prettier**: 코드 포맷팅 |
| 136 | +- **Husky**: Git hooks |
| 137 | +- **Lint-staged**: 커밋 전 검사 |
| 138 | + |
| 139 | +## �� 주요 설정 파일 |
| 140 | + |
| 141 | +- `next.config.ts`: Next.js 설정 |
| 142 | +- `tailwind.config.js`: Tailwind CSS 설정 |
| 143 | +- `eslint.config.mjs`: ESLint 설정 |
| 144 | +- `tsconfig.json`: TypeScript 설정 |
| 145 | + |
| 146 | +## �� 반응형 디자인 |
| 147 | + |
| 148 | +프로젝트는 모바일 우선(Mobile-first) 접근 방식을 사용합니다: |
| 149 | +- **모바일**: 기본 스타일 |
| 150 | +- **태블릿**: `md:` prefix |
| 151 | +- **데스크톱**: `lg:`, `xl:` prefix |
| 152 | + |
| 153 | +## �� 주의사항 |
| 154 | + |
| 155 | +1. **환경 변수**: 개발/운영 환경에 맞는 API URL 설정 필요 |
| 156 | +2. **인증 토큰**: localStorage에 저장되므로 보안 고려 필요 |
| 157 | +3. **API 통신**: `credentials: 'include'` 설정으로 쿠키 기반 인증 |
| 158 | +4. **Git Hooks**: Husky 설정으로 커밋 전 자동 검사 |
| 159 | + |
| 160 | +## �� 추가 문의 |
| 161 | + |
| 162 | +- **저장소 이슈**: https://github.com/prgrms-web-devcourse-final-project/WEB5_6_HaeDokCoding_FE/issues |
| 163 | +- **주요 브랜치**: `main` (메인), `dev` (개발) |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +**작성일**: 2025-10-14 |
| 168 | +**작성자**: 이성헌 |
| 169 | +**버전**: 1.0 |
0 commit comments