사이먼's 코딩노트

[SpringBoot] 음악 커뮤니티 사이트 제작 (1) 본문

프로젝트/[SpringBoot] 음악 커뮤니티 사이트 제작

[SpringBoot] 음악 커뮤니티 사이트 제작 (1)

simonpark817 2024. 6. 24. 21:18

[음악 커뮤니티 사이트 제작]

  • 음악 커뮤니티 사이트라는 주제 4인 1조의 팀 프로젝트를 진행하였습니다.
  • '음악 커뮤니티 사이트 제작' 카테고리에서는 팀 프로젝트를 진행하면서 구현 및 설계된 데이터베이스와 각 화면 페이지에 대한 설명을 작성하고자 합니다.
  • 각 페이지의 대한 코드 구현은 따로 포스팅되지 않을 예정이니 코드를 참고하고 싶으시다면 아래 깃허브 리포지터리를 방문해 주시길 바랍니다. 
  • 깃허브 리포지터리 주소 : https://github.com/psm817/Apollon
 

GitHub - psm817/Apollon

Contribute to psm817/Apollon development by creating an account on GitHub.

github.com

 

[프로젝트 개요]

  • 다음은 음악 커뮤니티 사이트(이하 Apollon) 제작에 앞서 프로젝트의 개요에 대해서 설명드립니다.
  • 프로젝트 명이 Apollon인 이유는 그리스 로마 신화의 음악의 신인 Apollon의 이름을 가져와 같은 분야의 사이트 중에서 신이 되보자는 의미에서 패기롭게 지어봤습니다.
  • 다양한 음악 장르의 창작자들이 손쉽게 자신의 자작곡 또는 일반 대중가요를 업로드하고 공유할 수 있는 웹 사이트를 만드는데에 목적을 두었습니다.
  • 또한 다양한 음악을 검색하고 개인 플레이리스트를 통해 스트리밍할 수 있는 기능을 추가하여 청취자들이 원하는 음악을 쉽게 찾고 감상할 수 있도록 지원합니다.
  • 개인 스튜디오라는 차별화를 두어 창작자와 청취자 간의 피드백과 소통을 장려하여 활발한 커뮤니티를 형성할 수 있도록 지원합니다.

 

[개발 기간]

  • 이번 팀 프로젝트의 개발 기간은 2024-05-27 ~ 2024-06-27 까지 약 한 달의 기간동안 진행되었습니다.

 

[개발 환경]

  • 운영체제 : Windows 10 / 11
  • 통합개발환경(IDE) : Intellij
  • 프레임워크 : SpringBoot
  • JDK 버전 : JDK 17
  • 데이터베이스 : MySQL
  • 빌드 툴 : Gradle
  • 관리 툴 : GitHub

 

[역할 분담]

  • 이번 팀 프로젝트는 총 4명이 한 조를 이루어 진행했으며, 각자의 역할을 분배하여 페이지 기능을 구현하였고, 그 중에서 제가 개발한 부분을 소개하도록 하겠습니다.
  • 저는 Apollon 프로젝트의 팀장을 맡게 되었고, 스튜디오와 마이페이지 기능 구현을 중점으로 개발을 진행하였습니다.
  • 추가적으로 플레이리스트에 음악 담아두기와 더불어 음악 재생, 1분 미리듣기를 구현하였습니다.
  • 마지막으로 메인페이지에서 모든 종합 정보를 불러오도록 구현하였습니다.

 

[프로젝트 전체 구조]

  • 다음은 프로젝트의 전체 패키징 구조에 대해서 정리를 해보았습니다.
  • 패키징 분리를 할 때, 추후 관리가 편하도록 페이지 도메인별로 나눠서 기본 구조 틀을 잡았습니다.
  • 각 페이지별 html은 layout.html이라는 공통 템플릿을 기반으로 header.html과 footer.html이 어느 페이지든 포함되도록 구현했습니다.
