Skip to content

Latest commit

 

History

History
942 lines (790 loc) · 48.4 KB

README.md

File metadata and controls

942 lines (790 loc) · 48.4 KB

🏠 Waruru

logo-eng-horiz

[PLAYDATA] 한화시스템 BEYOND SW캠프 / Waruru

Team - BanpoXii


✨ Medium


📋 Material


⚙Tech Stack

Backend 
Java SpringBoot Swagger Docker

Database 
MySQL Redis

Collaboration Tool 


🗂️ Project Introduction

프로젝트 소개

Waruru는 주택 정보 제공 및 주택 거래 관리 시스템입니다.
다양한 매물 정보 제공으로 임차인의 매물 정보 접근성을 돕고, 임대인에게는 효율적인 주택 관리 서비스를 제공할 수 있도록 합니다.
또한 임대인과 임차인 간의 거래 내역을 체계적으로 관리하여, 거래의 투명성을 높이는 것을 목표로 합니다.
납부 관리 기능을 통해 월세 납부 내역을 기록하고 연체를 방지할 수 있습니다.
따라서 사용자들은 Waruru를 통해 편리하고 신뢰성 있는 주택 매물 서비스를 이용할 수 있습니다.
  

프로젝트 필요성

  1. 주택 거래 증가:
    한국부동산원이 제공하는 부동산 거래현황에 따르면, 2024년 상반기 기준, 전국적으로 주택 거래량이 전년 동기 대비 7%가량 증가한 것을 확인할 수 있습니다. 이러한 거래 증가 추세에 따라 임대인과 임차인 간의 효율적인 정보 관리와 체계적인 거래 내역 관리의 필요성을 느끼게 되었습니다. intro_1

  2. 주택 정보의 변화
    일반 사용자가 주택 정보 변화에 접근하기에는 많은 어려움이 존재합니다. 주택 정보의 변화를 반영한 매물 서비스의 필요를 느끼게 되었습니다.   

    매매가격변동률, 전세가격변동률, 지가변동률

    intro_2-1

    intro_2-2

    intro_2-3

  3. 납부 관리 필요성
    한국부동산원의 공표보고서에 따르면 월세 시장의 규모도 꾸준히 증가하고 있는 것을 확인 할 수 있습니다. 이에 따라 주택 매매뿐만 아니라, 월세 및 전세 등 주택 전반에 걸친 납부 관리 시스템의 필요를 느끼게 되었습니다. 관리 시스템을 통해 거래 납부 내역을 기록하고 연체를 방지함으로써 임대인과 임차인 모두에게 신뢰를 보장할 수 있습니다. intro_3


프로젝트 목표

  1. 효율적인 매물 관리:
    Waruru라는 하나의 서비스를 통해 매물 추가, 수정, 삭제 등의 기능을 제공하여 관리의 편리성을 높일 수 있습니다. 이를 통해 주택 매물 정보를 효율적으로 관리할 수 있도록 합니다.
  2. 임차인의 매물 접근성 향상:
    Waruru에서는 매물 검색을 통해 매물을 쉽게 조회하고 정보를 확인할 수 있습니다. 따라서 임차인이 원하는 주택 매물을 손쉽게 찾고 접근할 수 있도록 합니다.
  3. 임대인과 임차인 간의 거래내역 관리:
    Waruru는 거래 내역 기록을 통해 모든 거래 과정을 체계적으로 관리하여, 거래 내역의 투명성 보장을 목표로 합니다. 따라서 임대인과 임차인 간의 거래 내역을 관리하여 연체 문제를 방지, 임대 업무의 효율성을 높이고자 합니다.
  4. 매물 후기 지원:
    임차인이 매물에 대한 후기를 작성하고 공유할 수 있도록 하여, 임차인의 원활한 매물 조회에 기여하고자 합니다. 매물에 대한 후기를 통해 사용자 경험을 개선하고 매물의 신뢰성을 높이는 것을 목표로 합니다.

