Skip to content

EFUB 4기 SWS - SongPin 프로젝트 백엔드 레포지토리

Notifications You must be signed in to change notification settings

EFUB4-Jukebox/songpin-backend

Repository files navigation

🎵songpin-backend🎵

EFUB 4기 SWS 3팀 "SongPin" 프로젝트 백엔드 레포지토리입니다.



나의 음악지도, SongPin

Instagram
SongPin WebSite


💻 프로젝트 소개

음악이 함께했던 일상들과 기억 속 인상적인 순간들을 모아, 나의 음악 지도를 만들어 보세요.

장소에는 기억과 소리가 담깁니다. 여러분이 언젠가 여행을 떠났을 때 들었던 음악을 기억하나요? 여행지에서 많이 들은 음악은 곧, 그 장소의 분위기를 상징하고 기억할 수 있는 추억을 지닌 음악이 됩니다. 여행이 끝나도 사람들은 그 음악을 들으면서 행복했던 여행의 순간들을 생생하게 회상합니다. 이러한 아이디어에서 'SongPin' 프로젝트가 탄생했습니다.

⏰ 개발 기간

  • 24.07.01 - 24.08.10

📍 주요 기능


🛠️ 아키텍쳐

SongPin_architecture

🛠️ 기술 스택

Environment

Language

Development

Deploy

Nginx

🛠️ ERD

SongPin_ERD



🌟 팀원 소개

이서현 정유정 황채린 문하영
@seohyun-lee @jud1thDev @crHwang0822 @gkdudans
[배포] 서버 배포 및 CI/CD 구축
[Place] 장소 검색, 장소 상세정보 조회 기능
[Map] 지도 마커 표시 목적 장소 좌표들 가져오기 기능 (기간&장르 필터링, 유저별, 플레이리스트별)
[Follow] 유저 검색, 유저의 팔로잉/팔로워 목록 조회, 타 유저를 팔로우, 팔로잉 취소/팔로워 삭제 기능
[Alarm] SSE 알림 구독, 알림 목록 조회 기능
[Statistics] 서비스의 종합 통계, 장르별 통계 조회 기능
[Pin] 핀 생성, 조회, 수정, 삭제 기능
[Spotify] 핀 생성 시 Spotify API를 활용한 노래 검색 기능
[Song] 노래 상세정보 조회, 해당 노래에 대한 전체 핀 목록/내 핀 목록 조회, 노래 검색 기능
[Feed] 타 유저/내 핀 피드 조회, 내 핀 피드 검색, 내 핀피드 캘린더 기능
[Member] 회원가입, 회원 탈퇴, 프로필 조회, 프로필 편집, Redis를 활용한 비밀번호 재설정 메일 전송 및 비밀번호 변경 기능
[Auth] 스프링 시큐리티, JWT, Redis를 활용한 토큰 (재)발급/인증/인가 구현, 로그인/로그아웃 기능
[Playlist, PlaylistPin] 플레이리스트 생성, 핀 담기, 메인, 검색, 상세정보 조회, 편집, 삭제, 내 플레이리스트 목록/타 유저 플레이리스트 목록 조회 기능
[Bookmark] 북마크 생성, 취소, 내 북마크 목록 조회 기능
[Home] 최근 생성된 핀 & 장소 조회 기능

📁 프로젝트 구조

📂
├─.github
│  ├─ISSUE_TEMPLATE
│  └─workflows
└─src
     └─main
         ├─java
         │  └─sws
         │      └─songpin
         │          ├─domain
         │          │  ├─alarm
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─response
         │          │  │  │  └─ssedata
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─bookmark
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─follow
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─genre
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─member
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─model
         │          │  ├─pin
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─place
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─projection
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─playlist
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─playlistpin
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  └─service
         │          │  ├─song
         │          │  │  ├─controller
         │          │  │  ├─dto
         │          │  │  │  ├─request
         │          │  │  │  └─response
         │          │  │  ├─entity
         │          │  │  ├─repository
         │          │  │  ├─service
         │          │  │  └─spotify
         │          │  └─statistics
         │          │      ├─controller
         │          │      ├─dto
         │          │      │  ├─projection
         │          │      │  └─response
         │          │      └─service
         │          └─global
         │              ├─auth
         │              ├─config
         │              └─exception
         └─resources
             ├─static
             └─templates
                 └─email


📝 규칙

커밋 컨벤션

  • "태그: 한글 커밋 메시지" 형식으로 작성
  • 컨벤션 예시
    • feat: 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정
    • fix: 버그 수정
    • docs: 문서 수정
    • style: 코드 포맷팅, 오타 수정, 주석 수정 및 삭제 등
    • refactor: 코드 리팩터링
    • chore: 빌드 및 패키지 수정 및 삭제
    • merge: 브랜치를 머지
    • ci: CI 관련 설정 수정
    • test: 테스트 코드 추가/수정
    • release: 버전 릴리즈

PR 템플릿

# 구현 기능
  - 구현한 기능을 요약하여 정리합니다.

# 구현 상태 (선택)
  - img, gif, video...
  - 혹은 내용 정리

# Resolve
  - 이슈 태그(ex: #7)
  • PR 체크 리스트
    • PR 제목 형식 : [Type] PR 제목
      • ex. [Chore] 프로젝트 구조 설정
      • 타입은 대문자로
    • label 설정
    • Code Review 요청 / 작업자 Assign
    • PR 확인한 사람은 확인 코멘트 달기. 작성자 외 2명 확인 후 마지막 사람이 merge

issue 규칙

  • 각 기능에 맞는 이슈 템플릿 작성 (작업 및 변경사항 확인용)
  • to-do에 구현해야할 기능을 작성하고, 구현이 끝나면 체크표시

branch 규칙

  • 브랜치 네이밍 규칙: feat/{도메인혹은큰기능} ex) feat/place
  • feat -> develop -> deploy -> main 순으로 merge
  • feat : 각 기능을 개발하는 브랜치
  • develop : 각 기능의 개발을 완료하고 테스트 완료 후 병합하는 브랜치
  • deploy : 배포 브랜치

About

EFUB 4기 SWS - SongPin 프로젝트 백엔드 레포지토리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •