Files
travel/README.md
Hyungi Ahn fd5a68e44a 🎯 프로젝트 리브랜딩: Kumamoto → Travel Planner v2.0
 주요 변경사항:
- 프로젝트 이름: 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

🌟 새로운 기능:
- 사용자 인증 및 권한 관리
- 다중 여행 계획 관리
- 여행 템플릿 시스템
- 공유 링크 및 댓글 시스템
- 관리자 대시보드
2025-11-25 10:39:58 +09:00

195 lines
4.7 KiB
Markdown

# ✈️ Travel Planner
**스마트한 여행 계획 관리 시스템**
다중 사용자를 지원하는 현대적인 여행 계획 웹 애플리케이션입니다. 여행 일정 관리, 지도 통합, 공유 기능을 제공합니다.
## 🌟 주요 기능
### 👥 멀티 사용자 시스템
- **사용자 인증**: JWT 기반 로그인/회원가입
- **관리자 시스템**: 사용자 및 시스템 관리
- **권한 관리**: 개인/공개 여행 계획 설정
### 🗺️ 여행 계획 관리
- **다중 여행 관리**: 여러 여행 계획 동시 관리
- **템플릿 시스템**: 도시별 여행 템플릿 제공
- **일정 관리**: 날짜별 상세 일정 작성
- **장소 검색**: Google Places API 통합
### 🔗 공유 및 협업
- **여행 공유**: 링크를 통한 여행 계획 공유
- **권한 설정**: 보기/편집/댓글 권한 제어
- **댓글 시스템**: 공유된 여행에 댓글 작성
### 🗺️ 지도 통합
- **Google Maps**: 장소 검색 및 경로 최적화
- **Leaflet**: 오프라인 지도 지원
- **경로 계획**: 여행지 간 최적 경로 제안
## 🚀 빠른 시작
### Docker로 실행 (권장)
```bash
# 저장소 클론
git clone <repository-url>
cd travel-planner
# Docker 환경 시작
./docker-start.sh
# 또는 수동 실행
docker-compose up -d
```
### 로컬 개발 환경
```bash
# 의존성 설치
npm install
# 개발 서버 시작
npm run dev
# API 서버 시작 (별도 터미널)
cd server
npm install
npm run dev
```
## 🔧 환경 설정
### 필수 환경 변수
```env
# 프론트엔드 (.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
```
### 데이터베이스 설정
```bash
# 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 배포
```bash
# 프로덕션 빌드
docker-compose -f docker-compose.prod.yml up -d
```
### 수동 배포
```bash
# 프론트엔드 빌드
npm run build
# 서버 시작
cd server
npm start
```
## 🤝 기여하기
1. Fork the repository
2. Create feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Open Pull Request
## 📝 라이선스
MIT License - 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.
## 📞 지원
- **이슈 리포트**: GitHub Issues
- **문서**: [Wiki](../../wiki)
- **FAQ**: [자주 묻는 질문](docs/FAQ.md)
---
**Travel Planner** - 당신의 완벽한 여행을 계획하세요! ✈️🗺️