기대 효과

   Waruru 서비스를 통해 다음과 같은 효과를 기대할 수 있습니다.

  1. 효율적인 매물 관리:
    • 업무 효율성 증가: Waruru를 통해 매물 추가, 수정, 삭제가 용이해져 업무 처리의 효율성을 증대할 수 있습니다. 따라서 매물 관리자의 시간과 비용 절감을 기대할 수 있습니다.
  2. 임차인의 매물 접근성 향상:
    • 편리한 매물 검색: 검색 기능을 통해 임차인은 자신의 요구에 맞는 매물을 쉽게 찾을 수 있습니다. 따라서 임차인의 주거 만족도를 높이는 데 기여합니다. 또한, 임차인은 여러 플랫폼을 이용할 필요 없이 Waruru라는 하나의 서비스를 통해 다양한 매물을 확인할 수 있게 되어, 시간과 비용을 절감할 수 있습니다.
  3. 임대인과 임차인 간의 거래내역 관리:
    • 신뢰성 있는 거래 환경: 거래 내역 관리를 통해 거래의 투명성을 보장할 수 있습니다. 이를 통해 갈등 발생을 최소화하고, 원활한 거래를 유도할 수 있습니다.
    • 납부 내역 확인: Waruru를 통해 임차인은 납부 내역을 쉽게 확인할 수 있게 됩니다. 이를 통해 월세 납부 기한을 관리할 수 있고 더 나아가, 임차인의 재정 관리를 유도할 수 있게 됩니다.
  4. 매물 후기 제공:
    • 사용자 만족도: 여러 사용자가 작성한 매물 후기를 통해 원활한 매물 선택 시 해당 정보를 참고할 수 있어 사용자의 매물 조회에 기여할 수 있습니다. 최종적으로 사용자 경험을 개선하여 사용자 만족도를 높일 수 있게 됩니다.



📑 Requirements Specification

요구사항 명세서 바로가기

006_Requirements1 007_Requirements2


🛠️ Project Design

1. System Architecture

system architecture


2. Relation Schema

RelationSchema


3. E-R Diagram

ERD


4. Table Specification

테이블 명세서 바로가기

Table Specification


💾 Project Implementation

1. API Specification

api_Specification


2. Functional Implementation

회원
회원 가입 request response
email
  • send
request response email
  • verify
request response
로그인&로그아웃
  • 로그인
로그인 resquest와 response 로그인 request로 받은 액세스 토큰 쿠키
  • 액세스 토큰이 만료된 경우
request response(새로운 액세스 토큰이 발급됨) 액세스 토큰 재발급 후 기존의 토큰은 무효화됨(기존 토큰으로 요청 시도)
  • 로그아웃
액세스토큰으로 로그아웃 요청 결과
비밀번호 찾기 request response mail 변경된 비밀번호로 로그인 시도 로그인 성공
수정 전 request response 후
삭제 전 request response 후
매물
등록

sale_register_success

조회

sale_findAllList_success sale_findById_success

  • 조회_notfound sale_findById_notfound
수정

sale_update_success

  • 수정_notfound sale_update_notfound
삭제

sale_delete_success sale_delete_success_check

거래
등록

1_거래등록 2_거래등록

조회

6_사용자거래조회 7_사용자거래조회 3_거래조회 4_거래조회

  • 조회_notfound 5_거래조회X
수정

8_거래수정 9_거래수정

취소

10_거래취소 11_거래취소

삭제

12_거래삭제 13_거래삭제 14_거래삭제

납부 내역
등록 detail_register_success detail_register_check
조회 detail_findAllList detail_findById_success
  • 조회_notfound
detail_findById_notfound
수정 detail_update_success detail_update_check
  • 수정_notfound
detail_update_notfound
삭제 detail_delete_success detail_delete_check
  • 삭제_notfound
detail_delete_notfound
후기
등록

2  등록 101번 등록_

조회

4   리스트 조회  후기 리스트 페이징 3-1   단건조회  1번 후기 수정 전 조회

  • 조회_notfound 1   단건조회  없는 매물
수정

3-2   수정  1번 후기 수정 3-3   수정 후 단건조회  1번 후기 제목 수정 결과 조회

삭제

5   삭제  후기 삭제 5-1   삭제 후 단건조회  후기 삭제


3. Test Case

