협업 관리 서비스 앱
조별 프로젝트의 목표를 성공적으로 달성하기 위해 개인의 자발적 참여를 유도할 수 있는 협업 관리 서비스
- 2020. 09 ~ 2021. 06
- 플레이스토어에 출시한 후에는 유지보수를 진행하고 있습니다.
- 기획, 개발, 디자인 모두 했습니다.
- 사용 프로그램 : Android Studio, Google Firebase, Git
- 사용 언어 : Java
- minSdkVersion : 23
- targetSdkVersion : 34
- 조별 과제 및 발표를 준비하는 학생들
- 프로젝트 협업을 하는 학생들
- 각 팀원은 할 일을 등록하여 마감기한을 설정하고 제출할 수 있다.
- 팀장은 제출된 할 일을 승인/반려할 수 있다.
- 팀을 만들어서 팀원을 초대할 수 있다.
- 팀원들의 협업 참여도를 확인할 수 있다.
- Android Clean Architecture
- MVP 패턴
- ROOM
- RecyclerView
- ViewBinding
- SwipeRefreshLayout
- Cache Manager (직접 구현)
- @StringDef
- 머티리얼 디자인
- 머티리얼 프로그래스바 (me.zhanghai.android.materialprogressbar:library)
- 머리티얼 날짜시간피커 (com.wdullaer:materialdatetimepicker)
- 포토뷰 (com.github.chrisbanes:PhotoView)
- 사진 첨부 (Glide)
- 스와이프 새로고침 레이아웃 (SwipeRefreshLayout)
- 협업에 얼마나 열심히 참여했는지에 대해 데이터로 수치화하는 어려움이 있었습니다.
그래서 해야 할 일에 기한을 설정하여 기한 내에 제출하면 성실도에 반영했고,
팀장이 해야 할 일이 적절히 완료되었는지를 평가하여 승인 또는 반려하고 이를 성과도에 반영하는 것으로 데이터를 모델링했습니다. - 참여도를 평가하기 위한 데이터를 어떻게 모델링할지 고민을 많이 했습니다.
처음에는 Submission이라는 큰 단위를 Todo라는 작은 단위로 구성되도록 모델링했지만 데이터를 처리하는데 많은 어려움이 있을 것으로 생각하여, Submission을 없애고 Todo 단위로 통일했습니다. - 해야 할 일에 대한 데이터인 TodoData를 제출, 승인, 반려하는 기능을 어떻게 구현할지 고민을 많이 했는데,
TodoData마다 생성, 제출, 승인, 반려된 시점들을 담은 List 변수를 추가했고, 이것이 팀 참여도에 반영되도록 했습니다. - TodoData의 상태가 제대로 전달되지 않는 문제가 발생했는데, Enum으로는 해결되지 않았습니다.
그래서 @StringDef을 사용하여 TodoData의 상태를 전달하여 TodoList에 표시되는 버튼 이름값을 validate할 수 있었습니다.
- 데이터를 좀 더 효율적으로 관리할 수 있도록 MVP 디자인 패턴을 채택하는데 우려했던 것과 달리 패턴을 성공적으로 적용할 수 있었습니다.
객체지향적인 관점에서 앱의 구조를 파악할 수 있는 통찰력을 기를 수 있었습니다. - 클린 아키텍처를 적용하는 과정에서 시행착오가 많았고 예상보다 시간이 걸렸지만 성공적으로 구현했고, 앞으로 배우게 될 어려운 기술을 이해하고 구현할 수 있다는 자신감을 가지게 되었습니다. 또한 이번 개발을 계기로 클린 코드와 리팩토링에 관심을 가지게 되었습니다.
https://play.google.com/store/apps/details?id=com.hero.seoultechteams