🔗 Link
Source
Project : https://github.com/agfalcon/lbs_newrun
📖 상세 내용
달력 | 팔로우 | 일정초대 | 알림 | 피드 |
---|---|---|---|---|
🛠️ 사용 기술 및 라이브러리
분류 | Stack |
---|---|
App Architechture | Google Recommended app architecture |
Design Pattern | MVVM |
DI | Hilt |
UI | XML, Material3 |
Local Storage | Room, DataStore |
Network | Retrofit2, OkHttp3 |
App publishing | Firebase App distribution |
Image Loading | Glide |
Video Loading | Media3, ExoPlayer |
Service | Kakao Login api, Firebase Cloud Messaging |
navigation | jetpack navigation |
serializer/deserializer | Moshi |
Asynchronous | Coroutines, Flow |
Background | WorkManger, AlarmManager |
Notification | NotificationManager |
Media | Download Manager, MediaStore, ContentResolver, PhotoPicker |
📱 담당한 기능(기획)
- 프로젝트 주제 기획
- 개발 프로세스
- 코딩 컨벤션 규칙 정의
- 프로젝트 백로그 정의
📱 담당한 기능(Android)
- Figma를 활용하여 앱 디자인
- Custom 캘린더
- 알림 기능(일정 알림, 초대, 팔로우)
- 피드 자세히 보기 및 다운로드
- 카카오 로그인
- 일정 스토리 및 일정 멤버 관리 기능
- 일정 수정, 삭제 기능
💡 고민한 점
- 개발 기간이 짧은 반면에 구현하고 싶은 기능이 많아서 기획 상에 많은 기능을 가지고 시작. 일관된 코드를 유지하되 좀 더 빠른 개발 속도가 필요함. 팀원들과 개발 프로세스를 개선하는 노력을 하면서 모닝 리뷰, 페어 프로그래밍을 진행하면서 개발 속도를 올릴 수 있었음.
- 성과 : 안드로이드 팀 중 가장 많은 코드 작성. 백로그 닫히는 그래프가 유의미하게 상승 곡선을 보여줌.
- 소셜 기반 캘린더 앱이지만 오프라인에서 달력 기능을 제공하고 싶었음. 동기화에 대한 문제에 대해 많은 토의와 고민을 함. 다중 로그인을 지원하기 때문에 동기화가 매우 힘들었음. 일정을 보여주는 것 외에 수정, 삭제를 막고 추후에 Caldav 프로토콜 동기화 방법을 사용하기로 결정.
- 타임존이 다를 때 마다 일정이 모두 다른 시간으로 생성이 되는 문제가 있었음. 어떤 나라에서 일정을 생성하든 일관된 일정을 공유할 수 있어야 하여 앱에서 EpohMilli를 사용하여 일정을 관리하고 이를 타임존에 맞게 UI에 보여줄 수 있는 자체 Extension을 정의하여 관리.
- 오프라인에서 일정 알람을 제공할 경우 알람이 누락되는 경우가 다양하게 나타남. AlarmManager에서 2가지의 알람을 등록하여 주기적으로 알람을 동기화하여 새로 등록하는 알람과 시간에 맞게 알림을 제공하는 알람을 통해서 누락되는 알람이 없도록 구현.