✨ 주요 변경사항: - 프로젝트 이름: 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 🌟 새로운 기능: - 사용자 인증 및 권한 관리 - 다중 여행 계획 관리 - 여행 템플릿 시스템 - 공유 링크 및 댓글 시스템 - 관리자 대시보드
195 lines
4.7 KiB
Markdown
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** - 당신의 완벽한 여행을 계획하세요! ✈️🗺️ |