회원
회원 가입 image
image
이메일 패스워드로 회원 확인 image
image
회원 정보 수정 image
image
회원 탈퇴 image
image
매물
매물 등록 테스트
등록 성공 image
image
회원이 없는 경우 image image
특정 매물 조회 테스트
조회 성공 image
image
매물이 없는 경우 image
image
매물 삭제 테스트
삭제 성공 image image
매물이 없는 경우 image
image
매물 리스트 조회
조회 성공 image
image
매물 수정 테스트
수정 성공 image
image
매물이 없는 경우 image
image
거래
거래 등록 테스트
등록 성공 image
image
회원이 없는 경우 image
image
매물이 없는 경우 image
image
image
거래 조회 테스트
조회 성공 image
image
거래가 없는 경우 image
image
image
전체 거래 조회 image
image
거래 취소 테스트
취소 성공 image
image
거래가 없는 경우 image
image
image
거래 변경 테스트
변경 성공 image
image
거래가 없는 경우 image
image
image
거래 삭제 테스트
삭제 성공 image
image
거래가 없는 경우 image
image
납부 내역
납부 내역 등록 테스트
등록 성공 image
image
회원이 없는 경우 image
image
image
납부 내역 조회 테스트
전체 리스트 조회 image
image
특정 납부 내역 조회 image
image
납부 내역이 없는 경우 image
image
image
납부 내역 수정 테스트
수정 성공 image
image
납부 내역이 없는 경우 image
image
image
납부 내역 삭제 테스트
삭제 성공 image
image
납부 내역이 없는 경우 image
image
image
후기
후기 등록 테스트
등록 성공 image
image
회원이 없는 경우 image
image
image
매물이 없는 경우 image
image
image
후기 조회 테스트
�특정 후기 조회 image
image
후기가 없는 경우 image
image
image
후기 수정 테스트
수정 성공 image
image
후기가 없는 경우 image
image
image
후기 삭제 테스트
삭제 성공 image
image
후기가 없는 경우 image
image
image

📂 Directory Structure

