Giter Club home page Giter Club logo

doorrush's Introduction

DoorRush


README 이미지_2

"Restaurnts and more, delivered to your door!"

Door Dash, 배달의 민족을 모티브로 만든 배달 플랫폼 API 서버 프로젝트입니다.


📌 목표

  • 배달의 민족와 같은 배달 앱 서비스를 구현해 내는 것을 목표로 하였습니다.
  • 객체지향적인 설게와 이론을 바탕으로 확장성이 좋고 유연한 클린 코드를 만들고자 합니다.
  • 대용량 트래픽 처리까지 고려한 기능을 구현하는 것이 목표입니다.
  • 안정적인 서비스를 위해 테스트 코드를 작성합니다.
    • Code Coverage 70%를 유지하고 있습니다.
    • 작성한 코드에 대해 꼼꼼하게 테스트 함으로써 기능의 안정성을 보장하고, 추후 리팩토링도 과감하게 할 수 있게끔 하는 것을 목표로 합니다.
  • CI/CD를 통한 자동화를 구현하여 쉽게 협업이 가능한 프로젝트를 목표로 합니다.
  • Github, Slack을 통한 활발한 소통을 바탕으로 효율적인 협업을 추구합니다.

📌 기술 스택


📌 ERD

image


📌 주요 기능 시퀀스 다이어그램

로그인 기능

로그인시퀀스다이어그램


📌 기술적 이슈와 해결 과정


📌 ETC


doorrush's People

Contributors

f-lab-jd avatar yeoonjae avatar ypr821 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

saintyun

doorrush's Issues

배달 정보 데이터 유효성 검사

배달 정보(주소, 전화번호, 요청사항, 메뉴, 수량)의 데이터 유효성 검사

구현상세기능

  • 회원이 입력한 배달 정보의 유효성 검사
  • 금액이 음수이거나 , 수량이 음수로 설정 금지
  • 유효성 검사를 통과하지 못할 경우 예외 처리

학습할 내용

  • 예외 처리에 대한 이해

로그인체크 기능 구현

구현상세기능

  • 로그인 체크 기능 구현
  • AOP 적용

학습할 내용

  • 학습할 내용을 작성합니다.

회원가입 기능 구현

사용자 회원가입 기능

구현상세기능

  • 회원가입 요청 시 전달 받은 데이터의 유효성 검사
  • 중복ID 검사 기능
  • 회원 테이블에 insert

💡 학습할 내용

  • 학습할 내용을 작성합니다.

DB정보 암호화/복호화

DB정보 암호화/복호화

구현상세기능

  • DB 민감정보 암호화

학습할 내용

  • 암/복호화에 대한 이해

Scale Out을 적용하여 로그인 기능 보완

Scale Out을 적용하여 로그인 기능 보완

구현상세기능

  • 다중 서버에서 Session을 이용한 로그인 기능 보완

💡 학습할 내용

  • 서비스의 사용자가 비약적으로 증가한 상황을 가정하고 서버의 처리능력의 한계를 해결할 방법 찾기
  • 다중 서버에서 Session을 이용한 로그인 방법에서 발생할 수 있는 문제점 분석
  • 해결 방법 모색 및 적용

회원가입 리뷰 미반영 내용 반영하기

회원가입 리뷰 미반영 내용 반영하기

구현상세기능

  • DTO, Domain 간의 변환 별도 분리
  • 회원가입시 리턴타입 받기

학습할 내용

  • DTO와 Domain의 사용 레이어 학습
  • DTO와 Domain의 의존관계 학습
  • 변환 방법 학습

gradle build 에 jacoco 연동

gradle build 에 jacoco 연동

구현상세기능

  • Gradle Build 시 JaCoCo 연동하기

학습할 내용

  • JaCoCo 에 대한 이해
  • JaCoCo Gradle Build 시 연동하는 작업 블로그 기록

아이디,비밀번호 찾기 기능 구현

아이디,비밀번호 찾기 기능 구현

구현상세기능

  • 아이디 찾기 : 사용자 이름, 핸드폰 번호를 입력받아 검사
  • 비밀번호 찾기 : 아이디, 핸드폰 번호를 입력받아 검사

💡 학습할 내용

  • 학습할 내용을 작성합니다.

디렉토리 구조 변경

Issue 명

  • 프로젝트 전체 디렉토리 구조 변경

구현상세기능

  • 기존에 1 depth 가 있던 디렉토리 구조를 flat 로 수정하려고 합니다.
  • ex) build.gradle 위치
    • (as-is) ./DoorDush/build.gradle
    • (to-be) ./build.gradle

학습할 내용

  • 학습할 내용을 작성합니다.

jacoco badge & (optional) codecov연결

구현상세기능

  • jacoco badge README에 적용
  • jacoco 로 측정한 테스트 커버리지를 codecov 와 연결

학습할 내용

  • 학습할 내용을 작성합니다.

주문테이블에 정보 insert

주문테이블에 정보 insert

구현상세기능

  • 주문테이블에 insert 진행

학습할 내용

  • 학습할 내용을 작성합니다.

