✨ 주요 변경사항: - 프로젝트 이름: kumamoto-travel-planner → travel-planner - 버전 업그레이드: v1.0.0 → v2.0.0 - 멀티유저 시스템 구현 (JWT 인증) - PostgreSQL 마이그레이션 시스템 추가 - Docker 컨테이너 이름 변경 - UI 브랜딩 업데이트 (Travel Planner) - API 서버 및 인증 시스템 추가 - 여행 공유 기능 구현 - 템플릿 시스템 추가 🔧 기술 스택: - Frontend: React + TypeScript + Vite - Backend: Node.js + Express + JWT - Database: PostgreSQL + 마이그레이션 - Infrastructure: Docker + Docker Compose 🌟 새로운 기능: - 사용자 인증 및 권한 관리 - 다중 여행 계획 관리 - 여행 템플릿 시스템 - 공유 링크 및 댓글 시스템 - 관리자 대시보드
4.7 KiB
4.7 KiB
✈️ Travel Planner
스마트한 여행 계획 관리 시스템
다중 사용자를 지원하는 현대적인 여행 계획 웹 애플리케이션입니다. 여행 일정 관리, 지도 통합, 공유 기능을 제공합니다.
🌟 주요 기능
👥 멀티 사용자 시스템
- 사용자 인증: JWT 기반 로그인/회원가입
- 관리자 시스템: 사용자 및 시스템 관리
- 권한 관리: 개인/공개 여행 계획 설정
🗺️ 여행 계획 관리
- 다중 여행 관리: 여러 여행 계획 동시 관리
- 템플릿 시스템: 도시별 여행 템플릿 제공
- 일정 관리: 날짜별 상세 일정 작성
- 장소 검색: Google Places API 통합
🔗 공유 및 협업
- 여행 공유: 링크를 통한 여행 계획 공유
- 권한 설정: 보기/편집/댓글 권한 제어
- 댓글 시스템: 공유된 여행에 댓글 작성
🗺️ 지도 통합
- Google Maps: 장소 검색 및 경로 최적화
- Leaflet: 오프라인 지도 지원
- 경로 계획: 여행지 간 최적 경로 제안
🚀 빠른 시작
Docker로 실행 (권장)
# 저장소 클론
git clone <repository-url>
cd travel-planner
# Docker 환경 시작
./docker-start.sh
# 또는 수동 실행
docker-compose up -d
로컬 개발 환경
# 의존성 설치
npm install
# 개발 서버 시작
npm run dev
# API 서버 시작 (별도 터미널)
cd server
npm install
npm run dev
🔧 환경 설정
필수 환경 변수
# 프론트엔드 (.env)
VITE_API_URL=http://localhost:3001
VITE_GOOGLE_OAUTH_CLIENT_ID=your-google-oauth-client-id
# 백엔드 (server/.env)
DATABASE_URL=postgresql://user:password@localhost:5432/travel_planner
JWT_SECRET=your-jwt-secret-key
GOOGLE_MAPS_API_KEY=your-google-maps-api-key
데이터베이스 설정
# PostgreSQL 설치 및 시작
brew install postgresql
brew services start postgresql
# 데이터베이스 생성
createdb travel_planner
# 마이그레이션 실행 (자동)
npm start # 서버 시작 시 자동 실행
📁 프로젝트 구조
travel-planner/
├── src/ # 프론트엔드 소스
│ ├── components/ # React 컴포넌트
│ ├── services/ # API 서비스
│ ├── types/ # TypeScript 타입
│ └── utils/ # 유틸리티 함수
├── server/ # 백엔드 API
│ ├── routes/ # API 라우트
│ ├── migrations/ # DB 마이그레이션
│ └── uploads/ # 파일 업로드
├── docker/ # Docker 설정
└── docs/ # 문서
🛠️ 기술 스택
프론트엔드
- React 18 + TypeScript
- Vite (빌드 도구)
- Tailwind CSS (스타일링)
- React Router (라우팅)
- Leaflet + Google Maps (지도)
백엔드
- Node.js + Express
- PostgreSQL (데이터베이스)
- JWT (인증)
- Multer (파일 업로드)
인프라
- Docker + Docker Compose
- Nginx (프로덕션)
📊 API 문서
인증 API
POST /api/auth/register # 회원가입
POST /api/auth/login # 로그인
GET /api/auth/verify # 토큰 검증
여행 계획 API
GET /api/travel-plans # 여행 목록
POST /api/travel-plans # 여행 생성
GET /api/travel-plans/:id # 여행 조회
PUT /api/travel-plans/:id # 여행 수정
DELETE /api/travel-plans/:id # 여행 삭제
공유 API
POST /api/share/create # 공유 링크 생성
GET /api/share/:code # 공유된 여행 조회
🔒 보안
- JWT 토큰: 안전한 사용자 인증
- 비밀번호 해시: bcrypt 암호화
- SQL 인젝션 방지: 매개변수화된 쿼리
- CORS 설정: 허용된 도메인만 접근
🌍 배포
Docker 배포
# 프로덕션 빌드
docker-compose -f docker-compose.prod.yml up -d
수동 배포
# 프론트엔드 빌드
npm run build
# 서버 시작
cd server
npm start
🤝 기여하기
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
📝 라이선스
MIT License - 자세한 내용은 LICENSE 파일을 참조하세요.
📞 지원
Travel Planner - 당신의 완벽한 여행을 계획하세요! ✈️🗺️