자세히 보기(Backend)
📦 java
 ┣ 📂 waruru.backend
 ┃ ┣ 📂 business
 ┃ ┃ ┣ 📂 controller
 ┃ ┃ ┃ ┗ 📜 BusinessController.java
 ┃ ┃ ┣ 📂 domain
 ┃ ┃ ┃ ┣ 📜 Business.java
 ┃ ┃ ┃ ┣ 📜 BusinessRepository.java
 ┃ ┃ ┃ ┗ 📜 BusinessStatus.java
 ┃ ┃ ┣ 📂 dto
 ┃ ┃ ┃ ┣ 📜 BusinessCancelRequest.java
 ┃ ┃ ┃ ┣ 📜 BusinessListResponse.java
 ┃ ┃ ┃ ┣ 📜 BusinessRegisterRequest.java
 ┃ ┃ ┃ ┣ 📜 BusinessResponse.java
 ┃ ┃ ┃ ┗ 📜 BusinessUpdateRequest.java
 ┃ ┃ ┗ 📂 service
 ┃ ┃ ┃ ┗ 📜 BusinessService.java
 ┃ ┣ 📂 common
 ┃ ┃ ┗ 📂 config
 ┃ ┃ ┃ ┣ 📜 EmailConfig.java
 ┃ ┃ ┃ ┣ 📜 RedisConfig.java
 ┃ ┃ ┃ ┣ 📜 SecurityConfig.java
 ┃ ┃ ┃ ┗ 📜 SwaggerConfig.java
 ┃ ┣ 📂 detail
 ┃ ┃ ┣ 📂 controller
 ┃ ┃ ┃ ┗ 📜 DetailController.java
 ┃ ┃ ┣ 📂 domain
 ┃ ┃ ┃ ┣ 📜 DetailRepository.java
 ┃ ┃ ┃ ┗ 📜 DetailStatus.java
 ┃ ┃ ┣ 📂 dto
 ┃ ┃ ┃ ┣ 📜 DetailDeleteRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 DetailRegisterRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 DetailResponseDTO.java
 ┃ ┃ ┃ ┗ 📜 DetailUpdateRequestDTO.java
 ┃ ┃ ┗ 📂 service
 ┃ ┃ ┃ ┗ 📜 DetailService.java
 ┃ ┣ 📂 member
 ┃ ┃ ┣ 📂 contants
 ┃ ┃ ┃ ┗ 📜 SecurityConstants.java
 ┃ ┃ ┣ 📂 controller
 ┃ ┃ ┃ ┣ 📜 EmailController.java
 ┃ ┃ ┃ ┗ 📜 MemberController.java
 ┃ ┃ ┣ 📂 domain
 ┃ ┃ ┃ ┣ 📜 Email.java
 ┃ ┃ ┃ ┣ 📜 EmailRepository.java
 ┃ ┃ ┃ ┣ 📜 Member.java
 ┃ ┃ ┃ ┣ 📜 MemberRepository.java
 ┃ ┃ ┃ ┣ 📜 MemberRole.java
 ┃ ┃ ┃ ┣ 📜 MemberStatus.java
 ┃ ┃ ┃ ┣ 📜 RefreshToken.java
 ┃ ┃ ┃ ┗ 📜 RefreshTokenRepository.java
 ┃ ┃ ┣ 📂 dto
 ┃ ┃ ┃ ┣ 📜 MemberEmailRequestDto.java
 ┃ ┃ ┃ ┣ 📜 MemberEmailVerifyRequestDto.java
 ┃ ┃ ┃ ┣ 📜 MemberLoginRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 MemberRegisterRequestDTO.java
 ┃ ┃ ┃ ┗ 📜 MemberUpdateRequestDTO.java
 ┃ ┃ ┣ 📂 filter
 ┃ ┃ ┃ ┗ 📜 JwtAuthenticationFilter.java
 ┃ ┃ ┣ 📂 service
 ┃ ┃ ┃ ┣ 📜 EmailService.java
 ┃ ┃ ┃ ┣ 📜 LogoutService.java
 ┃ ┃ ┃ ┗ 📜 MemberService.java
 ┃ ┃ ┗ 📂 util
 ┃ ┃ ┃ ┣ 📜 JwtTokenProvider.java
 ┃ ┃ ┃ ┣ 📜 SecurityUser.java
 ┃ ┃ ┃ ┗ 📜 SecurityUserDetailService.java
 ┃ ┣ 📂 review
 ┃ ┃ ┣ 📂 controller
 ┃ ┃ ┃ ┗ 📜 ReviewController.java
 ┃ ┃ ┣ 📂 domain
 ┃ ┃ ┃ ┣ 📜 Review.java
 ┃ ┃ ┃ ┗ 📜 ReviewRepository.java
 ┃ ┃ ┣ 📂 dto
 ┃ ┃ ┃ ┣ 📜 ReviewDeleteRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 ReviewRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 ReviewResponseDTO.java
 ┃ ┃ ┃ ┗ 📜 ReviewUpdateRequestDTO.java
 ┃ ┃ ┗ 📂 service
 ┃ ┃ ┃ ┗ 📜 ReviewService.java
 ┃ ┣ 📂 sale
 ┃ ┃ ┣ 📂 controller
 ┃ ┃ ┃ ┗ 📜 SaleController.java
 ┃ ┃ ┣ 📂 domain
 ┃ ┃ ┃ ┣ 📜 Category
 ┃ ┃ ┃ ┣ 📜 Sale.java
 ┃ ┃ ┃ ┣ 📜 SaleRepository.java
 ┃ ┃ ┃ ┗ 📜 SaleStatus.java
 ┃ ┃ ┣ 📂 dto
 ┃ ┃ ┃ ┣ 📜 SaleListResponseDTO.java
 ┃ ┃ ┃ ┣ 📜 SaleRegisterRequestDTO.java
 ┃ ┃ ┃ ┣ 📜 SaleResponseDTO.java
 ┃ ┃ ┃ ┗ 📜 SaleUpdateRequestDTO.java
 ┃ ┃ ┗ 📂 service
 ┃ ┃ ┗ ┗ 📜 SaleService.java
 ┃ ┗ 📜 BackendApplication.java
 📦 resources
 ┗ 📜 application.yml
