Skip to content

prgrms-be-devcourse/NBE5-7-2-Team01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

128 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎈 실시간 공연 예매 서비스

📝 소개

본 프로젝트는 Spring Boot 기반의 웹 애플리케이션으로, 실시간 공연 예매 기능을 제공합니다.
Spring Security를 활용하여 사용자와 관리자 권한을 분리하여 관리의 효율성과 보안을 강화하였습니다.
Java Mail Sender를 활용하여 이메일 전송 기능을 구현했습니다.
좌석에 대한 동시성 처리를 위해 낙관적 락을 사용했습니다.


📝 프로젝트 기획서

image

📌 주요 기능

🔐 권한 분리 (Spring Security 기반)

  • 관리자(Admin): 공연 및 예매 전체 관리
  • 사용자(User): 공연 조회 및 공연 예매

🛒 공연

역할 기능
관리자 공연 등록, 수정, 삭제, 조회 (CRUD)
사용자 공연 목록 및 상세 조회, 좋아요 기능

📦 예매

역할 기능
관리자 전체 예매 내역 조회, 공연별 예매 현황 조회, 에매 내역 메일 전송
사용자 공연 목록 필터링 조회, 공연 검색, 좋아요, 좋아요 목록 조회, 예매, 예매 내역 조회, 예매 취소

⏱️ 이메일 전송

  • 회원가입 이메일 인증코드 전송
  • 공연 정보 변경에 대한 알림메일 전송
  • 예매 완료 메일 전송
  • 예매 시작 알림 메일 전송
  • 결제 완료 메일 전송

✅ 본 프로젝트는 역할 기반 권한 제어, RESTful API 설계, 스케줄링 처리 등 실무 중심 기능을 반영하여 설계되었습니다.

⚙ 기술 스택

언어

Java
Java 21
HTMLCSS
Javascript

프레임 워크 및 라이브러리

Spring Boot
3.4.5
Spring Security
Spring Data JPA
Thymeleaf
Java Mail Sender
Java Mail Sender

데이터 베이스

MySQL
Redis

인프라

GitHub Action
Github Actions
Docker

협업 도구

GitHub
Notion
Swagger

💁‍♂️ 프로젝트 팀원

팀장 팀원 팀원 팀원 팀원
서희승
서희승
곽지원
곽지원
김성원
김성원
나상연
나상연
정채린
정채린

🛠️ 역할 분담

이름 담당 기능
희승 - 좋아요 기능
- 좋아요 누른 공연에 대한 예매 시작 알림 메일 전송
- 프론트엔드 UI 통합 작업
지원 - 예외 처리 로직 구현
- CI 설정
- 사용자 공연 목록 필터링 조회 기능
- 키워드 검색 기능
성원 - 관리자 공연 CRUD 구현
- 좌석에 대한 동시성 처리
- 공연 정보 변경에 대한 이메일 전송
상연 - Spring Security를 통한 인증/인가 적용
- 로그인, 회원가입
- Oauth 인증 방식의 로그인
- 공연별 예매 현황 기능
- 좋아요 누른 공연 목록 조회
채린 - 공연 상세 조회 기능 구현
- 좌석 선택 및 예매 처리
- 나의 예매 내역 조회
- 예매 내역 상세 조회

🛠️ 프로젝트 아키텍쳐

시스템 구성도

image

ERD

image

협업 방식

🛠️ 브랜치 전략

Image20250428163351

  1. 이슈 생성

    • GitHub 이슈를 통해 작업 항목 정의
  2. 브랜치 생성

    • dev 브랜치에서 이슈별 작업 브랜치 생성
    • 브랜치 명명 규칙 예시: feature/이슈번호/작업자 이름
  3. PR 및 코드 리뷰

    • 작업 완료 후 Pull Request(PR) 생성
    • 팀원 간 코드 리뷰 진행
  4. Merge 및 브랜치 정리

    • 리뷰 완료 후 dev 브랜치로 Merge
    • Merge 후 이슈 브랜치 삭제
    • dev 브랜치 최신 상태 유지

🧑‍💻 코딩 컨벤션

Git 컨벤션

  1. Commit 메시지 형식

    • [이모지][타입] 커밋 메시지
    • 예: ♻️ feat:사용자 로그인 기능 구현
  2. PR 제목 및 설명

    • 제목: [타입] 이슈번호 - 작업 내용 요약
    • 본문: 작업 내용, 고려한 사항, 테스트 방법 등 기재
  3. Branch 명명 규칙

    • 타입/#이슈번호/작업자 일름
    • 예:feat/#15/홍길동
  4. Issue 제목 규칙

    • [타입] 작업 내용 요약

코드 스타일

  1. 스타일 가이드

  2. DTO 작성 기준

    • 요청(Request) / 응답(Response) DTO 분리
    • mapper를 활용한 변환 로직 구성
  3. 커스텀 예외 처리

    • 서비스 로직에서 발생하는 예외는 커스텀 예외로 처리
  4. 이름 규칙

    • 클래스명: 대문자로 시작, 명확한 의미 전달
      • 예: UserService, OrderController
    • 메서드명: 동사 + 대상, camelCase 사용
      • 예: createUser(), getOrderList()
    • 변수명: camelCase 사용, 명확하고 간결하게
      • 예: userId, orderRequest

🗂️ APIs

작성한 API는 아래에서 확인할 수 있습니다.

👉🏻 API 바로보기

image image

🤔 기술적 이슈와 해결 과정

  • 각 메서드의 파라미터에 대한 예외처리 과정을 개선하기 위해 Apache Commons의 util 메서드 활용
  • Random의 성능 이슈를 고려하여 SecureRandom으로 대체
    • 회원가입 시, 이메일 인증을 위한 무작위 인증 코드 생성
  • TaskScheduler를 이용한 결제 미완료 예매 자동 취소 스케줄링
    • TaskScheduler는 메모리 기반 으로 동작하여 서버 종료 시 스케줄 정보가 모두 사라짐
    • 스케줄 정보를 DB에 저장하여, 서버 재시작 시에도 스케줄링 정보를 복원할 수 있도록 해결

About

프로그래머스 백엔드 데브코스 5기 7회차 1팀 2차 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors