Skip to content

prgrms-web-devcourse-final-project/WEB7_9_codecrete_BE

Repository files navigation

ncb

🎵 내 콘서트를 부탁해 (NCB) - Backend

🔗 서비스 바로가기

예매부터 뒤풀이까지, 공연 관람의 하루를 관리하는 올인원 플랫폼

프로젝트 기간 2025.12.04 ~ 2026.01.13


📑 목차


💡 기획 의도

기획 의도

📌 프로젝트 개요

프로젝트 개요

🚀 주요 기능

공연 탐색

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

검색 자동완성

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

아티스트 정보 제공

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

사용 API

  • Spotify API
  • Wikidata API
  • MusicBrainz API

제공 정보

  • 아티스트 소개
  • 인기 트랙
  • 인기 앨범
  • 팔로워 수 / 인기도
  • 유사 아티스트

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

실시간 채팅

WebSocket + STOMP 기반 채팅 기능

  • 실시간 채팅 메시지 송수신
  • 채팅 메시지 저장 및 조회
  • 채팅방 접속자 수 관리
  • 채팅방 참여자 관리

Redis 활용

  • Redis Stream → 메시지 저장
  • Redis Set → 접속자 관리

공연 일정 플래너

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

  • 공연 일정 생성 및 관리
  • 장소 기반 일정 계획
  • 공유 링크 생성
  • UUID 기반 공유 토큰
  • 1일 후 자동 만료

권한 관리

플래너 참여자 권한 관리

권한 유형

  • OWNER
  • EDITOR
  • VIEWER

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

지도 기반 장소 탐색

외부 지도 API 활용

사용 API

  • Kakao Map API
  • Kakao Mobility API
  • TMAP API

제공 기능

  • 공연장 주변 카페 / 맛집 검색
  • 대중교통 길찾기
  • 도보 / 차량 이동 시간 계산

🏗 시스템 아키텍처

Architecture

🗄 ERD

ERD

🔗 ERD 전체 보기 (ERDCloud)

본 프로젝트는 공연 정보 조회, 공연 일정 플래너, 커뮤니티, 채팅 기능을 중심으로 구성된 도메인 구조를 기반으로 데이터 모델을 설계하였습니다.

주요 도메인

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

ERD는 서비스의 핵심 도메인을 중심으로 관계형 데이터 구조를 설계하였으며
공연 일정 관리와 사용자 간 상호작용을 고려한 데이터 관계를 기반으로 구성되었습니다.


🛠 기술 스택

Backend

Java Spring Boot Spring Security Spring Data JPA Spring Data Redis WebSocket JWT Validation

Database

MySQL H2

Infrastructure

AWS EC2 AWS S3 Docker

DevOps

GitHub Actions JaCoCo

Collaboration

Slack Notion Discord ZEP

External API

Kopis API Spotify API Kakao Map TMAP API


📂 프로젝트 구조

src
├─ main
│  ├─ java
│  │  └─ com.back.web7_9_codecrete_be
│  │     ├─ domain
│  │     │  ├─ auth
│  │     │  ├─ users
│  │     │  ├─ concerts
│  │     │  ├─ artists
│  │     │  ├─ community
│  │     │  ├─ chats
│  │     │  ├─ plans
│  │     │  └─ location
│  │     ├─ global
│  │     │  ├─ config
│  │     │  ├─ security
│  │     │  ├─ error
│  │     │  ├─ redis
│  │     │  ├─ scheduler
│  │     │  └─ websocket
│  │     └─ Web79CodecreteBeApplication
│  └─ resources
│     └─ application.yml

👥 팀원 소개


🐳 Docker 실행 방법

이 프로젝트는 MySQL 8.0Redis 7.2를 Docker Compose로 실행합니다.

1️⃣ 환경 변수 설정

.env 파일 생성

MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=concert
MYSQL_USER=user
MYSQL_PASSWORD=password

REDIS_PORT=6379

2️⃣ Docker 실행

docker compose up -d

3️⃣ 컨테이너 확인

docker ps
Container Service
concert-mysql MySQL 8.0
concert-redis Redis 7.2

4️⃣ 종료

docker compose down

About

데브코스 백엔드 7기 9회차 최종 프로젝트 Team A3 코드크리트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors