Skip to content

tnvnfdla1214/DelevryProject

Repository files navigation

배달의 민족 프로젝트

본 프로젝트는 배달의 민족을 모티브로 제작된 위치기반 음식 주문 어플리케이션입니다. 제작의도로는 아키텍처와 디자인패턴, Jetpack를 경험하고 학습하기 위해 진행하였습니다. 프로젝트를 들어가기 전 다양한 프로젝트를 해보면서 아키텍처와 디자인 패턴에 대한 부재로 인한 문제점을 이해하게 되었고 아키텍처와 디자인 패턴을 설계 및 학습하기 위해 작은 프로젝트를 진행했습니다. 배달의 민족 어플리케이션의을 참고하여 UI에 신경을 썼으며 이전에 SK-API의 정보를 사용하여 인근 가게의 정보를 받아옵니다. 또한 이전 사용해보았던 Koin대신 Google에서 권장하는 Hilt를 적용하여 개발했습니다

🔧 기능설명

  • Firebase를 활용한 소셜 로그인 인증 코튼 관리 및 내 정보 화면 구현
  • 커스텀 뷰와 ViewPager2를 사용하여 움직이는 메인 화면 구현
  • SK-API를 연동하여 음식점 목록화면, 상세화면 구현
  • 찜 가게, 장바구니에 담은 정보를 Firestore에 저장 및 관리
  • 찜 한 가게 화면, 주문내역 화면 구현
  • 공유하기 기능
  • Android Architecture Guide 설계
  • Hilt 사용
  • Coroutine 사용
  • MVVM Patten, State Patten 설계

📜 깨달은 점

  • Google Android Architecture Guide에 맞춰 개발하면서 아키텍처에 대해 이해하게 되었습니다.
  • 커스텀 뷰와 ViewPager2를 사용하여 움직이는 UI를 만들어보면서 이전 사용해봤던 커스텀 뷰에서 보다 자유로운 안드로이드 UI를 학습할 수 있었습니다.
  • 디자인 패턴에 대한 이해도가 높아졌습니다.
  • 이전 사용하였던 Koin대신 Hilt를 적용하여 개발하여 DI에 대한 이해도가 더욱 높아졌습니다.

🍭 완성 화면

메인 화면

움직이는 짤2

네비게이션 화면

내 위치 화면

음식점 화면

기술 Stack

Android Architecture Guide와 MVVM, Jetpack

저는 아키텍처와 디자인패턴을 위해 많은 검색과 자료를 찾아보았습니다. 그 중에서. '드로이드 나이츠'에서 MVVM 강의를 하였던 "Grap"의 정승욱 개발자님의 강의를 보고 의문점을 자문을 이메일로 보냈고 회신의 내용의 가장 중점적인 내용은 "구글 아키텍처와 MVVM은 다르다"와 "현재로서는 MVVM를 토대로 개발한 프로젝트 공유는 할 수 없다"였습니다. 결국 예시 없이는 확실한 MVVM 체계를 개발할 수 없었고 MVVM을 고집할수록 구글 아키텍처와 멀어진다고 판단하였으므로 확실하게 나와있는 Google Android Architecture Guide기본으로 잡고 MVVM이 추구하는 방향성을 최대한 맞추려고 노력하였습니다. 아래는 제가 설계한 프로젝트 도면입니다.

그 중 UI 레이어에 State Patten을 적용시켜 비즈니스 로직을 용이하게 하려 노력하였습니다.

DI

왼쪽은 Koin을 사용했던 appModule입니다. compile 단계에서 확인해 볼 수 있고 구글에서 추천하는 Hilt로 변경하였습니다. 오른쪽은 Hilt로 변경한 이번 프로젝트입니다.

Coroutine을 사용한 비동기화

본 프로젝트에서는 네트워크 작업에 관련된 작업(Firebase 데이터 작업, API 자료 불러오기)등에서 사용되었습니다. 대표적인 Rxjava와 Coroutine중 Coroutine을 결정하게 된 이유는 학습 곡선이 완만하기에 선택하였습니다.

추후 리펙토리 할 것

  1. LiveData -> Livestate 로 변경
  • LiveData가 여러개로 나뉘어 있는데 좀더 합치기
  1. 리뷰 액티비티 만들기
  2. 디자인 좀더 신경 쓰기

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages