여행 계획과 장소 관리를 효율적으로 할 수 있는 개인화된 지도 기반 여행 플래너 웹 애플리케이션
travel-planner/
├── apps/
│ ├── web/ # React 19 + Vite 프론트엔드
│ └── api/ # NestJS 백엔드
└── docs/ # PRD 문서
- 프레임워크: React 19
- 빌드 도구: Vite
- 스타일링: Tailwind CSS
- HTTP 클라이언트: Ky
- 라우팅: React Router v7
- 언어: TypeScript (strict mode)
- 프레임워크: NestJS
- 데이터베이스: SQLite (개발) / Cloudflare D1 (프로덕션)
- ORM: Prisma
- 인증: JWT + Passport
- 문서화: Swagger/OpenAPI
- 언어: TypeScript (strict mode)
- 패키지 매니저: pnpm
- 빌드 시스템: Turborepo
- 코드 품질: ESLint, Prettier
로컬 개발:
- Node.js >= 20.0.0
- pnpm >= 9.0.0
Docker 개발 (권장):
- Docker Desktop
- Docker Compose
# 의존성 설치
pnpm install
# 환경 변수 설정
cp apps/web/.env.example apps/web/.env.local
cp apps/api/.env.example apps/api/.env
# 데이터베이스 마이그레이션
cd apps/api
pnpm prisma:migrate방법 1: Docker 개발 (권장)
# Docker로 전체 시스템 실행 (자동 빌드 + 실행)
pnpm dev
# 백그라운드 실행
pnpm dev:detached
# 로그 확인
pnpm dev:logs
# 중지
pnpm dev:stop
# 재시작
pnpm dev:restart방법 2: 로컬 개발 (IDE 디버깅용)
# 로컬에서 전체 시스템 실행
pnpm dev:local
# 개별 앱 실행
cd apps/api && pnpm dev
cd apps/web && pnpm dev접속 주소:
- 프론트엔드: http://localhost:3000
- 백엔드 API: http://localhost:4000/api
- API 문서: http://localhost:4000/api/docs
# 전체 빌드
pnpm build
# 타입 체크
pnpm typecheck
# 린트
pnpm lint
# 포맷팅
pnpm format- ✅ 프로젝트 초기 설정
- 🔄 인증 시스템 (이메일/비밀번호)
- 🔄 지도 기반 장소 관리
- 🔄 목록 생성 및 관리
- 🔄 기본 카테고리 시스템
- 소셜 로그인 (Google, Kakao, Apple)
- 검색 및 필터링 고도화
- 이미지 업로드 및 최적화
- 경로 최적화
- 공유 기능
- 통계 및 인사이트
- TypeScript strict 모드 사용
- any 타입 사용 금지
- 500줄 이상 파일 리팩토링 검토
- 기능별 컴포넌트/모듈 분리
MIT