|
| 1 | +# 🎵 내 콘서트를 부탁해 (NCB) - Backend |
| 2 | + |
| 3 | +> 예매부터 뒤풀이까지, 공연 관람의 하루를 관리하는 올인원 플랫폼 |
| 4 | +
|
| 5 | +<img width="1920" height="1080" alt="4-기획 의도" src="https://github.com/user-attachments/assets/92b94aa5-6ca3-4be5-acdd-509b6c7c8116" /> |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +# 📌 Project Overview |
| 10 | + |
| 11 | +<img width="1920" height="1080" alt="5-프로젝트 개요" src="https://github.com/user-attachments/assets/94c2d2ab-a6fd-465c-a728-d001ed5a8e79" /> |
| 12 | + |
| 13 | + |
| 14 | +# 🚀 Main Features |
| 15 | + |
| 16 | +### 공연 탐색 |
| 17 | + |
| 18 | +- Kopis API 기반 공연 데이터 조회 |
| 19 | +- 공연 일자 / 조회수 기준 정렬 |
| 20 | +- 무한 스크롤 기반 공연 목록 제공 |
| 21 | +- 공연 검색 기능 |
| 22 | + |
| 23 | +### 검색 자동완성 |
| 24 | + |
| 25 | +- Redis 기반 자동완성 검색 |
| 26 | +- 공연 제목 역인덱스 구조 활용 |
| 27 | +- 조회수 기반 검색 결과 노출 |
| 28 | + |
| 29 | +### 아티스트 정보 제공 |
| 30 | + |
| 31 | +외부 API를 활용하여 아티스트 정보를 수집하고 제공합니다. |
| 32 | + |
| 33 | +사용 API |
| 34 | + |
| 35 | +- Spotify API |
| 36 | +- Wikidata API |
| 37 | +- MusicBrainz API |
| 38 | + |
| 39 | +제공 정보 |
| 40 | + |
| 41 | +- 아티스트 소개 |
| 42 | +- 인기 트랙 |
| 43 | +- 인기 앨범 |
| 44 | +- 팔로워 수 / 인기도 |
| 45 | +- 유사 아티스트 |
| 46 | + |
| 47 | +Spotify와 연동되어 **앨범 클릭 시 Spotify 스트리밍 페이지로 이동**합니다. |
| 48 | + |
| 49 | +### 실시간 채팅 |
| 50 | + |
| 51 | +WebSocket + STOMP 기반 채팅 기능 |
| 52 | + |
| 53 | +- 실시간 채팅 메시지 송수신 |
| 54 | +- 채팅 메시지 저장 및 조회 |
| 55 | +- 채팅방 접속자 수 관리 |
| 56 | +- 채팅방 참여자 관리 |
| 57 | + |
| 58 | +Redis를 활용하여 |
| 59 | + |
| 60 | +- Redis Stream → 메시지 저장 |
| 61 | +- Redis Set → 접속자 관리 |
| 62 | + |
| 63 | +### 공연 일정 플래너 |
| 64 | + |
| 65 | +공연 당일 일정을 관리하고 공유할 수 있는 기능 |
| 66 | + |
| 67 | +- 공연 일정 생성 및 관리 |
| 68 | +- 장소 기반 일정 계획 |
| 69 | +- 공유 링크 생성 |
| 70 | +- UUID 기반 공유 토큰 |
| 71 | +- 1일 후 자동 만료 |
| 72 | + |
| 73 | +### 권한 관리 |
| 74 | + |
| 75 | +플래너 참여자 권한 관리 |
| 76 | + |
| 77 | +권한 유형 |
| 78 | + |
| 79 | +- OWNER |
| 80 | +- EDITOR |
| 81 | +- VIEWER |
| 82 | + |
| 83 | +각 권한에 따라 조회 / 수정 / 삭제 권한이 다르게 적용됩니다. |
| 84 | + |
| 85 | +### 지도 기반 장소 탐색 |
| 86 | + |
| 87 | +외부 지도 API 활용 |
| 88 | + |
| 89 | +사용 API |
| 90 | + |
| 91 | +- Kakao Map API |
| 92 | +- Kakao Mobility API |
| 93 | +- TMAP API |
| 94 | + |
| 95 | +제공 기능 |
| 96 | + |
| 97 | +- 공연장 주변 카페 / 맛집 검색 |
| 98 | +- 대중교통 길찾기 |
| 99 | +- 도보 / 차량 이동 시간 계산 |
| 100 | + |
| 101 | +--- |
| 102 | + |
| 103 | +# 🏗 System Architecture |
| 104 | +<img width="1920" height="1080" alt="투표 _ 박상아 _ 변수연 _ 최병준 _ 김민석 _ 이혜지 _ 김윤수 Codecrete" src="https://github.com/user-attachments/assets/a7513e8e-dfe1-4a9d-a506-58761133fe73" /> |
| 105 | + |
| 106 | + |
| 107 | +# 🛠 Tech Stack |
| 108 | + |
| 109 | +### Backend |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | + |
| 116 | + |
| 117 | +### Database |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | +### Infrastructure |
| 122 | + |
| 123 | + |
| 124 | + |
| 125 | +### DevOps |
| 126 | + |
| 127 | + |
| 128 | +### External API |
| 129 | + |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | + |
| 134 | +--- |
| 135 | + |
| 136 | +## 📂 Project Structure |
| 137 | + |
| 138 | +```text |
| 139 | +src |
| 140 | +├─ main |
| 141 | +│ ├─ java |
| 142 | +│ │ └─ com.back.web7_9_codecrete_be |
| 143 | +│ │ ├─ domain # 도메인별 비즈니스 로직 |
| 144 | +│ │ │ ├─ auth |
| 145 | +│ │ │ ├─ users |
| 146 | +│ │ │ ├─ concerts |
| 147 | +│ │ │ ├─ artists |
| 148 | +│ │ │ ├─ community |
| 149 | +│ │ │ ├─ chats |
| 150 | +│ │ │ ├─ plans |
| 151 | +│ │ │ └─ location |
| 152 | +│ │ ├─ global # 공통 설정 및 인프라 |
| 153 | +│ │ │ ├─ config |
| 154 | +│ │ │ ├─ security |
| 155 | +│ │ │ ├─ error |
| 156 | +│ │ │ ├─ redis |
| 157 | +│ │ │ ├─ scheduler |
| 158 | +│ │ │ └─ websocket |
| 159 | +│ │ └─ Web79CodecreteBeApplication |
| 160 | +│ └─ resources |
| 161 | +│ └─ application.yml |
| 162 | +
|
| 163 | +``` |
| 164 | +--- |
| 165 | + |
| 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" /> |
| 168 | + |
| 169 | +--- |
0 commit comments