자세히 보기(Test Case)
📦java
 ┣ 📂 waruru.backend
 ┃ ┣ 📂 business.service
 ┃ ┃ ┣ 📜 BusinessCancelTest.java
 ┃ ┃ ┣ 📜 BusinessCommonSetUp.java
 ┃ ┃ ┣ 📜 BusinessDeleteTest.java
 ┃ ┃ ┣ 📜 BusinessRegisterTest.java
 ┃ ┃ ┣ 📜 BusinessSearchTest.java
 ┃ ┃ ┗ 📜 BusinessUpdateTest.java
 ┃ ┣ 📂 detail
 ┃ ┃ ┣ 📜 DetailCommonSetUp.java
 ┃ ┃ ┣ 📜 DetailDeleteTest.java
 ┃ ┃ ┣ 📜 DetailReadTest.java
 ┃ ┃ ┣ 📜 DetailRegisterTest.java
 ┃ ┃ ┗ 📜 DetailUpdateTest.java
 ┃ ┣ 📂 member
 ┃ ┃ ┗ 📜 MemberServiceTest.java
 ┃ ┣ 📂 review
 ┃ ┃ ┣ 📜 ReviewCommonSetUp.java
 ┃ ┃ ┣ 📜 ReviewCreateTest.java
 ┃ ┃ ┣ 📜 ReviewDeleteTest.java
 ┃ ┃ ┣ 📜 ReviewDetailTest.java
 ┃ ┃ ┣ 📜 ReviewListTest.java
 ┃ ┃ ┗ 📜 ReviewUpdateTest.java
 ┃ ┣ 📂 sale
 ┃ ┃ ┗ 📜 SaleServiceTest.java
 ┗ ┗ 📜 BackendApplicationTests.java

📆 WBS

WBS 바로가기

스크린샷 2024-07-31 오전 10 04 20


👨‍👩‍👧‍👦 Member

김나현 박성준 서현지 이유진 임지훈
김나현 박성준 서현지 이유진 임지훈

📚 Memoir

  팀 원    회고록
김나현  백엔드 프로젝트에서 처음 사용해보는 기술들을 함께 공부하며 진행하는 과정에서 많은 것들을 배울 수 있는 시간이었습니다. 처음엔 잘 이해되지 않았던 것들을 스스로 구글링하며 공부하고, 팀원들에게 질문하고 도움을 받아가며 성장할 수 있었습니다. 이번 프로젝트가 전체적인 백엔드의 흐름을 이해하는데 저에게 많은 도움이 된 것 같아 좋았습니다.
박성준  처음 접해보는 기술들을 적용하는 과정에서 많은 시행착오가 있었습니다. 자료를 검색하고 팀원들과 의견을 나누며 문제를 해결해나가는 과정이 즐거웠습니다. 백엔드 기술의 전반적인 흐름을 보고, 프레임워크도 어느정도 이해할 수 있게 된 것 같습니다. 나이스한 팀원들과 함께해서 행복했습니다.
서현지  다양한 백엔드 기술을 적용하고 실습할 수 있었습니다. 이전 기반기술 프로젝트에 비해 기간도 많이 주어지고, 필요한 기술셋도 많아져 수업시간에 배운 내용을 복습하고 새로운 내용은 개인적으로 구글링하여 문서를 읽거나 팀원들의 코드를 참고하는 등의 방식으로 많은 것을 배워갈 수 있는 시간이었습니다. 특히, 기능을 구현하는 과정에서 이전 프로젝트보다 훨씬 많은 오류를 접하게 되면서 직접 트러블 슈팅을 겪으며 공부하고 해결했던 것이 뜻깊은 경험이었습니다.
이유진  이번 백엔드 프로젝트를 통해 스프링 프레임워크에 대해 더 깊이 이해할 수 있었습니다. 또한 컨벤션을 정하고 프로젝트를 진행한 덕분에 팀원들의 코드를 보다 쉽게 이해할 수 있었습니다. 확실히 컨벤션을 정하고 프로젝트를 진행하는 게 중요함을 깨닫게 되었습니다. 팀원들과 협력하여 프로젝트를 진행하는 과정에서 많이 배워나가고 성장할 수 있었습니다.
임지훈  이번 프로젝트를 통해서 커뮤니케이션과 협력의 중요성을 알게되었습니다. 주제 선정 당시 저의 커뮤니케이션 부족으로 주제를 서로 다르게 이해하는 문제가 발생하였습니다. 이러한 문제를 바로잡기 위해 팀원들과 많은 커뮤니케이션 및 회의를 진행하였고, 빠른 시일 내에 문제점을 바로잡을 수 있었습니다.
 또한, 기능 구현 당시 기능 구현에 어려움을 겪는일이 발생하였습니다. 이 때마다 팀원들과 함께 협력하며 도왔고, 어렵지 않게 문제들을 해결할 수 있었습니다. 이러한 일들을 통해 협업에서는 팀원들간의 커뮤니케이션과 협력이 중요하다는 것을 깨달았습니다.
 마지막으로 부족한 팀장을 믿고 끝까지 따라와준 팀원들에게 정말 감사합니다!