GithubHelp home page GithubHelp logo

mtjin / nomoneytrip Goto Github PK

View Code? Open in Web Editor NEW
32.0 1.0 5.0 222.14 MB

[SKT/한국관광공사] 2020 스마트 관광 앱 개발 공모전 '무전여행' 앱

License: MIT License

Kotlin 100.00%
android kotlin mvvm-architecture jetpack-navigation koin-android databinding-android rxkotlin-android firebase mvvm retrofit2

nomoneytrip's Introduction

[다른 프로젝트 더보기]

https://www.notion.so/d9b3f4c2bfc74876855621ab81e735f8

1) URL

깃허브 : https://github.com/mtjin/NoMoneyTrip

스토어 : https://play.google.com/store/apps/details?id=com.mtjin.nomoneytrip

메인 시연영상1(전체적으로) : https://youtu.be/Ty2MfKSNdso

시연영상1(첫 회원가입 부분만) : https://youtu.be/f2-8GOL8esE

화면전환 애니메이션 전체 적용 업데이트 : https://www.youtube.com/watch?v=snzmKRwiOVM

카카오링크 업데이트 : https://www.youtube.com/watch?v=LT_FtLcXJPM

2) 설명

안드로이드 MVVM 아키텍처 구조

로딩이 오래걸릴 수 있는 홈화면 및 로그인 화면 등에서 Repository 를 local과 remote로 나누고 로컬캐싱을 적용하여 데이터 불러오는 속도를 높였습니다. 서버와만 통신하는 부분은 시간 및 효율성 문제로 local remote를 나누지 않고 Repository 에서 처리하였습니다.

https://user-images.githubusercontent.com/37071007/107048812-b295f380-680c-11eb-8b14-4879abd617b8.png

파이어베이스 RTDB 데이터베이스 구조 설계

https://user-images.githubusercontent.com/37071007/95646136-63f77780-0b00-11eb-87dc-6b0207303803.png

Jetpack Navigation 설계

효율성 면에서 처음 로그인부분만 액티비티로 구성하고 나머지 메인액티비티에서는 Jeptack Navigation을 사용과 함께 모두 프래그먼트로 구성함으로써 싱글 액티비티 아키텍처로 구성했습니다.

https://user-images.githubusercontent.com/37071007/99547497-eece6a80-29fa-11eb-88d6-b128a51beee9.png

Commit Message Convention & Git Branch

컨벤션 : [행동] 내용(한글) , 출처 : https://blog.ull.im/engineering/2019/03/10/logs-on-git.html

FIX -> 가장 자주 사용되는 커밋 로그 중 하나로 ‘Fix’가 있습니다. 보통 올바르지 않은 동작을 고친 경우에 사용합니다.

ADD -> 코드나 테스트, 예제, 문서 등의 추가가 있을 때 사용합니다

REMOVE -> 코드의 삭제가 있을 때 사용합니다. ‘Clean’이나 ‘Eliminate’를 사용하기도 합니다. 보통 A 앞에 ‘unnecessary’, ‘useless’, ‘unneeded’, ‘unused’, ‘duplicated’가 붙는 경우가 많습니다.

IMPROVE -> 향상이 있을 때 사용합니다. 호환성, 테스트 커버리지, 성능, 검증 기능, 접근성 등 다양한 것들이 목적이 될 수 있습니다.

IMPLEMENT -> 구현체를 완성시켰을 때 사용합니다.

REVISE -> 문서의 개정이 있을 때 주로 사용합니다.

MOVE -> 코드의 이동이 있을 때 사용합니다.

RENAME -> 이름 변경이 있을 때 사용합니다.

Git Branch → Master ↔ Develop ↔ Feature/Issue

사진


https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%84.jpg?raw=true

https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%842.jpg?raw=true

https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%843.jpg?raw=true

https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%844.jpg?raw=true

https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%845.jpg?raw=true