주소-좌표 변환 API 구현

주소-좌표 변환 API 구현

구현상세기능

  • 주소->좌표 변환 기능 구현
  • 좌표->주소 변환 기능 구현

<다음에도 사용하기> 체크시 요청사항 저장 기능 구현

<다음에도 사용하기> 체크시 요청사항 저장 기능 구현

구현상세기능

  • 다음에 사용하기 체크 시 요청사항 테이블에 insert 진행
  • 주문이 완료되면 insert 시키는 형태로 transaction을 통해 구현 (주문이 완료되지 않으면 insert 시키지 않음)

💡 학습할 내용

  • transaction 에 대한 이해

식당 조회 결과 정렬 기능 구현

식당 조회 결과 정렬 기능 구현

구현상세기능

  • 주문 많은 순 조회 기능 구현
  • 최저 주문 금액 순 조회 기능 구현

💡 학습할 내용

  • 학습할 내용을 작성합니다.

확장 가능한 응답객체 구현

확장 가능한 응답객체 구현

구현상세기능

  • 확장 가능한 응답객체 구현
  • ResponseEntity 일관성있게 수정

학습할 내용

  • 객체지향적으로 응답객체 구현하기

이슈 세분화

Issue 명

  • 이슈 세분화

구현상세기능

  • 각 이슈의 구현상세기능에 있는 내용들을 1개의 이슈로 만들기 (무조건 1:1 매칭이 되기보다, 하나의 이슈를 적당한 크기 자르기)
  • 이 외에 추가할 task 가 있다면 등록하기

학습할 내용

  • 학습할 내용을 작성합니다.

결제하기 페이지로 연결

결제하기 페이지로 연결

구현상세기능

  • 결제 시 주문정보를 갖고 결제페이지로 이동하는 기능 구현

학습할 내용

  • 학습할 내용을 작성합니다.

카테고리와 연결된 주변 식당 목록 조회 기능 구현

카테고리와 연결된 주변 식당 목록 조회 기능 구현

구현상세기능

  • 사용자가 선택한 주소를 기반으로 근처 식당 목록 조회 기능 구현
  • 카테고리 enum class 생성
  • 카테고리별 식당 목록 조회 기능 구현

💡 학습할 내용

  • 학습할 내용을 작성합니다.

회원 주소 관련 기능 구현

회원 주소 관련 기능 구현

구현상세기능

  • 주소 스키마 설계
  • 주소 추가
  • 주소 수정

학습할 내용

  • 학습할 내용을 작성합니다.

식당 검색 기능 구현

식당 검색 기능 구현

구현상세기능

  • 식당명 검색 기능 구현
  • 메뉴 검색 결과 관련 식당 조회 기능 구현
  • 검색 결과 없을 시 (예외 처리)

학습할 내용

  • 학습할 내용을 작성합니다.

Github X Slack 연동하기

Github X Slack 연동하기

구현상세기능

  • Github X Slack 연동하여 Github actions의 테스트 빌드 성공시 Slack 채널로 알람이 오도록 한다.

학습할 내용

  • 학습할 내용을 작성합니다.

회원 정보 수정

회원 비밀번호 수정

구현상세기능

  • 회원 비밀번호 변경

💡 학습할 내용

  • 학습할 내용을 작성합니다.

회원 비밀번호 암호화

회원 비밀번호 암호화

구현상세기능

  • BCrypt를 활용한 비밀번호 암호화

학습할 내용

  • BCrypt 이해하기
  • 양방향 암호와와 단방향 암호화에 대한 이해

로그인 관련 예외 처리

로그인 관련 예외 처리

구현상세기능

  • 이미 로그인 한 유저가 재 로그인 시도 시 (예외 처리)
  • 존재하지 않는 ID로 로그인 시도 시 (예외 처리)
  • 잘못된 비밀번호로 로그인 시도 시 (예외 처리)

💡 학습할 내용

  • 로그인 기능 관련 예외 공부
  • 예외로 로직 구현하는 방법 : ControllerAdvice, ExceptionHandler

식당/메뉴 조회 기능 구현

식당/메뉴 조회 기능 구현

구현상세기능

  • 카테고리와 연결된 주변 식당 목록 조회 기능 구현
  • 식당명 검색 기능 구현
  • 메뉴 검색 결과 관련 식당 조회 기능 구현
  • 주문 많은 순 / 최저 주문 금액 순 - 필터 기능 구현
  • 검색 결과 없을 시 (예외 처리)

💡 학습할 내용

  • 학습할 내용을 작성합니다.

자동로그인 기능 구현

구현상세기능

  • UserController 에 쿠키 관련 로직 구현
  • Interceptor 구현을 통해 쿠키 체크 로직 구현

💡 학습할 내용

  • 쿠키 활용 (고민)
  • 쿠키 보안 문제 고민하기

gradle build 실행 에러 해결

gradle build 실행 에러 해결

구현상세기능

  • local과 remote 환경에서 다른 점 확인
  • gradle build 실행 에러 해결

학습할 내용

  • 학습할 내용을 작성합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.