🎯 프로젝트 리브랜딩: 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 🌟 새로운 기능: - 사용자 인증 및 권한 관리 - 다중 여행 계획 관리 - 여행 템플릿 시스템 - 공유 링크 및 댓글 시스템 - 관리자 대시보드
This commit is contained in:
199
README.md
199
README.md
@@ -1,54 +1,195 @@
|
||||
# 구마모토 여행 계획 사이트
|
||||
# ✈️ Travel Planner
|
||||
|
||||
2025년 2월 17일 ~ 2월 20일 구마모토 여행을 위한 가족 공유 여행 계획 사이트입니다.
|
||||
**스마트한 여행 계획 관리 시스템**
|
||||
|
||||
## 기능
|
||||
다중 사용자를 지원하는 현대적인 여행 계획 웹 애플리케이션입니다. 여행 일정 관리, 지도 통합, 공유 기능을 제공합니다.
|
||||
|
||||
- 📅 **여행 일정 관리**: 날짜별 일정을 추가하고 관리할 수 있습니다
|
||||
- 🗾 **관광지 정보**: 구마모토 주요 관광지 정보를 확인할 수 있습니다
|
||||
- 💰 **예산 관리**: 항목별 예산을 설정하고 환율을 적용해 원화로 확인할 수 있습니다
|
||||
- ✅ **체크리스트**: 준비물, 쇼핑 목록, 방문할 곳 등을 체크리스트로 관리합니다
|
||||
## 🌟 주요 기능
|
||||
|
||||
## 시작하기
|
||||
### 👥 멀티 사용자 시스템
|
||||
- **사용자 인증**: JWT 기반 로그인/회원가입
|
||||
- **관리자 시스템**: 사용자 및 시스템 관리
|
||||
- **권한 관리**: 개인/공개 여행 계획 설정
|
||||
|
||||
### 설치
|
||||
### 🗺️ 여행 계획 관리
|
||||
- **다중 여행 관리**: 여러 여행 계획 동시 관리
|
||||
- **템플릿 시스템**: 도시별 여행 템플릿 제공
|
||||
- **일정 관리**: 날짜별 상세 일정 작성
|
||||
- **장소 검색**: Google Places API 통합
|
||||
|
||||
### 🔗 공유 및 협업
|
||||
- **여행 공유**: 링크를 통한 여행 계획 공유
|
||||
- **권한 설정**: 보기/편집/댓글 권한 제어
|
||||
- **댓글 시스템**: 공유된 여행에 댓글 작성
|
||||
|
||||
### 🗺️ 지도 통합
|
||||
- **Google Maps**: 장소 검색 및 경로 최적화
|
||||
- **Leaflet**: 오프라인 지도 지원
|
||||
- **경로 계획**: 여행지 간 최적 경로 제안
|
||||
|
||||
## 🚀 빠른 시작
|
||||
|
||||
### Docker로 실행 (권장)
|
||||
|
||||
```bash
|
||||
npm install
|
||||
# 저장소 클론
|
||||
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
|
||||
```
|
||||
|
||||
브라우저에서 `http://localhost:5173`을 열어 확인하세요.
|
||||
## 🔧 환경 설정
|
||||
|
||||
### 빌드
|
||||
### 필수 환경 변수
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```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
|
||||
```
|
||||
|
||||
## 기술 스택
|
||||
### 데이터베이스 설정
|
||||
|
||||
- React 18
|
||||
- TypeScript
|
||||
- Vite
|
||||
- Tailwind CSS
|
||||
- date-fns
|
||||
```bash
|
||||
# PostgreSQL 설치 및 시작
|
||||
brew install postgresql
|
||||
brew services start postgresql
|
||||
|
||||
## 사용 방법
|
||||
# 데이터베이스 생성
|
||||
createdb travel_planner
|
||||
|
||||
1. **일정 추가**: 각 날짜 옆의 "+ 일정 추가" 버튼을 클릭하여 일정을 추가합니다
|
||||
2. **예산 설정**: 예산 관리 섹션에서 각 항목을 클릭하여 예산을 입력합니다
|
||||
3. **체크리스트**: 체크리스트에 항목을 추가하고 완료 시 체크박스를 클릭합니다
|
||||
# 마이그레이션 실행 (자동)
|
||||
npm start # 서버 시작 시 자동 실행
|
||||
```
|
||||
|
||||
## 공유하기
|
||||
## 📁 프로젝트 구조
|
||||
|
||||
이 사이트는 로컬 스토리지를 사용하여 데이터를 저장합니다. 가족과 공유하려면:
|
||||
```
|
||||
travel-planner/
|
||||
├── src/ # 프론트엔드 소스
|
||||
│ ├── components/ # React 컴포넌트
|
||||
│ ├── services/ # API 서비스
|
||||
│ ├── types/ # TypeScript 타입
|
||||
│ └── utils/ # 유틸리티 함수
|
||||
├── server/ # 백엔드 API
|
||||
│ ├── routes/ # API 라우트
|
||||
│ ├── migrations/ # DB 마이그레이션
|
||||
│ └── uploads/ # 파일 업로드
|
||||
├── docker/ # Docker 설정
|
||||
└── docs/ # 문서
|
||||
```
|
||||
|
||||
1. 개발 서버를 실행한 후 네트워크 IP로 접근하거나
|
||||
2. 빌드 후 정적 호스팅 서비스(Vercel, Netlify 등)에 배포하세요
|
||||
## 🛠️ 기술 스택
|
||||
|
||||
### 프론트엔드
|
||||
- **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** - 당신의 완벽한 여행을 계획하세요! ✈️🗺️
|
||||
Reference in New Issue
Block a user