Skip to content

Commit b622b42

Browse files
committed
docs: Add README and API documentation.
1 parent 677884e commit b622b42

2 files changed

Lines changed: 272 additions & 0 deletions

File tree

API.md

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
# API 명세서 (API Specification)
2+
3+
이 프로젝트의 REST API 명세서입니다.
4+
서버가 실행 중일 때 [http://localhost:3000/api-docs](http://localhost:3000/api-docs) 에서 Swagger UI를 통해 상세 정보를 확인하고 테스트할 수 있습니다.
5+
6+
---
7+
8+
## 🔐 인증 (Auth)
9+
**Base Path:** `/auth`
10+
11+
| Method | Endpoint | Description |
12+
| :--- | :--- | :--- |
13+
| `POST` | `/` | 휴대폰 인증 코드 발송 요청 |
14+
| `POST` | `/verify` | 휴대폰 인증 코드 검증 |
15+
| `PUT` | `/signUp` | 회원가입 |
16+
| `POST` | `/signIn` | 로그인 |
17+
| `POST` | `/reset` | 비밀번호 재설정 |
18+
19+
---
20+
21+
## 👤 회원 정보 (User Info & MyPage)
22+
23+
### 기본 정보 (User Info)
24+
**Base Path:** `/userInfo`
25+
26+
| Method | Endpoint | Description |
27+
| :--- | :--- | :--- |
28+
| `PUT` | `/` | 유저 생성 |
29+
| `POST` | `/` | 유저 정보 조회 |
30+
| `POST` | `/all` | 모든 유저 조회 |
31+
| `GET` | `/userImg/:idx` | 유저 프로필 이미지 조회 |
32+
| `POST` | `/update` | 유저 정보 수정 |
33+
| `POST` | `/updateUserImg` | 유저 프로필 이미지 수정 |
34+
| `POST` | `/updateforcredit` | 유저 크레딧 갱신 |
35+
36+
### 유저 관계 (User Relation)
37+
**Base Path:** `/userRelation`
38+
39+
| Method | Endpoint | Description |
40+
| :--- | :--- | :--- |
41+
| `PUT` | `/` | 관계 생성 (팔로우 등) |
42+
| `POST` | `/` | 관계 목록 조회 |
43+
| `DELETE` | `/delete` | 관계 삭제 (언팔로우) |
44+
45+
### 칭호 (User Title)
46+
**Base Path:** `/userTitle`
47+
48+
| Method | Endpoint | Description |
49+
| :--- | :--- | :--- |
50+
| `PUT` | `/` | 칭호 생성 |
51+
| `POST` | `/` | 칭호 목록 조회 |
52+
| `POST` | `/update` | 칭호 상태 수정 |
53+
54+
### 마이페이지 기타 (Report, Keyword, Alarm, Credit)
55+
56+
| Base Path | Method | Endpoint | Description |
57+
| :--- | :--- | :--- | :--- |
58+
| `/report` | `PUT` | `/` | 신고 접수 |
59+
| `/report` | `POST` | `/all` | 모든 신고 내역 조회 |
60+
| `/report` | `POST` | `/byUser` | 유저별 신고 내역 조회 |
61+
| `/report` | `POST` | `/update` | 신고 처리 상태 수정 |
62+
| `/keyword` | `PUT` | `/` | 키워드 생성 |
63+
| `/keyword` | `POST` | `/all` | 키워드 목록 조회 |
64+
| `/keyword` | `POST` | `/update` | 키워드 수정 |
65+
| `/alarmType` | `PUT` | `/` | 알림 타입 생성 |
66+
| `/alarmType` | `POST` | `/all` | 알림 타입 조회 |
67+
| `/alarmType` | `POST` | `/update` | 알림 타입 수정 |
68+
| `/creditHistory`| `PUT` | `/` | 크레딧 내역 생성 |
69+
| `/creditHistory`| `POST` | `/` | 특정 크레딧 내역 조회 |
70+
| `/creditHistory`| `POST` | `/all` | 전체 크레딧 내역 조회 |
71+
| `/creditHistory`| `POST` | `/update` | 크레딧 내역 수정 |
72+
73+
---
74+
75+
## 📝 의뢰 (Request)
76+
77+
### 의뢰 정보 (Request Info)
78+
**Base Path:** `/requestInfo`
79+
80+
| Method | Endpoint | Description |
81+
| :--- | :--- | :--- |
82+
| `PUT` | `/` | 의뢰 생성 |
83+
| `GET` | `/getImage/:idx` | 의뢰 이미지 조회 |
84+
| `POST` | `/` | 특정 의뢰 상세 조회 |
85+
| `POST` | `/all` | 모든 의뢰 조회 |
86+
| `GET` | `/nearby` | 위치 기반 주변 의뢰 조회 |
87+
| `POST` | `/fetch` | 의뢰 목록 fetch (페이징/필터 등) |
88+
| `POST` | `/onlyMine` | 내가 신청한 의뢰 목록 |
89+
| `POST` | `/howManyrequest` | 유저의 의뢰 요청 횟수 |
90+
| `POST` | `/howManyAccept` | 유저의 의뢰 수락 횟수 |
91+
| `POST` | `/getHowManyComplete` | 유저의 의뢰 완료 횟수 |
92+
| `POST` | `/title` | 제목으로 의뢰 검색 |
93+
| `POST` | `/update` | 의뢰 정보 수정 |
94+
| `POST` | `/updateImg` | 의뢰 이미지 수정 |
95+
96+
### 의뢰 신청자 (Request Applicant)
97+
**Base Path:** `/requestApplicant`
98+
99+
| Method | Endpoint | Description |
100+
| :--- | :--- | :--- |
101+
| `PUT` | `/` | 의뢰 신청 |
102+
| `POST` | `/all` | 모든 신청자 조회 |
103+
| `POST` | `/applyRequest` | 내가 신청한 의뢰 정보 조회 |
104+
| `POST` | `/getApply` | 유저의 신청 정보 조회 |
105+
| `POST` | `/getAccepted` | 수락된 신청 조회 |
106+
| `POST` | `/getFinished` | 완료된 신청 조회 |
107+
| `POST` | `/howManyApplicant` | 해당 의뢰의 신청자 수 조회 |
108+
| `POST` | `/update` | 신청 상태 수정 |
109+
110+
### 관심 의뢰 (Interest Request)
111+
**Base Path:** `/interestRequest`
112+
113+
| Method | Endpoint | Description |
114+
| :--- | :--- | :--- |
115+
| `PUT` | `/` | 관심 의뢰 등록 (찜하기) |
116+
| `POST` | `/all` | 모든 관심 의뢰 조회 |
117+
| `POST` | `/exactly` | 특정 관심 의뢰 확인 |
118+
| `POST` | `/fetch` | 유저의 관심 의뢰 목록 조회 |
119+
| `POST` | `/update` | 관심 의뢰 수정 |
120+
| `DELETE` | `/delete` | 관심 의뢰 해제 |
121+
122+
### 의뢰 댓글 (Request Comment)
123+
**Base Path:** `/requestComment`
124+
125+
| Method | Endpoint | Description |
126+
| :--- | :--- | :--- |
127+
| `PUT` | `/` | 댓글 작성 |
128+
| `POST` | `/all` | 모든 댓글 조회 |
129+
| `POST` | `/` | 특정 의뢰의 댓글 조회 |
130+
| `POST` | `/update` | 댓글 수정 |
131+
| `DELETE` | `/delete` | 댓글 삭제 |
132+
133+
---
134+
135+
## 💬 커뮤니티 & 채팅 (Community & Chat)
136+
137+
### 커뮤니티 (Community)
138+
139+
| Base Path | Method | Endpoint | Description |
140+
| :--- | :--- | :--- | :--- |
141+
| `/communityPost` | `PUT` | `/` | 게시글 작성 |
142+
| `/communityPost` | `POST` | `/` | 유저별 게시글 조회 |
143+
| `/communityPost` | `POST` | `/all` | 전체 게시글 조회 |
144+
| `/communityPost` | `POST` | `/update` | 게시글 수정 |
145+
| `/communityComment` | `PUT` | `/` | 댓글 작성 |
146+
| `/communityComment` | `POST` | `/byPost` | 게시글별 댓글 조회 |
147+
| `/communityComment` | `POST` | `/byUser` | 유저별 댓글 조회 |
148+
| `/communityComment` | `POST` | `/update` | 댓글 수정 |
149+
150+
### 채팅 (Chat)
151+
152+
| Base Path | Method | Endpoint | Description |
153+
| :--- | :--- | :--- | :--- |
154+
| `/chatRoom` | `PUT` | `/` | 채팅방 생성 |
155+
| `/chatRoom` | `POST` | `/all` | 모든 채팅방 조회 |
156+
| `/chatRoom` | `POST` | `/check` | 채팅방 존재 여부 확인 |
157+
| `/chatMessage` | `PUT` | `/` | 메시지 전송 |
158+
| `/chatMessage` | `POST` | `/room` | 방별 메시지 내역 조회 |
159+
| `/chatList` | `PUT` | `/` | 채팅 목록 추가 |
160+
| `/chatList` | `POST` | `/mine` | 내 채팅 목록 조회 |
161+
162+
---
163+
164+
## 💳 결제 (Payments)
165+
**Base Path:** `/v1/payments`
166+
167+
| Method | Endpoint | Description |
168+
| :--- | :--- | :--- |
169+
| `POST` | `/confirm` | 결제 승인 요청 |

README.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Traguild Backend (Capstone Design)
2+
3+
이 프로젝트는 인제대학교 캡스톤 디자인 프로젝트인 **Traguild**의 백엔드 서버입니다. Node.js (Express)를 기반으로 구축되었으며, 여행 가이드 및 매칭 서비스를 위한 REST API를 제공합니다.
4+
5+
## 🛠 기술 스택 (Tech Stack)
6+
7+
### Core
8+
- **Node.js**: 자바스크립트 런타임 환경
9+
- **Express.js**: 웹 애플리케이션 프레임워크
10+
11+
### Database & Storage
12+
- **MySQL (v8.0)**: 관계형 데이터베이스 관리 시스템 (RDBMS)
13+
- **Sequelize**: MySQL ORM (Object-Relational Mapping)
14+
- **Elasticsearch (v7.13.4)**: 검색 엔진 및 분석
15+
16+
### Infrastructure & Tools
17+
- **Docker & Docker Compose**: 컨테이너 기반 배포 및 관리 환경
18+
- **Nginx**: 리버스 프록시 및 웹 서버
19+
- **Swagger**: API 문서화 도구
20+
21+
### Major Libraries
22+
- **Socket.io**: 실시간 통신
23+
- **Bcrypt**: 비밀번호 해싱
24+
- **Twilio**: SMS 발송 서비스
25+
- **Winston**: 로깅 처리
26+
27+
---
28+
29+
## 🚀 시작하기 (Getting Started)
30+
31+
프로젝트를 로컬 환경 또는 서버에 배포하기 위한 방법입니다.
32+
33+
### 1. 전제 조건 (Prerequisites)
34+
- [Node.js](https://nodejs.org/) (v14 이상 권장)
35+
- [Docker](https://www.docker.com/) & Docker Compose
36+
37+
### 2. 환경 변수 설정 (Environment Setup)
38+
프로젝트 루트 디렉토리에 `.env` 파일을 생성하고, `.env.example` 파일의 내용을 참고하여 환경 변수를 설정해주세요.
39+
40+
```bash
41+
cp .env.example .env
42+
```
43+
44+
**주요 환경 변수:**
45+
- `PORT`: 서버 포트 (기본값: 3000)
46+
- `DB_HOST`, `DB_USER`, `DB_PASSWORD`, `DB_NAME`: MySQL 데이터베이스 설정
47+
- `ES_HOST`, `ES_PORT`: Elasticsearch 설정
48+
49+
### 3. 프로젝트 실행 (Running the Project)
50+
51+
#### Docker 환경에서 실행 (권장)
52+
Docker Compose를 사용하여 데이터베이스(MySQL, Elasticsearch)와 애플리케이션을 한 번에 실행할 수 있습니다.
53+
54+
**개발 모드 (Development):**
55+
```bash
56+
npm run docker:dev
57+
```
58+
> `mysql-dev``elastic-dev` 컨테이너와 함께 개발 프로필로 실행됩니다.
59+
60+
**운영 모드 (Production):**
61+
```bash
62+
npm run docker
63+
```
64+
> `mysql-prod`, `elastic-prod`, 및 `nginx` 컨테이너와 함께 운영 프로필로 실행됩니다.
65+
66+
#### 로컬 환경에서 실행 (NPM)
67+
데이터베이스가 로컬 또는 별도 서버에 실행 중이어야 합니다.
68+
69+
```bash
70+
# 의존성 설치
71+
npm install
72+
73+
# 개발 모드 실행
74+
npm run start:dev
75+
76+
# 운영 모드 실행
77+
npm run start
78+
```
79+
80+
---
81+
82+
## 📂 프로젝트 구조 (Project Structure)
83+
84+
```
85+
├── src
86+
│ ├── config # 환경 설정 및 라이브러리 설정 (Swagger, DB 연결 등)
87+
│ ├── controllers # 요청 처리 및 응답 반환 로직 (Controller Layer)
88+
│ ├── middlewares # Express 미들웨어
89+
│ ├── models # Sequelize 데이터베이스 모델 정의
90+
│ ├── routes # API 라우팅 정의
91+
│ ├── services # 비즈니스 로직 처리 (Service Layer)
92+
│ ├── app.js # Express 앱 초기화
93+
│ └── server.js # 서버 실행 엔트리 포인트
94+
├── Dockerfile # Docker 이미지 빌드 설정
95+
├── docker-compose.yml # Docker 서비스 오케스트레이션 설정
96+
├── nginx.conf # Nginx 설정 파일
97+
└── package.json # 프로젝트 의존성 및 스크립트 정의
98+
```
99+
100+
## 📚 API 문서 (API Documentation)
101+
서버가 실행 중일 때, 브라우저에서 `/api-docs` 경로로 접속하면 Swagger UI를 통해 API 문서를 확인할 수 있습니다.
102+
- 로컬 개발 시: `http://localhost:3000/api-docs`
103+
- **[API 명세서 보러가기 (API.md)](./API.md)**

0 commit comments

Comments
 (0)