wanted-9team / task2

원티드 프리온보딩 6차 / 2차과제
1 stars 1 forks source link

원티드 프리온보딩 6차 2차 과제

9팀 소개

[팀장] 김다윤 김채정 박재현 성혜린 오영재 전에스더 정덕우

과제 설명

원티드 프리온보딩 프론트엔드 기업협업과제

👉 선발 과제 관련 링크

데모

Sep-05-2022 11-18-33

Sep-05-2022 11-18-46

Sep-05-2022 11-18-51

//App.jsx
<Route path="/" element={<FruitStore />} />
...
<Route path="/*" element={<NotFound />} />

디자인

https://www.figma.com/file/Ii7SDsQVqLcTFHELEzRhFg/%ED%94%84%EB%A3%A8%EB%96%BC-%EB%A6%AC%EB%89%B4%EC%96%BC?node-id=0%3A1

실행 방법

$ git clone https://github.com/wanted-9team/task2
$ cd task2
$ npm install
$ npm start

라우팅

과제 달성 사항 및 해결 방법

:: 1. 사용자 기능

Assignment1

Assignment2

Assignment3

Assignment4


:: 2. 관리자 기능

Assignment1

Assignment2

레포지토리 구조

기술 스택

더미 데이터 목업 `src/mocks/data.js` ``` [ { id: name: imageUrls: [ ] quantity : ? price: status:[sale,soldout, best] sale : 10 select : [{option:1kg, price:10000},{option:2kg, price:18000}] description : "" origin: "" shipping:{option: "", price: 0, info: ""} visible:true } ] ```


API 명세 `src/mocks/handler.js` ### 1. 상품조회 - url : `/productlist` - method : `GET` - parameter : `page=number` #### 응답예시 ``` data: list: (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] totalPage: 4 totalResults: 32 ``` ### 2. 상품등록 - url : `/createproduct` - method : `POST` - body : - **id**: number **name**: string **imageUrl**: string[] **quantity**: number **price**: number **status**: string[] **sale**: number **select**: [ {option: string, price: number} ] **description**: string[] **origin**: string **shipping**: {option: string, price: number, info: string} **visible**: boolean #### 응답예시 ``` // status: 400 data: {message: 'required data is not present'} // status: 200 data: {message: '등록되었습니다.'} ``` ### 3. 상품 삭제 - method : `DELETE` - url : `/deleteproduct` - parameter : `id=number` #### 응답예시 ``` status: 204 statusText: "No Content" ``` ### 4. 주문내역 - url : `/orderlist` - method : `GET` #### 응답예시 ``` data: { email: '', userName: '', productName: '', deliveryMemo: '', price: '', phone: '', select: '', totalPrice: '', boughtNumber: 1, orderNumber: '', imageUrl: '', shipping: { option: '', price: 0, info: '', }, origin: '', id: 0, sale: 0, address: '', detailAddress: '', fullAddress: '', } ``` ### 5. 주문등록 - url : `/createorde` - method : `POST` - body : - { email: '', userName: '', productName: '', deliveryMemo: '', price: '', phone: '', select: '', totalPrice: '', boughtNumber: 1, orderNumber: '', imageUrl: '', shipping: { option: '', price: 0, info: '', }, origin: '', id: 0, sale: 0, address: '', detailAddress: '', fullAddress: '', } #### 응답예시 ``` // status: 400 data: {message: 'No-Data'} // status: 200 data: {message: '등록되었습니다.'} ```


폴더 구조 ``` │ App.jsx │ index.jsx │ ├─api │ └─index.js │ ├─components │ ├─Admin │ │ ├─AdminRegister │ │ │ ├─AdminImageUpload │ │ │ ├─AdminInput │ │ │ └─AdminOption │ │ ├─AdminShop │ │ └─AdminShopItem │ │ │ ├─common │ │ ├─Carosuel │ │ ├─Footer │ │ ├─Headers | | ├─NotFound │ │ ├─Pagination │ │ └─Status │ │ │ ├─FruitStore │ │ ├─FruitStoreItem │ │ └─FruitStoreList │ │ │ └─ShopPayment │ ├─DaumPostCode │ ├─OrderSummary │ └─ShopPaymentInfo ├─mocks │ ├─pages │ ├─Admin │ ├─FruitStore │ ├─FruitStoreDetail │ ├─ShopList │ └─ShopPayment │ ├─store │ ├─styles │ └─utils ├─getOrderNumber ├─getPrice └─useProductApi ```