Skip to content

Latest commit

 

History

History
313 lines (273 loc) · 18.4 KB

README.md

File metadata and controls

313 lines (273 loc) · 18.4 KB


프로젝트 진행 기간
2023.10.12 ~ 2023.12.04


🦸ReveiwRanger (리뷰레인저)

동료가 생각하는 나의 모습을 알고 싶은 사람들을 위해 피어리뷰를 효과적으로 관리할 수 있는 서비스입니다!


✨ 기획 배경

데브코스내에서 피어리뷰를 진행할 때 구글폼에 의존하면서 생기는 문제점을 해결하고자 했습니다.

개별 응답을 수집하고 종합하는 데 많은 시간이 소요되며 응답 유무를 확인하기 어렵고 또한, 주관식 응답을 정제하는 데 시간이 오래 걸리는 문제가 있습니다.

리뷰 결과를 여러 매체에 의존하지 않고 하나의 플랫폼으로 효과적으로 관리하고자 했습니다.

리뷰 결과를 시각적으로 한눈에 확인할 수 있도록 했으며 PDF 저장 기능을 도입해 결과를 개인적으로 소장할 수 있도록 했습니다.

실제 사용자를 유치하고 서비스를 지속 운영하고자 했습니다.

데브코스 인원들을 타겟으로 실사용자를 유치하고 테스터 경험을 통해 피드백 반영 후 안정적이며 지속적인 운영을 목표로 했습니다.


✨ 주요 기능

스크린샷 2023-12-05 오후 6 21 38

1️⃣ 편리하고 다양한 피어 리뷰 진행!

피어 리뷰에 적합한 다양한 질문 형식을 제공합니다.

2️⃣ 시각화 된 리뷰 결과 한 눈에 확인!

리뷰 결과에 대한 통계 및 시각적 정보를 제공합니다.

3️⃣ 리뷰들을 한 곳에서 관리!

수집된 설문 결과들을 저장해서 모아봅니다.

4️⃣ 피어 리뷰 결과를 빠르게 정제하고 공유!

피어 리뷰 중 주관식 답변의 부정적인 표현을 정제합니다.
피어 리뷰의 결과를 대상자 별로 자동 분류합니다.


✨ 히어로 (Team Members)

Product Owner Developer Scrum Master
장수연 신범철 김주웅
리뷰 결과 도메인
유저, 인증 도메인
리뷰 답변 도메인
Cloud
리뷰 설문 도메인

🦸 FE 히어로들


✨ 개발스택

종류 기술 스택
🚀 Develop Tools
🛠️ 클라우드

Miro를 통한 도메인 분석 및 플로우 차트 작성

스크린샷 2023-12-02 오전 2 54 44

✨ Architecture

CI/CD

image

System Architecture

image

✨ ERD

✨ 패키지구조

