Coder Social home page Coder Social logo

f-lab-edu / star-dabang Goto Github PK

View Code? Open in Web Editor NEW
15.0 3.0 3.0 1.83 MB

[번개장터 / 스트리미 입사] 스타벅스 어플을 모티브로 한 카페 서비스

Java 100.00%
spring-boot mysql redis google-cloud-platform fitz f-lab graduate java-backend series-b

star-dabang's Introduction

star-dabang

구성도

⚽ Project Goals

  • 스타벅스 어플리케이션을 모티브로 하여 만든 서버 API입니다.
  • 단순 기능 구현뿐만 아니라 대용량 트래픽을 가정하여 개발해서 이용자가 급증하더라도 견고한 어플리케이션을 만드는 것이 목표입니다.

🚀 Project Tech Stacks

  • OpenJDK 11
  • Spring Boot 2.4 + Gradle
  • MySQL 5.7 + MyBatis
  • ProxySQL + Orchestrator
  • Redis 5.0
  • Log4j2
  • Jenkins
  • Pinpoint, nGrinder
  • Google Cloud Platform (Compute Engine, Cloud Storge, Secret Manager)

star-dabang's People

Contributors

jaesika avatar zeroooooowest avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

star-dabang's Issues

상품 조회/삭제 Admin 기능 추가

상품을 삭제할 때 관련 옵션 설정도 모두 삭제한다.
상품을 조회할 때 관련 옵션 이름도 같이 반환해준다.
Admin이 상품을 관리하기 위해서 Page로 조회한다.

회원가입 기능 구현

  • 아이디는 이메일로 사용한다.
  • 중복된 이메일인지 검사하는 기능이 필요하다.
  • 이메일 형식인지 검사하는 기능이 필요하다.

카테고리 등록 Admin 기능 추가

  • Admin은 하위 카테고리를 등록하기 위해서 우선 상위 카테고리를 조회한다. (음료, 음식)
  • Admin은 새로운 상위 카테고리(음료, 음식)를 선택하여 하위 카테고리를 등록할 수 있어야 한다.

옵션 수정 어드민 기능

  • Admin은 옵션의 가격, 최대수량, 이름을 수정할 수 있다.
  • 옵션을 수정할 때 존재하지 않는 옵션에 대해서 예외 처리를 해야한다.

DB 스키마 수정 및 리팩토링

  • members 테이블을 단수형 member로 변경

  • product 테이블과 additional_option의 다대다 관계를 매핑하는 테이블인 product_option 테이블의 기본키를 surrogate key에서 natural key로 변경

  • 마찬가지로 매장별 제품별 재고를 나타내는 office_stock 테이블의 기본키를 natural key 로 변경

  • proudct_option 테이블에서 기존에 product_id를 외래키로 설정 안해줬던 부분을 설정해주고 product 테이블에 잘못 설정되어있던 외래키 삭제

  • BIGINT를 제외하고 양의 정수만 존재하는 필드에 대해 UNSIGNED 적용과 그에 따른 자바 클래스 필드 변경
    (UNSINGED BIGINT 는 primitive type이 없고 성능이 좋지 않은 BigInteger를 써야 하고 BIGINT의 양수 범위로도 충분하다는 판단)

  • 그 외 정수형 범위 적당하게 변경

  • additional_option 테이블과 product 테이블의 name 에 UNIQUE 제약조건 추가

  • product 테이블 is_active 필드를 VARCHAR(1) 에서 BOOLEAN(MySQL 내부적으로는 TINYINT(1)과 동일) 으로 변경

  • 옵션이 존재 하지 않더라도 예외를 던지지 않고 빈 리스트 반환

  • UNIQUE 조건을 걸어준 부분에 대해 검사하지 않고 저장 시도 후 중복시 스프링이 던지는 DuplicateKeyException 을 다시 전환해서 반환

  • Command 객체에 유효성 검사 빠져있거나 스키마 변경에 따른 추가

옵션 삭제 어드민 기능

  • Admin은 기존의 존재하는 옵션을 삭제할 수 있다.
  • 삭제를 할 때 존재하지 않는 옵션이면 예외 처리를 해준다.
  • 삭제를 할 때 존재하는 옵션이면 성공적으로 삭제한다.

옵션 조회 어드민 기능

  • 어드민은 상품에 최초로 옵션을 설정하거나 옵션 정보를 수정할 때 설정을 위해 모든 옵션을 조회하는 기능이 필요하다.
  • 어드민의 옵션 관리를 위해서 페이징으로 조회하는 기능이 필요하다.
  • 어드민이 새로 상품을 추가하거나 수정할 때 옵션을 설정하기 위해 검색하는 기능이 필요하다.

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.