Giter Site home page Giter Site logo

001's Introduction

KAKAO_CLONE_CODING

카카오 쇼핑 홈페이지를 간단하게 클론 코딩한 프로젝트 입니다. 대략적인 기능으로는 홈화면에 상품 조회, 캐러셀 (홍보물 사진들), 로그인 로그아웃, 장바구니, 구매(PG사 결제 미포함)가 구현되어 있습니다.

Command

₩₩₩ bash npm install # 의존성 모듈 설치 npm run build # 패키지 번들링 npm run start # 프로젝트 실행 ₩₩₩

페이지별 구성

  1. 메인 페이지
  • 핵심 기능: 버튼들을 눌렀을때 해당하는 페이지로 이동하게끔 중간다리 역할을 해준다.
  • 기능 상세 설명: 상단바(GNB바_홈, 로그인, 로그아웃, 회원가입), 캐러셀(상품들 광고), 상품들 조회
  • 인터페이스 요구사항: 많은 유저가 사용할 수 있도록 심미적으로 보기 좋고, 누구나 사용할 수 있게끔 직관적이어야한다.
  1. 개별 상품 상세 페이지
  • 핵심 기능: 상품 사진 및 가격 및 세부정보, 옵션 선택 및 조회, 리뷰 수, 장바구니에 담기
  • 기능 상세 설명: 상품에 대한 사진과 설명을 조회하고, 옵션을 선택하고 장바구니에 담을 수 있다.
    • 이때 로그인이 된 상태에서만 장바구니에 물건 담기가 가능하다.
  • 인터페이스 요구사항: 옵션을 선택했을때 장바구니에 물건이 담도록 만든다.
  1. 주문 목록 페이지
  • 핵심 기능: 배송지와 주문상품 정보 조회, 결제 금액에 대한 화면, 약관 동의
  • 기능 상세 설명: 기본 배송지를 불러올수있게한다.
  • 인터페이스 요구사항: 위 핵심기능의 3가지를 화면에서 출력하고 최종 결제 금액과 결제하기 버튼을 생성한다.
  1. 결제 완료 페이지
  • 핵심 기능: 결제하기
  • 기능 상세 설명: 결제하기 버튼을 누르면 장바구니에서 아이템들이 삭제되고, api가 적절하게 통신이 될때 "결제가 완료되었습니다"라는 alert창이 출력된다. "쇼핑계속하기" 버튼을 클릭하면, 홈화면으로 이동된다.
  • 인터페이스 요구사항: 결제금액과 내가 주문한 상품들의 옵션 및 상품명을 화면에 띄운다.
  1. 장바구니 페이지
  • 핵심 기능: 내가 담은 상품들을 조회할 수 있다.
  • 기능 상세 설명: 옵션 조절이 가능하다.
  • 인터페이스 요구사항: 장바구니 밑에 내가 체크한 제품들만 구매를 진행한다.
  1. 로그인 페이지
  • 핵심 기능: 로그인 요청 및 사용자 로그인 정보 저장 (token)
  • 기능 상세 설명: 이메일과 비밀번호를 이용해 로그인이 진행된다.
  • 인터페이스 요구사항: 이메일 또는 비밀번호에 들어온 값이 적합하지 않은 경우 적절한 팝업창이 화면에 출력됩니다.
  1. 회원가입 페이지
  • 핵심 기능: 회원가입 진행
  • 기능 상세 설명: 비밀번호 유효성 검사(8-20자리 이내, 대소문자 사용 등), 이메일 중복 검사 등이 실시된다.
  • 인터페이스 요구사항: 검사에 통과되지 못하면 안내 문구를 띄운다.

Directory Pattern

  • apiTest
    • apiTest.js : api를 test하기 위해 생성
  • public
  • src
    • component : 화면 UI에 필요한 아이들이 atoms(원소), molecules(분자), organisms(구조체), templates(틀) 의 형식으로 구성되어 있습니다.
      • atoms
        • Box.jsx
        • Button.jsx
        • Card.jsx
        • Carousel.jsx : 캐러셀 코드
        • CartItem.jsx : 장바구니에서 상품들을 담당하는 부분
        • Container.jsx
        • Counter.jsx : 옵션에서 +,- 담당 부분
        • GNB.jsx : Global Navigation Bar로 홈화면, 로그인, 회원가입, 로그아웃 버튼이 구현되어 있음
        • Input.jsx
        • Label.jsx
        • Loader.jsx : 화면이 로딩될때 나타나는 컴포넌트
        • OptionItem.jsx : 상품의 옵션에 대한 정보
        • OptionList.jsx : 상품의 옵션들에 대한 리스트 형식으로 존재
        • Photo.jsx
        • Skeleton.jsx : 스켈레톤
        • Title.jsx
      • molecules
        • CartList.jsx : 장바구니 화면
        • InputGroup.jsx
        • OptionColumn.jsx : 상품의 상세페이지의 좌측 부분. 상품 사진, 제품명, 리뷰 수 등이 존재
        • ProductCard.jsx : 홈화면에서 상품들의 grid의 개별 컴포넌트 부분
        • ProductInformation.jsx : 상품 상세 페이지
      • Organisms
        • LoginForm.jsx : 로그인 화면 구성
        • ProductGrid.jsx : 홈화면에서 상품이 그리드 형태로 배치되는 부분
        • RegisterForm.jsx : 회원가입 화면의 구성
      • templates
        • MainProductTemplate.jsx
        • OrderCompleteTemplate.jsx : 결제 완료 페이지
        • OrderTemplate.jsx : 주문하기 페이지
        • ProductDetailTemplate.jsx : 상품 상세 페이지
    • data
      • members.js : 고객 정보
    • hooks
    • img : 필요한 이미지 파일 존재
    • layouts
    • pages
      • CartPage.jsx : 장바구니 페이지
      • HomePage.jsx : 홈화면 페이지
      • LoginPage.jsx : 로그인 화면 구성
      • OrderCompletePage.jsx : 주문 완료 페이지 구성
      • OrderPage.jsx : 주문하기 페이지
      • ProductDetailPage.jsx : 상품 상세 페이지 (상품을 클릭했을때)
      • RegisterPage.jsx : 회원가입 페이지
    • services : api에서 해당 부분의 정보들을 받아옴
      • cart.js
      • index.js
      • order.js
      • product.js
      • user.js
    • store
    • style : components의 css들을 설정
    • Main

크램폴린 IDE를 통해 배포

  1. 크램폴린 IDE로 접속한다. (http://something.com)
  2. 컨테이너를 생성한다. ...
  3. 터미널을 열고, ./start.sh를 통해 백엔드 환경을 실행한다.
  4. 또 다른 터미널을 생성해 npm startfh 2000번대 포트에 리액트를 실행한다.

클론 코딩을 진행하면서..

처음에는 import, export도 제대로 못하는 코린이 그 자체에다가 캐러셀 하나 만드는데 몇일이 걸렸었는데 이제는 캐러셀은 10분이면 만든다 .. (와) 확실히 너무 고통스러웠던 것 만큼 얻어가는게 많았던 것 같다. 이제 완성을 해보니 어떤 부분에서 아쉬움이 남는지가 느껴지는 단계에 와서 좋았다. 앞으로 코드를 짜게 된다면 기존의 atoms, molecules가 너무 불필요하게 세분화되어있는 것 같아서 정말 재사용을 잘 할수 있는, 자주 사용되는 얘들만 atoms으로 빼놓고 나머지는 Cart-Cartlist 이런식으로 써야지 앞으로는.

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.