본문 바로가기
Project

[flowerBowl] 프로젝트 소개

by 개미가되고싶은사람 2024. 6. 13.

 

flwoerBowl 파비콘

목차

     

    💡 Introduction

    최근 몇년간 배달음식 소비가 증가하고 있습니다. 그에 따라 매일 요리하는 사람들의 비율은 감소하고 있습니다.
    이러한 배경 아래, 저희는 바쁜 사람들에게 더 건강한 한 끼와 요리의 즐거움을 느껴보기를 바라는 마음으로 화반을 개발하게 되었습니다.


    참여 인원 : 백엔드 3명 / 프론트엔드 2명

     

     

    🧑🏾‍💻 Skill/Stack

    프레임워크: Spring Boot 3.2.4(gradle)
    서버: AWS EC2 
    Storage Service: AWS S3
    웹서버: Nginx
    ORM: Spring Data JPA
    DB: Mysql 8.0.36
    CI/CD: github action

     

    필자가 백엔드라서 백엔드 기술/스택만 적었습니다!!

     

    📚 ERD

    https://www.erdcloud.com/d/ANBdtxoJyiagiytBg

     

    📚 사용자 요구사항 정의서 / 화면 정의서 / API 명세서

    https://docs.google.com/spreadsheets/d/12LKp0_4OMoveO8XGUlzghtdq8SMO4uuRq8Ro9oIRZy8/edit?gid=701501336#gid=701501336

     

    파일 구조

    📦main
     ┣ 📂java
     ┃ ┗ 📂com
     ┃ ┃ ┗ 📂flowerbowl
     ┃ ┃ ┃ ┗ 📂web
     ┃ ┃ ┃ ┃ ┣ 📂common
     ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtError.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜ResponseCode.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜ResponseMessage.java
     ┃ ┃ ┃ ┃ ┣ 📂config
     ┃ ┃ ┃ ┃ ┃ ┣ 📜AmazonS3Config.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📜WebConfig.java
     ┃ ┃ ┃ ┃ ┣ 📂controller
     ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminController.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthController.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜BannerController.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentController.java
     ┃ ┃ ┃ ┃ ┣ 📂domain
     ┃ ┃ ┃ ┃ ┃ ┣ 📜Banner.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜Category.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜Comment.java
     ┃ ┃ ┃ ┃ ┣ 📂dto
     ┃ ┃ ┃ ┃ ┃ ┣ 📂object
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂admin
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ChefCandidiateDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂comment
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentPageInfo.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateCommentDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GetCommentsDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂community
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommunityPageInfo.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GetAllCommunitiesDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GetCommunityDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂lesson
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LessonFileDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PayInfo.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ReviewsShortDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mypage
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AvailableReviews.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PurchaserList.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WrittenReviews.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂recipe
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateRecipeDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateRecipeFileDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateRecipeLikeDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂review
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GetReviewDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂search
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommunityShortDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LessonShortDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PageInfo.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecipeShortDto.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📂request
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂admin
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BannerRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ChefAcceptRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂auth
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SignInRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SignUpRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂comment
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CrCommentReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GetCommentReqParam.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpCommentReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂community
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CrCommunityReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpCommunityReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂lesson
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PaymentInfoRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mypage
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜InsertLicenseRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂recipe
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CrRecipeReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpRecipeReqDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂review
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜InsertReviewRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PatchReviewRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂user
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FindUserIdRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FindUserPwRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PatchProfileRequestDto.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📂response
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂admin
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ChefResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂auth
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CheckCertificationResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SignUpResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂banner
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BannerResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂comment
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpCommentFaResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpCommentSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂community
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommunityResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CrCommunityFaResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpCommunitySuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂image
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ImageResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpBannerImageSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpProfileImageSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpThumbnailImageSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂lesson
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FindAllResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ReviewsResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mypage
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DeletePayByChefResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DeletePayByUserResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜InsertLicenseResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂recipe
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CrRecipeFaResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpRecipeLikeSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpRecipeSuResDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂review
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AvailableReviewsResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PatchReviewResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WrittenReviewsResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂search
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SearchLessonResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SearchRecipeResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂user
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FindUserIdResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FindUserPwResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PatchWdResponseDto.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ResponseDto.java
     ┃ ┃ ┃ ┃ ┣ 📂filter
     ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtAuthenticationFilter.java
     ┃ ┃ ┃ ┃ ┣ 📂handler
     ┃ ┃ ┃ ┃ ┃ ┣ 📜OAuth2SuccessHandler.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜ValidationExceptionHandler.java
     ┃ ┃ ┃ ┃ ┣ 📂provider
     ┃ ┃ ┃ ┃ ┃ ┣ 📜EmailProvider.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtProvider.java
     ┃ ┃ ┃ ┃ ┣ 📂repository
     ┃ ┃ ┃ ┃ ┃ ┣ 📜ReviewEnableRepository.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜ReviewRepository.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📜UserRepository.java
     ┃ ┃ ┃ ┃ ┣ 📂service
     ┃ ┃ ┃ ┃ ┃ ┣ 📂implement
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminServiceImpl.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthServiceImpl.java
     ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BannerServiceImpl.javaa
     ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserServiceImpl.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminService.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthService.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📜UserService.java
     ┃ ┃ ┃ ┃ ┣ 📂util
     ┃ ┃ ┃ ┃ ┃ ┣ 📜EmailUtil.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtUtil.java
     ┃ ┃ ┃ ┃ ┃ ┣ 📜PwUtil.java
     ┃ ┃ ┃ ┃ ┃ ┗ 📜RandomNameUtil.java
     ┃ ┃ ┃ ┃ ┣ 📜SpringConfig.java
     ┃ ┃ ┃ ┃ ┗ 📜WebApplication.java
     ┗ 📂resources
     ┃ ┗ 📜application.yml

    java파일이 너무 많아서 필자가 임의로 여러 개 삭제했습니다. 참고부탁드립니다!!!

     

     

    👍프로젝트를 진행하면서 좋았던 점

    처음 우리 프로젝트는 nginx 웹 서버를 사용할 생각이 없었다. 하지만 백엔드랑 프론트 데이터를 주고 받는 과정에서 mixed context 애러가 발생해 nginx 웹 서버를 사용하여 해당 오류를 해결했다. 이 과정에서 스프링 기본 웹 서버인 톰캣을 HTTPS 적용해보고, 도메인 주소를 구매해서 서버에 적용해보고 다양한 경험을 하게 되어서 좋았던 거 같다.

    그리고 개인적으로 API 설계를 잘했다고 생각한다 ㅎㅎㅎ

     

     

    😭프로젝트를 진행하면서 아쉬웠던 점

    이번 프로젝트를 진행하면서 코드를 작성하는 과정은 비교적 수월했지만, 다른 부분에서 여러 가지 어려움을 겪었다. 필자는 커뮤니티 사이트를 통해 팀원을 모집하고 프로젝트를 주도적으로 이끌어갔다. 그러나 개인적으로 여러 면에서 만족스럽지 못한 점이 있었다ㅠㅠ. 

    특히, 모든 회의와 활동이 온라인으로 진행되다 보니 진행 상황을 공유하는데 어려움이 있었다. 연락이 되지 않거나 작업을 정해진 기간 내에 완료하지 못하는 상황이 자주 발생했다. 이러한 상황은 예상하고 있어서  노션을 활용하여 개인의 진행 상황을 공유하고, 백엔드와 프런트엔드 팀장 간의 소통을 통해서 커뮤니케이션의 부족한 부분을 강화하려고 했다. 

    처음에는 의사소통이 잘 됐으나, 시간이 지남에 따라 조장 간의 소통이 줄어드는 모습과 노션을 활용한 모습이 줄어들기 시작했다. 이로 인해 왜 이런 상황이 발생했는지 고민해 본 결과, 정해진 시간이 없었던 것이 주요 원인이라고 생각했다ㅠㅠㅠ 

    앞으로는 시간을 정해 진행 상황을 공유하고, 반드시 문서화하는 방안을 마련하고 싶다.

     

     

    프로젝트 시현 영상은 깃허브에 있으니 궁금하신 분들은 아래 깃허브 주소에서 보시면 됩니다!!!

     

    깃허브 주소

    https://github.com/flowerBowlProject/flowerBowl

     

    'Project' 카테고리의 다른 글

    [flowerBowl] 프로젝트 기술 스택 및 아키택처 정리  (1) 2024.06.04