Skip to content

Commit e03cfb6

Browse files
authored
Revise README for improved clarity and organization
Updated the README to enhance project details and structure.
1 parent e6bbbea commit e03cfb6

1 file changed

Lines changed: 106 additions & 103 deletions

File tree

README.md

Lines changed: 106 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,61 @@
1-
# 🎵 내 콘서트를 부탁해 (NCB) - Backend
1+
<p align="center">
2+
<img width="114" height="71" alt="ncb" src="https://github.com/user-attachments/assets/f6463190-fd04-4722-97fe-d0db4080927e" />
3+
</p>
24

3-
> 예매부터 뒤풀이까지, 공연 관람의 하루를 관리하는 올인원 플랫폼
5+
<h1 align="center">🎵 내 콘서트를 부탁해 (NCB) - Backend</h1>
46

5-
<img width="1920" height="1080" alt="4-기획 의도" src="https://github.com/user-attachments/assets/92b94aa5-6ca3-4be5-acdd-509b6c7c8116" />
7+
<p align="center">
8+
예매부터 뒤풀이까지, 공연 관람의 하루를 관리하는 올인원 플랫폼
9+
</p>
10+
11+
<p align="center">
12+
<b>프로젝트 기간</b> 2025.12.04 ~ 2026.01.13
13+
</p>
14+
15+
---
16+
17+
# 📑 목차
18+
19+
- [기획 의도](#기획-의도)
20+
- [프로젝트 개요](#프로젝트-개요)
21+
- [주요 기능](#주요-기능)
22+
- [시스템 아키텍처](#시스템-아키텍처)
23+
- [ERD](#erd-entity-relationship-diagram)
24+
- [기술 스택](#기술-스택)
25+
- [프로젝트 구조](#프로젝트-구조)
26+
- [백엔드 팀](#백엔드-팀)
27+
- [Docker 실행 방법](#docker-실행-방법)
28+
29+
---
30+
31+
# 💡 기획 의도
32+
33+
<img width="1920" height="1080" alt="기획 의도" src="https://github.com/user-attachments/assets/92b94aa5-6ca3-4be5-acdd-509b6c7c8116" />
634

735
---
836

9-
# 📌 Project Overview
37+
# 📌 프로젝트 개요
1038

11-
<img width="1920" height="1080" alt="5-프로젝트 개요" src="https://github.com/user-attachments/assets/94c2d2ab-a6fd-465c-a728-d001ed5a8e79" />
39+
<img width="1920" height="1080" alt="프로젝트 개요" src="https://github.com/user-attachments/assets/94c2d2ab-a6fd-465c-a728-d001ed5a8e79" />
1240

41+
---
1342

14-
# 🚀 Main Features
43+
# 🚀 주요 기능
1544

16-
### 공연 탐색
45+
## 공연 탐색
1746

1847
- Kopis API 기반 공연 데이터 조회
1948
- 공연 일자 / 조회수 기준 정렬
2049
- 무한 스크롤 기반 공연 목록 제공
2150
- 공연 검색 기능
2251

23-
### 검색 자동완성
52+
## 검색 자동완성
2453

2554
- Redis 기반 자동완성 검색
2655
- 공연 제목 역인덱스 구조 활용
2756
- 조회수 기반 검색 결과 노출
2857

29-
### 아티스트 정보 제공
58+
## 아티스트 정보 제공
3059

3160
외부 API를 활용하여 아티스트 정보를 수집하고 제공합니다.
3261

@@ -46,7 +75,7 @@
4675

4776
Spotify와 연동되어 **앨범 클릭 시 Spotify 스트리밍 페이지로 이동**합니다.
4877

49-
### 실시간 채팅
78+
## 실시간 채팅
5079

5180
WebSocket + STOMP 기반 채팅 기능
5281

@@ -55,12 +84,12 @@ WebSocket + STOMP 기반 채팅 기능
5584
- 채팅방 접속자 수 관리
5685
- 채팅방 참여자 관리
5786

58-
Redis를 활용하여
87+
Redis 활용
5988

6089
- Redis Stream → 메시지 저장
6190
- Redis Set → 접속자 관리
6291

63-
### 공연 일정 플래너
92+
## 공연 일정 플래너
6493

6594
공연 당일 일정을 관리하고 공유할 수 있는 기능
6695

@@ -70,7 +99,7 @@ Redis를 활용하여
7099
- UUID 기반 공유 토큰
71100
- 1일 후 자동 만료
72101

73-
### 권한 관리
102+
## 권한 관리
74103

75104
플래너 참여자 권한 관리
76105

@@ -82,7 +111,7 @@ Redis를 활용하여
82111

83112
각 권한에 따라 조회 / 수정 / 삭제 권한이 다르게 적용됩니다.
84113

85-
### 지도 기반 장소 탐색
114+
## 지도 기반 장소 탐색
86115

87116
외부 지도 API 활용
88117

@@ -100,47 +129,86 @@ Redis를 활용하여
100129

101130
---
102131

103-
# 🏗 System Architecture
104-
<img width="1920" height="1080" alt="투표 _ 박상아 _ 변수연 _ 최병준 _ 김민석 _ 이혜지 _ 김윤수 Codecrete" src="https://github.com/user-attachments/assets/a7513e8e-dfe1-4a9d-a506-58761133fe73" />
132+
# 🏗 시스템 아키텍처
133+
134+
<img width="1920" height="1080" alt="Architecture" src="https://github.com/user-attachments/assets/a7513e8e-dfe1-4a9d-a506-58761133fe73" />
135+
136+
---
137+
138+
# 🗄 ERD (Entity Relationship Diagram)
139+
140+
<p align="center">
141+
<img width="1920" height="1080" alt="ERD" src="https://github.com/user-attachments/assets/ae116025-2fc4-44e7-9f7b-14a27589dd48" />
142+
</p>
143+
144+
🔗 **[ERD 전체 보기 (ERDCloud)](https://www.erdcloud.com/d/XxaBXzaoBeJ3ptdef)**
145+
146+
본 프로젝트는 공연 정보 조회, 공연 일정 플래너, 커뮤니티, 채팅 기능을 중심으로 구성된 도메인 구조를 기반으로 데이터 모델을 설계하였습니다.
147+
148+
### 주요 도메인
105149

150+
- **Users** : 사용자 정보 및 인증 관리
151+
- **Concerts** : 공연 정보 및 공연 조회 데이터
152+
- **Artists** : 아티스트 정보 및 외부 API 연동 데이터
153+
- **Plans** : 공연 일정 플래너 및 참여자 관리
154+
- **Community** : 공연 관련 게시글 및 댓글
155+
- **Chats** : 실시간 채팅 및 채팅 메시지 관리
156+
- **Location** : 공연장 주변 장소 및 지도 정보
106157

107-
# 🛠 Tech Stack
158+
ERD는 서비스의 핵심 도메인을 중심으로 관계형 데이터 구조를 설계하였으며
159+
공연 일정 관리와 사용자 간 상호작용을 고려한 데이터 관계를 기반으로 구성되었습니다.
160+
161+
---
162+
163+
# 🛠 기술 스택
164+
165+
## Backend
108166

109-
### Backend
110167
![Java](https://img.shields.io/badge/Java-17-007396?style=for-the-badge&logo=java&logoColor=white)
111168
![Spring Boot](https://img.shields.io/badge/Spring_Boot-3.0-6DB33F?style=for-the-badge&logo=springboot&logoColor=white)
112169
![Spring Data JPA](https://img.shields.io/badge/Spring_Data_JPA-6DB33F?style=for-the-badge)
113170
![Hibernate](https://img.shields.io/badge/Hibernate-59666C?style=for-the-badge&logo=hibernate&logoColor=white)
114171
![JWT](https://img.shields.io/badge/JWT-Authentication-000000?style=for-the-badge&logo=jsonwebtokens&logoColor=white)
115172
![WebSocket](https://img.shields.io/badge/WebSocket-STOMP-010101?style=for-the-badge)
116173

117-
### Database
174+
## Database
175+
118176
![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge&logo=mysql&logoColor=white)
119177
![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white)
120178

121-
### Infrastructure
179+
## Infrastructure
180+
122181
![AWS EC2](https://img.shields.io/badge/AWS_EC2-FF9900?style=for-the-badge&logo=amazon-ec2&logoColor=white)
123182
![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)
124183

125-
### DevOps
184+
## DevOps
185+
126186
![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-2088FF?style=for-the-badge&logo=githubactions&logoColor=white)
127187

128-
### External API
188+
## Collaboration
189+
190+
![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white)
191+
![Notion](https://img.shields.io/badge/Notion-000000?style=for-the-badge&logo=notion&logoColor=white)
192+
![Discord](https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)
193+
![ZEP](https://img.shields.io/badge/ZEP-6F3AFF?style=for-the-badge)
194+
195+
## External API
196+
129197
![Kopis API](https://img.shields.io/badge/Kopis_API-000000?style=for-the-badge)
130198
![Spotify API](https://img.shields.io/badge/Spotify_API-1DB954?style=for-the-badge&logo=spotify&logoColor=white)
131199
![Kakao Map](https://img.shields.io/badge/Kakao_Map_API-FFCD00?style=for-the-badge)
132200
![TMAP API](https://img.shields.io/badge/TMAP_API-FF4F00?style=for-the-badge)
133201

134202
---
135203

136-
## 📂 Project Structure
204+
# 📂 프로젝트 구조
137205

138206
```text
139207
src
140208
├─ main
141209
│ ├─ java
142210
│ │ └─ com.back.web7_9_codecrete_be
143-
│ │ ├─ domain # 도메인별 비즈니스 로직
211+
│ │ ├─ domain
144212
│ │ │ ├─ auth
145213
│ │ │ ├─ users
146214
│ │ │ ├─ concerts
@@ -149,7 +217,7 @@ src
149217
│ │ │ ├─ chats
150218
│ │ │ ├─ plans
151219
│ │ │ └─ location
152-
│ │ ├─ global # 공통 설정 및 인프라
220+
│ │ ├─ global
153221
│ │ │ ├─ config
154222
│ │ │ ├─ security
155223
│ │ │ ├─ error
@@ -159,26 +227,25 @@ src
159227
│ │ └─ Web79CodecreteBeApplication
160228
│ └─ resources
161229
│ └─ application.yml
162-
163230
```
231+
164232
---
165233

166-
# 👥 Backend Team
167-
<img width="855" height="484" alt="screencapture-miricanvas-v2-ko-design2-139b13ea-a2b5-4b45-a015-0ad51e6e0d34-2026-03-17-17_36_17" src="https://github.com/user-attachments/assets/db33fbb4-8823-4c77-830d-cb7fc1e871cb" />
234+
# 👥 백엔드 팀
235+
236+
<img width="855" height="484" src="https://github.com/user-attachments/assets/db33fbb4-8823-4c77-830d-cb7fc1e871cb" />
168237

169238
---
170-
## 🐳 Docker 실행 방법
171239

172-
이 프로젝트는 **MySQL 8.0****Redis 7.2**를 Docker Compose로 실행합니다.
173-
로컬 개발 환경에서 데이터베이스와 캐시 서버를 쉽게 구성할 수 있습니다.
240+
# 🐳 Docker 실행 방법
174241

175-
---
242+
이 프로젝트는 **MySQL 8.0****Redis 7.2**를 Docker Compose로 실행합니다.
176243

177244
## 1️⃣ 환경 변수 설정
178245

179-
프로젝트 루트에 `.env` 파일을 생성하고 아래 내용을 작성합니다.
246+
`.env` 파일 생성
180247

181-
```env
248+
```
182249
MYSQL_PORT=3306
183250
MYSQL_ROOT_PASSWORD=root
184251
MYSQL_DATABASE=concert
@@ -188,89 +255,25 @@ MYSQL_PASSWORD=password
188255
REDIS_PORT=6379
189256
```
190257

191-
`.env` 파일은 `docker-compose.yml`에서 사용하는 환경 변수입니다.
192-
193-
---
194-
195-
## 2️⃣ Docker 컨테이너 실행
258+
## 2️⃣ Docker 실행
196259

197-
아래 명령어로 MySQL과 Redis 컨테이너를 실행합니다.
198-
199-
```bash
260+
```
200261
docker compose up -d
201262
```
202263

203-
옵션 설명
264+
## 3️⃣ 컨테이너 확인
204265

205-
| 옵션 | 설명 |
206-
|---|---|
207-
| up | 컨테이너 실행 |
208-
| -d | 백그라운드 실행 |
209-
210-
---
211-
212-
## 3️⃣ 실행 상태 확인
213-
214-
```bash
266+
```
215267
docker ps
216268
```
217269

218-
정상적으로 실행되면 다음과 같은 컨테이너가 실행됩니다.
219-
220270
| Container | Service |
221271
|---|---|
222272
| concert-mysql | MySQL 8.0 |
223273
| concert-redis | Redis 7.2 |
224274

225-
---
226-
227-
## 4️⃣ 로그 확인
228-
229-
문제가 발생했을 경우 로그를 확인할 수 있습니다.
275+
## 4️⃣ 종료
230276

231-
```bash
232-
docker compose logs
233277
```
234-
235-
특정 서비스 로그 확인
236-
237-
```bash
238-
docker compose logs mysql
239-
docker compose logs redis
240-
```
241-
242-
---
243-
244-
## 5️⃣ 컨테이너 종료
245-
246-
```bash
247278
docker compose down
248279
```
249-
250-
---
251-
252-
## 6️⃣ 데이터 유지 (Volume)
253-
254-
MySQL과 Redis 데이터는 Docker Volume에 저장됩니다.
255-
256-
| Volume | 설명 |
257-
|---|---|
258-
| mysql-data | MySQL 데이터 저장 |
259-
| redis-data | Redis 데이터 저장 |
260-
261-
컨테이너를 삭제해도 데이터는 유지됩니다.
262-
263-
---
264-
265-
## 7️⃣ 포트 정보
266-
267-
| Service | Port |
268-
|---|---|
269-
| MySQL | `${MYSQL_PORT}:3306` |
270-
| Redis | `${REDIS_PORT}:6379` |
271-
272-
---
273-
274-
💡 **Tip**
275-
276-
처음 실행할 때는 Docker 이미지 다운로드로 인해 시간이 조금 걸릴 수 있습니다.

0 commit comments

Comments
 (0)