펼치기/접기
.
├── ReplyTarget
│   ├── application
│   │   └── ReplyTargetService.java
│   ├── domain
│   │   └── ReplyTarget.java
│   ├── dto
│   │   ├── request
│   │   │   ├── CreateReplyTargetRequest.java
│   │   │   └── UpdateReplyTargetRequest.java
│   │   └── response
│   │       └── ReplyTargetResponse.java
│   └── repository
│       ├── ReplyTargetCustomRepository.java
│       ├── ReplyTargetCustomRepositoryImpl.java
│       └── ReplyTargetRepository.java
├── ReviewRangerApplication.java
├── auth
│   ├── api
│   │   └── AuthController.java
│   ├── application
│   │   ├── AuthService.java
│   │   └── CustomUserDetailsService.java
│   ├── domain
│   │   ├── RefreshToken.java
│   │   └── UserPrincipal.java
│   ├── dto
│   │   ├── JoinRequest.java
│   │   ├── LoginRequest.java
│   │   ├── LoginResponse.java
│   │   ├── ValidateEmailRequest.java
│   │   └── ValidateNameRequest.java
│   └── repository
│       └── RefreshTokenRepository.java
├── common
│   ├── config
│   │   ├── AsyncConfig.java
│   │   ├── JasyptConfig.java
│   │   ├── OpenAIConfig.java
│   │   ├── QueryDslConfig.java
│   │   ├── RedisConfig.java
│   │   ├── S3Config.java
│   │   ├── SecurityConfig.java
│   │   └── SwaggerConfig.java
│   ├── entity
│   │   └── BaseEntity.java
│   ├── exception
│   │   ├── ErrorCode.java
│   │   ├── GlobalExceptionHandler.java
│   │   └── RangerException.java
│   ├── image
│   │   └── infrastructure
│   │       ├── ImageManager.java
│   │       └── S3manager.java
│   ├── jwt
│   │   ├── ExceptionHandlerFilter.java
│   │   ├── JwtFilter.java
│   │   └── JwtTokenProvider.java
│   ├── openai
│   │   ├── Prompt.java
│   │   ├── api
│   │   │   └── OpenAIController.java
│   │   ├── application
│   │   │   └── OpenAIService.java
│   │   ├── constant
│   │   │   └── Command.java
│   │   └── dto
│   │       └── request
│   │           ├── CleanRepliesRequest.java
│   │           ├── Message.java
│   │           └── OpenAIRequest.java
│   ├── redis
│   │   ├── RedisProperties.java
│   │   └── RedisUtil.java
│   ├── regex
│   │   └── UserRegex.java
│   ├── response
│   │   └── RangerResponse.java
│   └── slack
│       ├── SlackConstant.java
│       ├── SlackController.java
│       └── SlackService.java
├── finalReviewResult
│   ├── api
│   │   └── FinalReviewResultController.java
│   ├── application
│   │   └── FinalReviewResultService.java
│   ├── domain
│   │   ├── AnswerSupplier.java
│   │   ├── FinalQuestion.java
│   │   ├── FinalQuestionType.java
│   │   ├── FinalReviewResult.java
│   │   ├── FinalReviewResultAnswer.java
│   │   ├── FinalReviewResultAnswerDropdown.java
│   │   ├── FinalReviewResultAnswerHexStat.java
│   │   ├── FinalReviewResultAnswerObjects.java
│   │   ├── FinalReviewResultAnswerRating.java
│   │   ├── FinalReviewResultAnswerSubject.java
│   │   └── Hexstat.java
│   ├── dto
│   │   ├── CheckFinalResultStatus.java
│   │   ├── CreateFinalReplyRequest.java
│   │   ├── CreateFinalReviewRequest.java
│   │   ├── CreateFinalReviewResponse.java
│   │   ├── FinalReviewResultListResponse.java
│   │   ├── GetFinalReviewAnswerResponse.java
│   │   ├── GetFinalReviewResultResponse.java
│   │   └── UpdateAnswerOfSubject.java
│   └── repository
│       ├── DropdownTypeRepository.java
│       ├── FinalReviewResultCustomRepository.java
│       ├── FinalReviewResultCustomRepositoryImpl.java
│       ├── FinalReviewResultRepository.java
│       ├── HexstatTypeRepository.java
│       ├── ObjectTypeRepository.java
│       ├── RatingTypeRepository.java
│       └── SubjectTypeRepository.java
├── participation
│   ├── api
│   │   └── ParticipationController.java
│   ├── application
│   │   └── ParticipationService.java
│   ├── domain
│   │   ├── Participation.java
│   │   └── ReviewStatus.java
│   ├── dto
│   │   ├── request
│   │   │   ├── SubmitParticipationRequest.java
│   │   │   └── UpdateParticipationRequest.java
│   │   └── response
│   │       ├── GetParticipationResponse.java
│   │       ├── ParticipationResponse.java
│   │       ├── ReceiverResponse.java
│   │       └── ResponserResponse.java
│   └── repository
│       ├── ParticipationCustomRepository.java
│       ├── ParticipationCustomRepositoryImpl.java
│       └── ParticipationRepository.java
├── question
│   ├── api
│   │   └── QuestionController.java
│   ├── application
│   │   └── QuestionService.java
│   ├── domain
│   │   ├── Question.java
│   │   ├── QuestionOption.java
│   │   └── QuestionType.java
│   ├── dto
│   │   ├── request
│   │   │   ├── CreateQuestionOptionRequest.java
│   │   │   └── CreateQuestionRequest.java
│   │   └── response
│   │       ├── GetQuestionOptionResponse.java
│   │       └── GetQuestionResponse.java
│   └── repository
│       ├── QuestionOptionRepository.java
│       └── QuestionRepository.java
├── reply
│   ├── api
│   │   └── ReplyRestController.java
│   ├── application
│   │   └── ReplyService.java
│   ├── domain
│   │   └── Reply.java
│   ├── dto
│   │   ├── request
│   │   │   ├── CreateReplyRequest.java
│   │   │   └── UpdateReplyRequest.java
│   │   └── response
│   │       └── ReplyResponse.java
│   └── repository
│       └── ReplyRepository.java
├── review
│   ├── api
│   │   └── ReviewController.java
│   ├── application
│   │   └── ReviewService.java
│   ├── domain
│   │   ├── Review.java
│   │   └── ReviewType.java
│   ├── dto
│   │   ├── request
│   │   │   └── CreateReviewRequest.java
│   │   └── response
│   │       ├── GetReviewDetailResponse.java
│   │       ├── GetReviewResponse.java
│   │       └── ReviewResponse.java
│   └── repository
│       ├── ReviewCustomRepository.java
│       ├── ReviewCustomRepositoryImpl.java
│       └── ReviewRepository.java
└── user
    ├── api
    │   └── UserController.java
    ├── application
    │   └── UserService.java
    ├── domain
    │   └── User.java
    ├── dto
    │   ├── GetUserResponse.java
    │   ├── UpdateNameRequest.java
    │   ├── UpdatePasswordRequest.java
    │   ├── UserInfoResponse.java
    │   └── UserResponse.java
    └── repository
        └── UserRepository.java

✨ Links