프로젝트 명: 하늘빛바다펜션 (skyblu.kr)한 줄 소개: Next.js App Router 기반 남해 펜션 예약 웹사이트배포 주소: https://skyblu.vercel.app
🏠 app
├── 📂 about ────────────────────── ℹ️ 펜션 소개 페이지
├── 📂 auth
│ ├── 📃 login ────────────────── 👤 로그인 페이지
│ ├── 📃 sign-up ──────────────── 👤 회원가입 페이지
│ ├── 📃 sign-up-success ──────── ✅ 회원가입 완료 페이지
│ └── 📃 error ────────────────── ⚠️ 인증 에러 페이지
├── 📂 faq ──────────────────────── ❓ 자주 묻는 질문 페이지
├── 📂 guideline ────────────────── 📋 이용 안내 페이지
├── 📂 notices
│ ├── 📃 [id] ─────────────────── 📰 공지사항 상세 페이지
│ └── 📃 page ─────────────────── 📰 공지사항 목록 페이지
├── 📂 reservation ──────────────── 📅 예약 페이지
├── 📂 rooms
│ ├── 📃 [type]/[id] ──────────── 🏠 객실 상세 페이지
│ ├── 📃 [type] ───────────────── 🏠 객실 타입별 목록 페이지
│ └── 📃 page ─────────────────── 🏠 전체 객실 페이지
├── 📂 special
│ ├── 📃 garden ───────────────── 🌿 정원 소개 페이지
│ ├── 📃 lounge ───────────────── 🛋️ 라운지 소개 페이지
│ ├── 📃 oceanview ────────────── 🌊 오션뷰 소개 페이지
│ └── 📃 pool ─────────────────── 🏊 수영장 소개 페이지
├── layout.tsx
├── globals.css
├── manifest.ts ─────────────────── 📱 PWA 매니페스트
├── robots.ts ───────────────────── 🤖 SEO robots.txt
└── sitemap.ts ──────────────────── 🗺️ SEO sitemap
📂 src
├── 📂 app
│ ├── 📂 http ─────────────────── 🌐 Axios 인스턴스 및 설정
│ ├── 📂 providers ────────────── 🔌 React Query, Lenis 프로바이더
│ └── 📂 supabase ─────────────── 🔐 Supabase 클라이언트/미들웨어
├── 📂 entities
│ ├── 📂 asset ────────────────── 🖼️ 자산(이미지) 도메인 로직
│ ├── 📂 asset-category ───────── 🗂️ 자산 카테고리 도메인 로직
│ ├── 📂 notice ───────────────── 📰 공지사항 도메인 로직
│ └── 📂 room ─────────────────── 🏠 객실 도메인 로직
├── 📂 pages ────────────────────── 📄 페이지별 UI/로직 컴포넌트
│ ├── 📂 about
│ ├── 📂 auth
│ ├── 📂 faq
│ ├── 📂 guideline
│ ├── 📂 home
│ ├── 📂 notices
│ ├── 📂 reservation
│ ├── 📂 rooms
│ └── 📂 special
├── 📂 shared
│ ├── 📂 data ─────────────────── 📊 정적 데이터
│ ├── 📂 hooks ────────────────── 🪝 공통 커스텀 훅
│ ├── 📂 lib ──────────────────── 🛠️ 유틸리티 함수
│ ├── 📂 types ────────────────── 📝 공통 타입 정의
│ └── 📂 ui ───────────────────── 🎨 shadcn/ui 기반 공통 컴포넌트
└── 📂 widgets ──────────────────── 🧩 재사용 가능한 위젯 컴포넌트
pnpm installenv.example를 복사하여 .env.local 파일을 생성하고 필요한 값을 입력하세요.
cp env.example .env.localpnpm dev브라우저에서 http://localhost:3000 으로 접속합니다.
pnpm dev # 개발 서버 실행
pnpm build # 프로덕션 빌드
pnpm start # 프로덕션 서버 실행
pnpm lint # ESLint 실행app/: Next.js App Router 라우트 및 메타데이터 설정src/pages/: 페이지별 UI 컴포넌트 및 비즈니스 로직 (도메인별 분리)src/entities/: 도메인 모델, API 통신, 헬퍼 함수src/widgets/: 재사용 가능한 섹션/위젯 단위 컴포넌트src/shared/: 공통 유틸리티, 훅, UI 컴포넌트
Vercel을 통한 배포를 권장합니다.
- 빌드 명령:
pnpm build - 실행 명령:
pnpm start - 환경변수: 위 표의 환경변수를 배포 환경에 설정
- 원격 이미지: Supabase Storage 호스트는
next.config.ts의images.remotePatterns에 등록되어 있어야 합니다. - 폰트: KBIZserif, Pretendard GOV 폰트를 사용합니다. (
public/fonts/) - SEO:
manifest.ts,robots.ts,sitemap.ts를 통해 SEO 최적화가 적용되어 있습니다.