Code Monkey home page Code Monkey logo

sidedish-06's Introduction

sidedish-06

SIDEDISH 서비스 - 6팀

링크: http://52.79.117.147/

Members


Commits

[#이슈번호] 타입 :이모지: : 설명
ex) [#1] feat :rocket: : 기능 추가
타입 이모지 설명
feat 🚀 :rocket: 새로운 기능 추가
fix 📌 :pushpin: 버그 수정
docs 📄 :page_facing_up: 문서 수정
refactor ♻️ :recycle: 코드 리팩토링
style 🎨 :art: 코드 포맷팅 (코드 변경이 없는 경우)
test 🏁 :checkered_flag: 테스트 코드 작성
chore :sparkles: 소스 코드를 건들지 않는 작업(빌드 업무 수정)

Branches

  • iOS/dev
  • fe/dev
  • be/dev

Issues

[클래스명] 이슈 제목
ex) [BE] 카드 추가 (라벨 BE, 프로젝트 추가)

Wiki Contents

sidedish-06's People

Contributors

delmasong avatar sungik-choi avatar kses1010 avatar godrm avatar

Watchers

James Cloos avatar crong avatar Hoyoung Jung avatar

sidedish-06's Issues

[iOS] 서버 통신 기능

  • 서버의 JSON 데이터 담을 모델 객체 생성
  • Network Manager 생성
  • Decode Manager 생성
  • Use Case?

[BE] 상품 정보 확인

  • Local에서 DB 연결 확인
  • 스켈레톤 코드 작성
  • 컨트롤러 구현
  • JdbcTemplate 구현
  • DB 작동 확인
  • API 요청하여 JSON 가져오기

[FE] 상세 페이지 CSS-IN-JS 스타일링

  • 메인화면에 노출된 각 반찬을 클릭하면, 상세페이지가 화면 가운데 노출된다.
  • 상세페이지는 별도의 페이지가 아닌, 현재 페이지에서 추가레이어 노출된다.
  • 상세페이지의 모든 내용은 데이터요청을 통해서 노출해야 한다.

[iOS] 메뉴 상세 화면 기능

  • 상세 화면에 대한 요청은 상품을 골라서 화면이 표시하기 직전에 요청해야 한다.
  • 상세페이지의 내용은 메인 페이지에서 선택한 상품에 대해 서버에서 상세 데이터를 받아와 표시한다.
  • 메뉴 리스트 Table View의 Cell을 선택하면 다음 화면으로 전환하도록 구현한다.
  • 화면 전환은 내비게이션 방식을 사용한다.
  • 필요하다면 메인 뷰 컨트롤러와 상세 화면의 컨트롤러(DetailViewController) 사이에 Delegate 프로토콜을 구현한다.
  • 상세 화면에서 결과를 전달하기 위한 Delegate 프로토콜을 정의한다
  • 프로토콜에는 주문을 완료했을 때 호출할 메소드를 정의한다
  • ViewController에는 프로토콜을 채택하고 필요 메서드를 구현한다
  • 메인 뷰 컨트롤러에서 상세 화면의 컨트롤러(DetailViewController)에 필요한 모델 데이터를 전달한다.
  • 상세 화면을 표시하기 전에 네트워크 담당 모델 객체에서 데이터를 받아서 화면 정보를 채워서 표시한다
  • self.view 커스텀 클래스를 UIScrollView로 지정하고 하위 뷰들은 self.view.contentView 에 추가한다
  • ScrollView ContentSize에 대해 찾아보고, 전체 콘텐츠 높이를 계산해서 스크롤되도록 값을 지정한다
  • 상세화면 상단 ScrollView에 이미지들을 Page 형태로 추가하세요. 좌우로 페이지 넘기듯이 넘어가도록 만든다
  • 상단 ScrollView 아래에는 상품의 상세 설명을 표기한다
  • 오토레이아웃을 활용하여 모든 기기에서 정상적으로 표기될 수 있도록 한다
  • 상품설명 아래부분에는 제품 상세 설명을 위한 이미지들을 세로로 이어서 붙인다
  • [주문하기] 버튼을 누르면 주문을 서버에 요청하며, 주문이 완료되었다는 응답을 받으면 이전 화면으로 돌아간다
  • 토스트 기능 (터치 섹션 제목, 상품 갯수 출력)

[FE] 메인 페이지 슬라이딩 기능 구현

  • 좌/우버튼을 누르면 애니메이션이 되면서 좌/우로 화면이 이동되며 새로운 메뉴 4개가 노출된다. 메뉴 갯수가 4의 배수로 떨어지지 않을때는 4칸씩 이동하는 방식에서 예를들어 1칸씩 이동으로 동작될 수 있어야 한다.