├── README.md
├── build.gradle
├── .gitignore
├── gradlew.bat
├── gradlew
│
└── src.main
     ├── java.com.example.Apollon
           ├── ApollonApplication.java
           ├── domain
                  ├── comment
                          ├── contorller.CommentController.java
                          ├── entity.Commnet.java
                          ├── form.CommentForm.java
                          ├── repository.CommentRepository.java
                          ├── service.CommentService.java
                  ├── email
                        ├── EmailController.java
                        ├── EmailMessage.java
                        ├── EmailResponseDto.java
                        ├── EmailService.java
                  ├── home
                        ├── contorller.HomeController.java
                  ├── member
                        ├── contorller.MemberController.java
                        ├── contorller.UsernameCheckController.java
                        ├── entity.Member.java
                        ├── repository.MemberRepository.java
                        ├── service.MemberService.java
                  ├── music
                        ├── contorller.MusicController.java
                        ├── entity.Music.java
                        ├── repository.MusicRepository.java
                        ├── service.MusicService.java
                  ├── playlist
                        ├── contorller.PlaylistController.java
                        ├── entity.Playlist.java
                        ├── repository.PlaylistRepository.java
                        ├── service.PlaylistService.java
                  ├── post
                        ├── contorller.PostController.java
                        ├── entity.BoardType.java
                        ├── entity.Post.java
                        ├── entity.PostComment.java
                        ├── entity.PostForm.java
                        ├── repository.PostCommnetRepository.java
                        ├── repository.PostRepository.java
                        ├── service.PostCommentService.java
                        ├── service.PostService.java
                  ├── studio
                        ├── contorller.StudioController.java
                        ├── entity.Studio.java
                        ├── repository.StudioRepository.java
                        ├── service.StudioService.java
           ├── global
                  ├── config
                          ├── WebMvcConfig.java
                  ├── initData
                          ├── DataFileUtils.java
                          ├── Dev.java
                          ├── TestFileUtils.java
                          ├── TestFileUtilsConfig.java
                  ├── jpa
                       ├── BaseEntity.java
                  ├── security
                          ├── CustomOAuth2UserService.java
                          ├── SecurityConfig.java
                          ├── UserSecurityService.java
                  ├── DataNotFoundException.java
    ├── resource
            ├── static
                   ├── chart
                          ├── genreChart.css
                          ├── top100.css
                   ├── comment
                          ├── comment.css
                          ├── comment_detail.css
                   ├── images
                          ├── login
                          ├── slide_img
                          ├── uploads
                          ├── ApollonLogo.png
                          ├── ApollonLogo_dark.png
                          ├── My project.png
                          ├── none.png
                          ├── studio_img.png
                   ├── member
                         ├── login.css
                         ├── myPage.css
                         ├── password.css
                         ├── signup.css
                         ├── signup2.css
                   ├── music
                         ├── musicDetail.css
                         ├── upload_form.css
                   ├── post
                         ├── postDetail.css
                         ├── postLayout.css
                         ├── postList.css
                         ├── postProfile1.css
                         ├── postWrite.css
                   ├── footerStyle.css
                   ├── headerStyle.css
                   ├── mainPage.css
                   ├── studio.css
                   ├── style.css
            ├── templates
                    ├── chart
                          ├── genreChart.html
                          ├── TOP100.html
                    ├── comment
                            ├── comment_detail.html
                            ├── comment_form.html
                    ├── member
                           ├── login.html
                           ├── myPage.html
                           ├── reset-password.html
                           ├── signup.html
                           ├── signup2.html
                           ├── signup_modify.html
                           ├── signup_modify2.html
                    ├── music
                          ├── modify_form.html
                          ├── musicDetail.html
                          ├── musicDetail_form.html
                          ├── upload_form.html
                    ├── post
                          ├── post_detail.html
                          ├── post_list.html
                          ├── post_modifyForm.html
                          ├── post_profile.html
                          ├── post_write.html
                    ├── sendmail
                            ├── password.html
                    ├── studio
                           ├── studio_detail.html
                    ├── footer.html
                    ├── header.html
                    ├── layout.html
                    ├── mainPage.html
            ├── application.yml
            ├── application-dev.yml
            ├── application-prod.yml
            ├── application-secret.yml (비공개)
            ├── application-secret.yml.default
반응형