An open API service indexing awesome lists of open source software.

https://github.com/traguild/traguild-backend

모험가 길드 (API)
https://github.com/traguild/traguild-backend

docker express mysql nodejs socket-io

Last synced: 2 months ago
JSON representation

모험가 길드 (API)

Awesome Lists containing this project

README

          

# Traguild Backend (Capstone Design)

이 프로젝트는 인제대학교 캡스톤 디자인 프로젝트인 **Traguild**의 백엔드 서버입니다. Node.js (Express)를 기반으로 구축되었으며, 여행 가이드 및 매칭 서비스를 위한 REST API를 제공합니다.

## 🛠 기술 스택 (Tech Stack)

### Core
- **Node.js**: 자바스크립트 런타임 환경
- **Express.js**: 웹 애플리케이션 프레임워크

### Database & Storage
- **MySQL (v8.0)**: 관계형 데이터베이스 관리 시스템 (RDBMS)
- **Sequelize**: MySQL ORM (Object-Relational Mapping)
- **Elasticsearch (v7.13.4)**: 검색 엔진 및 분석

### Infrastructure & Tools
- **Docker & Docker Compose**: 컨테이너 기반 배포 및 관리 환경
- **Nginx**: 리버스 프록시 및 웹 서버
- **Swagger**: API 문서화 도구

### Major Libraries
- **Socket.io**: 실시간 통신
- **Bcrypt**: 비밀번호 해싱
- **Twilio**: SMS 발송 서비스
- **Winston**: 로깅 처리

---

## 🚀 시작하기 (Getting Started)

프로젝트를 로컬 환경 또는 서버에 배포하기 위한 방법입니다.

### 1. 전제 조건 (Prerequisites)
- [Node.js](https://nodejs.org/) (v14 이상 권장)
- [Docker](https://www.docker.com/) & Docker Compose

### 2. 환경 변수 설정 (Environment Setup)
프로젝트 루트 디렉토리에 `.env` 파일을 생성하고, `.env.example` 파일의 내용을 참고하여 환경 변수를 설정해주세요.

```bash
cp .env.example .env
```

**주요 환경 변수:**
- `PORT`: 서버 포트 (기본값: 3000)
- `DB_HOST`, `DB_USER`, `DB_PASSWORD`, `DB_NAME`: MySQL 데이터베이스 설정
- `ES_HOST`, `ES_PORT`: Elasticsearch 설정

### 3. 프로젝트 실행 (Running the Project)

#### Docker 환경에서 실행 (권장)
Docker Compose를 사용하여 데이터베이스(MySQL, Elasticsearch)와 애플리케이션을 한 번에 실행할 수 있습니다.

**개발 모드 (Development):**
```bash
npm run docker:dev
```
> `mysql-dev` 및 `elastic-dev` 컨테이너와 함께 개발 프로필로 실행됩니다.

**운영 모드 (Production):**
```bash
npm run docker
```
> `mysql-prod`, `elastic-prod`, 및 `nginx` 컨테이너와 함께 운영 프로필로 실행됩니다.

#### 로컬 환경에서 실행 (NPM)
데이터베이스가 로컬 또는 별도 서버에 실행 중이어야 합니다.

```bash
# 의존성 설치
npm install

# 개발 모드 실행
npm run start:dev

# 운영 모드 실행
npm run start
```

---

## 📂 프로젝트 구조 (Project Structure)

```
├── src
│ ├── config # 환경 설정 및 라이브러리 설정 (Swagger, DB 연결 등)
│ ├── controllers # 요청 처리 및 응답 반환 로직 (Controller Layer)
│ ├── middlewares # Express 미들웨어
│ ├── models # Sequelize 데이터베이스 모델 정의
│ ├── routes # API 라우팅 정의
│ ├── services # 비즈니스 로직 처리 (Service Layer)
│ ├── app.js # Express 앱 초기화
│ └── server.js # 서버 실행 엔트리 포인트
├── Dockerfile # Docker 이미지 빌드 설정
├── docker-compose.yml # Docker 서비스 오케스트레이션 설정
├── nginx.conf # Nginx 설정 파일
└── package.json # 프로젝트 의존성 및 스크립트 정의
```

## 📚 API 문서 (API Documentation)
서버가 실행 중일 때, 브라우저에서 `/api-docs` 경로로 접속하면 Swagger UI를 통해 API 문서를 확인할 수 있습니다.
- 로컬 개발 시: `http://localhost:3000/api-docs`
- **[API 명세서 보러가기 (API.md)](./API.md)**