[BE] 프로젝트 빌드

패키지 설정

  • config
  • controller
  • dao
  • domain
    • dto
    • entity
  • service
  • utils

MySQL 프로퍼티 설정

[iOS] feedback 반영사항

  • 별도의 BadgeLabel 만들어 라벨 추가 등의 일 하도록 만들기
  • 별도의 PriceLabel 만들어 가격 값 보여지도록 만들기

[iOS] 상품 정보 셀 화면

  • 타이틀 제목
  • 상세 설명
  • 메뉴 가격
  • 가격정보는 할인전 가격이 있으면 함께 표시해야 한다.
  • 할인이 아닐 경우, 정상 가격만 표시한다.
  • 이벤트 배지
  • 여러 종류의 이벤트 배지가 존재할 수 있다.
  • 클라이언트에는 이벤트 종류를 구분하지 않는다.
  • 메뉴 이미지
  • URL에 있는 이미지를 표시한다.

[BE] API 수정

오타가 났을 경우 요청이 URL리스트를 요청한 것인지 메뉴 목록을 요청한 것인지 모르기 때문에, 이를 구분하기 위해 메뉴 앞에 /menu를 붙이고 이에 따라 변경

  • 오타가 났을 경우 예외처리
  • URL 수정

[iOS] 이미지 다운로드 기능

  • 3개의 JSON 데이터를 모두 받고 나면 JSON 데이터에 포함된 이미지 URL을 분리해서 Image 파일들을 다운로드 받는다.
  • 이미지 파일들을 병렬처리해서 한꺼번에 여러개를 다운로드하도록 구성한다.
    (선택1) GCD Queue 활용
    (선택2)Download Task 활용
    (선택3) Operation Queue 활용
  • 다운로드가 완료되면 Application Support 디렉토리 중에 Cache 디렉토리에 URL에 있는 파일명으로 저장한다.
  • 셀을 표기할 때 이미 다운로드된 이미지가 있으면 표시하고, 새로운 파일이 다운로드 완료되면 해당 이미지를 테이블뷰 셀에 뒤늦게(lazy) 표시한다.
  • 화면에 표시할 때 다운로드를 담당하는 스레드와 화면을 처리하는 스레드를 위한 GCD Queue(혹은 Operation Queue)를 구분해서 처리한다.
  • 이미지를 다 받을때까지 화면이 하얗게 멈춰있지 않도록 만든다.

[FE] (선택) 베스트 반찬 노출 TAB UI 개발

  • 베스트반찬은 TAB UI로 만든다.
  • 처음에는 랜덤하게 특정메뉴가 선택되어져서 보여진다.
  • 모든 화면에 필요한 데이터는, 로딩 이후에 Ajax를 통해서 가져와서 노출한다.

[FE] 컴포넌트 계층 구조 나누기

  • 메인 페이지, 상세 페이지의 요소들을 컴포넌트 계층 구조로 나누기

컴포넌트 계층 구조

- App

  - Header
    - LocalNavBar
    - Logo
    - SearchBar
    - MenuBar
      - Category
      - SubList
      - Item

  - ProductList
    - Title
    - Slider
      - NavButton
      - Product
        - Image
        - Title
        - Price
        - Badge

  - ProductDetail
    - Images
      - TopImage
      - ThumbImage
    - Info
      - Title
      - Description
      - Price
    - Selector
    - TotalPrice
    - CartButton

  - MoreButton

[iOS] section 화면 구성 및 기능 구현

  • 반찬의 종류에 따라 섹션을 구분한다
  • main, soup, side
  • 스토리보드 ViewController에 Cell에 Section Header로 사용할 Custom Cell을 추가한다.
  • 헤더 내부의 요소는 오토레이아웃을 적용하여 모든 기기와 상황에 대응할 수 있도록 한다.
  • 총 섹션은 3개로 구분해서 헤더에 다음과 같이 표시한다.
  • main => 메인반찬 / 한그릇 뚝딱 메인 요리
  • soup => 국.찌개 / 김이 모락모락 국.찌개
  • side => 밑반찬 / 언제 먹어도 든든한 밑반찬
  • pod으로 설치한 Toaster 모듈을 import 하고 섹션 제목 영역을 터치하면 섹션 제목과 함께 상품 개수를 toast 형태로 표시한다.

[iOS] 로그인 기능

  • 'github으로 로그인하기' 버튼 선택시 github 로그인 창 띄우기
  • 로그인 결과에 맞게 분기처리

