- Language : Kotlin
- Architecture: MVI, Clean Architecture
- Jetpack : Compose, Navigation
- Asynchronous : Coroutines, Flow
- DI : Hilt
- 상품 목록 화면을 구현한다.
- Repository, DataSource 구현 리소스를 최대한 줄이고, 컴포즈 학습에 집중하기 위한 수단으로 활용한다.
- 상품 목록 화면을 구현할 때 Lazy 컴포넌트를 활용한다.
- 컴포저블 함수가 너무 많은 일을 하지 않도록 분리하기 위해 노력해 본다.
- 의미있는 단위의 함수를 모아 별도의 파일로 분리해본다.
- 상품 상세 화면을 구현한다.
- 상품 목록에서 상품을 누르면 상품 상세 화면으로 이동한다.
- 뒤로 가기 버튼이나 아이콘을 누르면 직전 화면으로 돌아간다.
- 장바구니 화면의 빈 껍데기를 연결한다.
- 상품 목록에서 장바구니 아이콘을 누르면 장바구니 화면으로 이동한다.
- 상품 상세에서 장바구니 담기 버튼을 누르면 장바구니 화면으로 이동한다.
- 뒤로 가기 버튼이나 아이콘을 누르면 직전 화면으로 돌아간다.
- 장바구니에 실제로 상품이 담기는 기능은 이 단계에서 고려하지 않는다.
- 장바구니에 실제로 상품이 담기는 기능은 이 단계에서 고려하지 않는다.
- 컴포저블 함수가 너무 많은 일을 하지 않도록 분리하기 위해 노력해 본다.
- 의미있는 단위의 함수를 모아 별도의 파일로 분리해본다.
- 상품을 장바구니에 담는 기능을 구현한다.
- 장바구니 화면을 구현한다.
- 담긴 상품의 수량을 조절할 수 있어야 한다.
- 수량을 1보다 작게 하면 장바구니에서 상품이 제거된다
- 담긴 상품 가격의 총합이 주문하기 버튼에 표시된다.
- 상품을 주문하는 기능에 대해서는 구현하지 않아도 된다.
- 장바구니 화면에 대한 테스트 코드를 작성한다.
- 상품 목록에서 장바구니에 담을/담긴 상품의 수량을 조절할 수 있다.
- '+' 아이콘을 누르면 장바구니에 상품이 추가됨과 동시에 수량 조절 버튼이 노출된다.
- 상품 목록의 상품 수가 변화하면 장바구니에도 반영되어야 한다. (B마트 UX 참고)
- 장바구니의 상품 수가 변화하면 상품 목록에도 반영되어야 한다. (B마트 UX 참고)
- 반복되는 뷰(상품 수량 조절)를 재사용할 수 있는 방법을 고민해 본다.
- 3단계에서 작성된 장바구니 화면 테스트가 실패하면 안 된다.