https://github.com/mtjin/NoMoneyTrip/raw/master/playstore_file/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%8A%A4%ED%86%A0%EC%96%B4%EC%82%AC%EC%A7%846.jpg?raw=true

  • SKT 와 한국관광공사에서 주관하는 스마트관광 앱 공모전 개발 (팀원: 서버 2명 기획자 1명 디자인 1명)
  • 농촌에 일손을 제공하는 대신에 봉사시간과 숙식을 제공받는 앱
  • 데이터베이스 설계 및 테스트 수행
  • Jetpack Navigation 적용하여 로그인 이후 메인부분 싱글액티비티 구조로 구현
  • Jetpack Navigation 효율적인 화면구성 및 프래그먼트 백스택관리, Animation Transition 적용으로 화면이동 생동감 증대 (애니메이션은 유튜브 영상 이후에 업데이트)
  • 필수 기능으로 Tmap API 와 한국관광 공사 API 사용
  • 유저 로그인과 이장님 로그인(관리자 페이지) 존재
  • 카카오로그인 및 전화번호 인증 구현
  • 여행 전날 13시 여행 준비 노티피케이션, 여행 종료날 18시 리뷰 요청 노티피케이션 구현과 고객 예약, 여행 수락/거절 등 FCM 구현
  • 노티피케이션(알림) 구현
  • 로컬캐싱 구현
  • 디자이너와 협업하여 다양한 UI/UX 구현
  • 리사이클러뷰 페이징처리
  • Room Database TypeConverter 적용 (정리 : https://youngest-programming.tistory.com/456)
  • Unit Test (Espresso, Junit4, Mockito) 테스트
  • 팀내부 및 SK QA팀 QA TEST 통과, Crashlytics, Performance, TestLab, Analytics 분석 도구 적용

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c13bd05f-1faa-4d12-acb2-d3c3c33026c4/.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/417e1b2b-bb7e-4ae0-b305-154260a8a248/.pdf

3) 기술 스택

Android(Kotlin), Jetpack Navigation, MVVM, Room, AAC ViewModel, DataBinding, LiveData, Koin, RxJava2, RxKotlin, RxAndroid, Retrofit2, Firebase(RTDB , Storage, FCM, Auth, Crashlytics, Analytics), AlarmManager, WorkManager, ViewPager2, CoordinatorLayout, Material Design, Lottie, Kakao Login API, Kakao Link, Tmap API, Tour API, Linkfy, Glide, Unit Test(Espresso, Mockito, Junit 4) 등

4) 성과

디자이너와 제플린을 통한 협업과 ViewPager2, CoordinatorLayout 등 ****다양한 UI/UX 구현 경험

아키텍처 설계, 개발, 테스트 일련의 과정 경험

Android 아키텍처 컴포넌트 힉습 및 적용

공모전 장려상 수상 (https://www.notion.so/86301ccf746e48afb35debbd15f30818)

nomoneytrip's People

Contributors

mtjin avatar treemiddle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nomoneytrip's Issues

캐싱 + Room 추가 구현

공모전 시간 관계상 Room을 사용하지 않고 서버 Remote API 에서만 불러왔는데 리펙토링하며 추가로 구현해보자

예약하기 버튼 클릭 시 에러 발생

애러 : org.threeten.bp.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0

에러 관련 코드
private fun initCalendar() { viewModel.isDateSelected = false viewModel.setAllSelected() viewModel.initDateRange() binding.cvCalendar.state().edit() .setCalendarDisplayMode(CalendarMode.MONTHS) .setMinimumDate( CalendarDay.from( getNextDayCurrentYear(), getNextDayCurrentMonth(), getNextDayCurrentDay() ) ).commit()

// 다음날의 현재 Month fun getNextDayCurrentMonth(): Int { val c = Calendar.getInstance() c.add(Calendar.DATE, 1) return if (c.get(Calendar.MONTH) == 11) { 0 } else { (c.get(Calendar.MONTH) + 1) } }

달(Month) 기준이 1-12 인데 다음날의 month를 구하는 식에서 12월 달인 경우 Calendar.Month가 11이고 12를 반환해야하는데 0을 반환해서 에러남

LocalPageFragment 댓글 리스트 부분 오류

LocalPageFragment(지역 페이지) 백스택에서 다시 돌아온 경우 페이징처리로 되있는 댓글 리사이클러뷰 리스트 쪽 마지막 페이지로 되는 오류 수정 필요

카카오톡 로그인 할 시 에러

오랜만에 앱을 실행시켜봤는데 카카오톡 로그인 시 에러가 났다.
최근에 인증키 날린적이 있어서 그것 때문인지 알았는데 카카오톡 프로필 사진 때문이었다.
예전엔 카카오 프로필 사진이 있었는데 현재는 없어서 사진 url 관련 NPE 까 뜬다. 고쳐야함

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.