Skip to content

Team Project : Plogging Community Application SSUDAM 🏃‍♂️🚶‍♀️

Notifications You must be signed in to change notification settings

hyezuu/ssudam

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

쓰담(SSUDAM)은 쓰레기 담기의 줄인말로
함께 플로깅을 할 사람을 모집하는 플로깅 커뮤니티 사이트입니다.

* 플로깅(Plogging)은 '줍다'라는 뜻의 스웨덴어 플로카 업(plocka upp)과
'달리다'라는 뜻의 영어 조깅(Jogging)을 합성한 단어로,
쓰레기를 주우며 조깅하는 행동을 의미합니다


🏃‍♂️기획의도

  • 코로나로 인한 비대면 상황을 거친 후 줄어든 사람들 간의 소통
  • 점점 더 악화되는 환경 문제에 이바지하기 위함
  • 운동은 하고싶은데 동기가 부족하거나, 작게나마 뿌듯함을 느끼고 싶은 분들, 지역 주민들과 함께 참여하고 건강 증진을 위한 운동 기회를 제공하기 위함

🏃‍♀️목표 및 기대효과

  • 사회적으로 소통하며 활동량을 높인다.
  • 환경보호와 건강을 동시에 고려하는 활동으로 사용자들에게 지속 가능한 라이프 스타일의 중요성을 일깨운다.
  • 사용자들은 쓰레기 수거와 운동의 조합으로 건강한 라이프스타일을 즐기며 만족감을 느낄 수 있다.

🚩 개요


👀 Team SSUDAM

강혜주 김수안 최준하 조은희
BE(팀장) BE BE BE
hyezuu sooani choijh0309 eunhee78



배정현 이혜원 안민주 김윤한
FE(팀장) FE FE FE
bjh0524 hyehye225 anminjoo YunHanKIM




👩‍🌾 hyezuu's Role👨‍🌾

백엔드 팀장 & 응원단장💛

  • 백엔드 리드 및 프론트엔드와의 소통

Restful API를 활용한 댓글 및 댓글 좋아요 기능

  • Comment & Like 도메인 작성
  • JPA 쿼리 메서드를 활용하여 특정 회원이 작성한 모든 댓글 및 모집글에 존재하는 모든 댓글 조회 가능
  • 최신순 조회 및 좋아요순 조회 구현

Restful API를 활용한 대댓글 기능

  • Reply 도메인 작성
  • 댓글 조회시 대댓글이 존재한다면, Dto 형태로 변환해서 함께 가져 올 수 있게 구현
  • Mapstruct의 create() 메서드 사용하여 코드 중복 제거

Restful API를 활용한 북마크 기능

  • Bookmark 도메인 작성
  • 조인 엔티티를 사용해 멤버와 모임글 연결
  • JPA 쿼리 메서드 existBy(), save(), delete() 사용

연관 관계 매핑 및 편의 메서드 작성

  • 모든 연관관계 매핑 OneToOne, ManyToOne, OneToMany
  • 관계의 주인 객체(부모객체)에 cascade 설정 (CascadeType.REMOVE,CascadeType.PERSIST)

공통 기능 구현

  • 예외처리
    • GlobalExceptionAdvice
    • BusinessLogicException
    • ExceptionCode
    • ErrorResponse
  • Util
    • CustomBeanUtils
    • UriCreator
  • Auditable
    • 추상클래스
    • createdAt, ModifieAt 필드 정의
    • EntityListeners 사용
  • Dto
    • SingleResponseDto
    • MultiResponseDto
    • PageInfo

Advice, CustomAnnotation을 사용한 리소스 접근 검증

  • MemberVerifyAdvice 클래스 구현
  • Interface 사용하여 중복로직 제거
  • CustomAnnotation 사용하여 코드 수정 최소화

OpenWeather API를 활용한 5일 내의 날씨예보 API 호출

  • RestTemplate 사용
  • Stream 사용하여 응답 필터링

슬라이스 테스트에 Mockito 적용

  • 구현한 모든 도메인 test case 작성

Spring Rest Docs를 이용한 API 문서 작성

  • Restdocs의 api 스펙 정보 코드를 test case에 함께 작성
  • test 통과시 생성되는 snippets 으로 api문서 작성

Apache Benchmarking tool을 활용한 성능 테스트

  • Gnuplot을 사용하여 결과 그래프 생성

🪄 Pages Preview

자세히 보기
북마크 기능 댓글 등록
댓글 삭제 대댓글 등록
마이페이지 : 나의모임 마이페이지 : 나의 글/댓글
마이페이지 : 북마크 회원 탈퇴



🛠 기술 스택

image

공통


백엔드

Gradle

Redis SpringSecurity

IntelliJ IDEA Windows Windows Postman

프론트엔드



👀 FeedBack

🙋‍♀️ Strengths

  1. 테스트 케이스 작성과 API 문서 자동화

    • API 문서를 자동화하기 위한 테스트 케이스를 작성하는 데 성공했습니다.
  2. 보안 취약점 테스트 수행

    • 애플리케이션의 보안 취약점을 직접 테스트하여 안전성을 강조했습니다.
  3. 성능 테스트 수행

    • Apache Benchmark 툴을 이용한 성능 테스트를 통해 애플리케이션의 성능 향상을 확인하고 개선했습니다.
  4. 기본에 충실한 코드 구현

    • 수강 기간 동안 배운 기본 지식을 활용하여 간결하고 가독성 있는 코드를 구현했습니다.

👩‍💻 Areas for Improvement

  1. 비즈니스 로직에 대한 단위 테스트 작성

  2. API 문서에 요청헤더 추가 (Access Token 등)

  3. WireMock을 사용한 외부 Api 요청/ 응답 테스트 진행

  4. Spring MVC의 캐싱 기능, JPA의 2차 캐시를 활용한 성능 향상

  5. jpa.showsql 설정을 통한 로그확인 및 불필요한 쿼리 제거

  6. 간단한 매핑작업에 Java record를 활용하여 불변 객체 구현

About

Team Project : Plogging Community Application SSUDAM 🏃‍♂️🚶‍♀️

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 45.5%
  • Java 29.8%
  • JavaScript 17.7%
  • CSS 7.0%