프로젝트리뷰

커밋에 이모지!! ㅋㅋ 좋습니다. 🚀

메인에 wiki contents 링크가 깨졌네요.

이슈정리한거 보면 형식적인것보다, 개발할때 참고할만한 내용으로 구성하는게 좋죠.그래야 의미도 있게 계속 할 수 있게 될 겁니다. 이런 케이스는 좋네요.
#7

업데이트 하는거 어렵죠. 아침에한번, 저녁에 한번 ~!
In Progress 가 비어 있길래 https://github.com/codesquad-member-2020/sidedish-06/projects/2

스크럼에서 서로의 컨디션을 나눠주는게 좋아보여요. 기계처럼 일하기 보다 서로의 상태를 보고 조절할 하면 좋겠어요.기능을 다 빨리마무리 하는것만이 목표가 아닙니다.

Sunny 내일 생일축하드려요.

[iOS] 메인 메뉴 기능

  • 메인 화면의 Table View Cell을 Content View를 기준으로 하위 뷰들에 오토레이아웃을 적용한다.
  • 다양한 기기 종류에 대응할 수 있으며, 기기를 가로로 눕혔을 때도 문제 없도록 제약을 설정한다.
  • 설명 레이블은 텍스트가 길어지면 wrap(끝에 ...을 붙여 표현)한다.
  • 이벤트가 없을 경우, 이벤트는 표시하지 않는다.
  • 모델 객체는 응답이 도착하면 섹션별로 데이터를 갱신하고 각각 Notification을 보내서 테이블뷰의 해당 섹션만 업데이트한다.
  • 모든 데이터를 한 꺼번에 받는 게 아니라, 각각 요청하고 구분해서 응답을 받도록 구현한다.

[iOS] 메뉴 상세 화면

  • 이전 화면으로 되돌아 갈 수 있다.
  • 화면 상단에는 스크롤뷰를 사용하여,
  • 미리보기 이미지들을 Page 방식으로 표시한다.
  • 좌우로 스크롤하면 상단 이미지를 변경할 수 있다.
  • 제품 정보 아래에는 제품 설명 이미지를 세로로 이어서 붙인다.
  • 위아래로 스크롤하면 설명 이미지를 확인할 수 있다.
  • 주문하기 버튼을 누르면 해당 상품에 대한 주문을 요청하고, 주문이 성공하면 이전 화면으로 되돌아 간다.
  • 재고가 부족하거나 주문이 불가능한 상품인 경우는 에러 코드에 맞는 안내 화면을 표시해야 한다.

[iOS] 메인 메뉴 화면

  • 전체 화면 구성은 테이블뷰 형태로 보인다.
  • 최상단 내비게이션바는 표시하지 않는다.메인화면은 3가지로 섹션으로 구성. (섹션 표시 순서는 항상 동일해야 한다.)
  • 든든한 반찬 (main)
  • 국.찌개 (soup)
  • 밑반찬 (side)
  • 각 섹션은 해당 섹션 전용 제목을 표시한다. 섹션 헤더를 터치하면 섹션에 포함된 상품 개수를 표시한다.
  • 제품 정보는 타이틀 제목, 상세 설명, 메뉴 가격, 이벤트 배지, 메뉴 이미지 등을 포함한다. (3페이지 참조)
  • 이벤트 배지는 항목이 고정되지 않는다.
  • 리스트의 항목을 선택하면 제품 상세 화면으로 이동한다.(4페이지 참조)이동 방식은 내비게이션 방식이다.

[FE] 메뉴 레이어 CSS-IN-JS 스타일링

  • 메뉴(밑반찬,국찌개..)에 마우스를 올리면 레이어가 노출된다.
  • 각 메뉴의 하위 텍스트(이유식 초기/중기)에 마우스를 올리면 해당 텍스트 색깔이 변경되고 밑줄이 생긴다.
  • 마우스가 메뉴 영역을 벗어나면 노출된 레이어가 사라진다.

[FE] 슬라이더 CSS-IN-JS 스타일링

  • 동그란 메뉴에(1번) 마우스를 올리면 새벽배송/전국택배라는 글자를 노출한다. 동시에 배경에 있는 이미지는 검은색으로 처리되어 글자가 더 잘 보이도록 한다.
  • 가격정보는 할인전 가격이 있으면 함께 표시해야 한다. 할인이 아닐 경우, 정상 가격만 표시한다.
  • 이벤트 배지가 있는 경우 이를 노출한다.

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.