Ai 칵테일 추천 & 커뮤니티 사이트
프로젝트명: SSOUL (칵테일을 좋아하는 사람들을 위한 서비스)
기술 스택: Next.js 15, React 19, TypeScript, Tailwind CSS
저장소: https://github.com/prgrms-web-devcourse-final-project/WEB5_6_HaeDokCoding_FE
# 의존성 설치
npm install
# 개발 서버 실행
npm run dev
# 빌드
npm run build
# 코드 포맷팅
npm run format
# 린트 검사
npm run lint프로젝트는 개발/운영 환경에 따라 다른 API URL을 사용합니다:
NEXT_PUBLIC_API_URL_DEV: 개발 환경 API URLNEXT_PUBLIC_API_URL_PROD: 운영 환경 API URL
src/
├── app/ # Next.js App Router 페이지
│ ├── layout.tsx # 루트 레이아웃
│ ├── page.tsx # 메인 페이지
│ ├── community/ # 커뮤니티 관련 페이지
│ ├── recipe/ # 칵테일 레시피 페이지
│ ├── recommend/ # 취향 추천 페이지
│ ├── login/ # 로그인 관련 페이지
│ ├── mypage/ # 마이페이지
│ └── api/ # API 설정
├── domains/ # 도메인별 컴포넌트
│ ├── community/ # 커뮤니티 도메인
│ ├── recipe/ # 레시피 도메인
│ ├── recommend/ # 추천 도메인
│ ├── login/ # 로그인 도메인
│ ├── mypage/ # 마이페이지 도메인
│ └── shared/ # 공통 도메인 컴포넌트
└── shared/ # 공통 컴포넌트 및 유틸
├── components/ # 공통 UI 컴포넌트
├── styles/ # 글로벌 스타일
├── assets/ # 이미지, 아이콘 등
├── hook/ # 공통 훅
├── types/ # 타입 정의
└── utills/ # 유틸리티 함수
- 소셜 로그인: Google, Kakao, Naver 지원
- 상태 관리: Zustand + cookie 기반
- 주요 파일:
src/domains/shared/store/auth.ts: 인증 상태 관리src/domains/login/hook/useAuthHooks.ts: 로그인 관련 훅src/app/api/config/appConfig.ts: API 설정
- 3D 애니메이션: GSAP + Three.js 기반 칵테일 드롭 애니메이션
- 스크롤 슬라이더: 커뮤니티, 레시피, 추천 섹션을 스크롤로 탐색
- 반응형 디자인: 모바일데스크톱 최적화
- 주요 컴포넌트:
CocktailDrop: 3D 칵테일 드롭 애니메이션MainSlide: 스크롤 기반 슬라이더StarMain: 별 배경 애니메이션HomeLogo: 로고 애니메이션
- 기능:
- 스크롤 스무딩 (ScrollSmoother)
- 반응형 로고 위치 조정
- 주요 컴포넌트:
CocktailList: 칵테일 목록 표시Accordion: 필터링 옵션SelectBox: 정렬 옵션
- 기능: 검색, 필터링, 정렬
- 상세 페이지:
/recipe/[id]- 개별 칵테일 상세 정보
- 주요 컴포넌트:
PostCard: 게시물 카드CommunityTab: 카테고리 탭WriteBtn: 글쓰기 버튼
- 카테고리: 레시피, 팁, 질문, 자유
- 글쓰기:
/community/write - 상세 페이지:
/community/[id]
- 챗봇 기반 추천:
ChatSection컴포넌트 - 주요 컴포넌트:
BotMessage,UserMessage: 메시지 컴포넌트BotOptions: 선택 옵션MessageInput: 입력창TypingIndicator: 타이핑 효과
- 기본 리다이렉트:
/mypage→/mypage/mybar - 주요 섹션:
/mypage/mybar: 나만의 바/mypage/my-active: 활동 내역 (게시물, 댓글, 좋아요)/mypage/my-alarm: 알림 설정/mypage/my-setting: 계정 설정
- 소셜 로그인:
SocialLogin컴포넌트 - 성공 페이지:
/login/success - 신규 사용자:
/login/user/first-user
- Zustand: 클라이언트 상태 관리
- Persist: localStorage를 통한 상태 영속화
- 주요 스토어:
auth.ts: 사용자 인증 상태accordionStore.ts: 아코디언 UI 상태
- Tailwind CSS: 스타일링
- React Hot Toast: 토스트 알림
- Lottie: 로딩 애니메이션
- GSAP: 고급 애니메이션
- Responsive: 모바일/데스크톱 대응
- ESLint: 코드 품질 관리
- Prettier: 코드 포맷팅
- Husky: Git hooks
- Lint-staged: 커밋 전 검사
next.config.ts: Next.js 설정tailwind.config.js: Tailwind CSS 설정eslint.config.mjs: ESLint 설정tsconfig.json: TypeScript 설정
프로젝트는 모바일 우선(Mobile-first) 접근 방식을 사용합니다:
- 모바일: 기본 스타일
- 태블릿:
md:prefix - 데스크톱:
lg:,xl:prefix
- 환경 변수: 개발/운영 환경에 맞는 API URL 설정 필요
- API 통신:
credentials: 'include'설정으로 쿠키 기반 인증 - Git Hooks: Husky 설정으로 커밋 전 자동 검사
- 저장소 이슈: https://github.com/prgrms-web-devcourse-final-project/WEB5_6_HaeDokCoding_FE/issues
- 주요 브랜치:
main(메인),dev(개발)
작성일: 2025-10-14
작성자: 정은빈 | 김아현 | 문태민
버전: 1.0