from KAIST madcamp week 2
약속 시간이 언젠데… 왜 아직 안오는 거야?
친구들끼리 만나기로 한 시간에 서로가 어디인지, 오고는 있는지 확인할 수 있는 앱입니다.
MATE: Meetup and Tracking Explorer
- Meetup (만남): 이 부분은 친한 사람들과의 모임을 강조합니다. 어플리케이션을 통해 사용자들은 쉽게 서로의 위치를 확인하고 실제로 만날 수 있습니다.
- And (그리고): 여러 기능을 통합하여, 위치 정보 공유뿐만 아니라 다양한 다른 활동을 함께할 수 있는 플랫폼입니다.
- Tracking (추적): 앱은 사용자들 간에 위치 정보를 주고받을 수 있는 추적 기능을 제공합니다. 이는 친구들이 어디에 있는지 실시간으로 확인할 수 있도록 합니다.
- Explorer (탐험가): MATE는 새로운 장소를 탐험하고 새로운 사람들을 만날 수 있는 플랫폼임을 강조합니다. 함께하는 그룹과 함께 도시를 탐험하거나 새로운 장소에서 모임을 가질 수 있습니다.
- 친구들끼리 그룹을 만들고, 그룹 단위의 구성원들 위치를 확인할 수 있습니다.
- 그룹 단위로 약속을 만들 수 있습니다 → 모든 그룹 구성원들에게 적용
사용한 도구 🔨
- Android Studio, Kotlin
- Python, Fastapi
- MYSQL + sqlalchemy
- Figma (UI 디자인)
-
자체 로그인을 먼저 구현했습니다
- 자체 데이터베이스에 아이디, 비밀번호를 등록할 수 있습니다
-
SNS 로그인을 자체 로그인 로직에 연동시켰습니다.
- SNS 계정 정보를 이용해 회원으로 등록되어 있다면 로그인을 시켜주고, 아니라면 자체 회원가입으로 이동합니다.
-
회원 가입 탭에서는, 중복확인을 통해 아이디가 중복되지 않음을 인증해야만 회원 가입이 가능합니다
-
회원 가입을 진행하면, 서버 측 데이터베이스에 아이디, 비밀번호, 닉네임, 이메일 정보가 저장됩니다
-
SNS 로그인을 진행하는 경우, 아이디와 비밀번호는 임의의 값으로 설정되며, 사용자가 변경할 수 없습니다
-
홈 화면은 자신이 속한 그룹과 그룹의 약속을 보여줍니다
-
새로운 그룹을 생성하거나, 기존 그룹에 참여할 수 있습니다
- 그룹 생성은 자신이 그룹장이 되며, 아무도 속하지 않은 새로운 그룹을 만듭니다
- 그룹 참가는 그룹원으로 기존 그룹에 참여하게 됩니다
-
하단의 ‘그룹 위치 확인 >’ 버튼을 통해 지도 탭으로 이동할 수 있고, 지도 탭에서 그룹원들의 위치를 볼 수 있습니다
-
그룹의 상세 정보를 볼 수 있는 탭입니다
-
그룹 ID를 복사해 다른 사람들에게 전달하면, 해당 그룹 ID를 이용해 그룹에 참가할 수 있습니다
-
비밀번호 보기를 터치하면 그룹의 비밀번호가 짧은 시간 동안 토스트메세지로 나타납니다
- 해당 비밀번호와 그룹 태그를 이용해 그룹에 참가 가능
-
그룹의 구성 인원이 몇 명인지, 각각 누구인지 확인할 수 있습니다
-
그룹원/그룹장은 언제든 그룹을 탈퇴할 수 있습니다
- 그룹원은 그룹의 존재에는 영향을 미치지 못하고, 탈퇴만 가능합니다
- 그룹장은 그룹 삭제만 가능하며 그룹 삭제 시 모든 그룹원들에게 그룹이 삭제됩니다
-
지도 탭에서는 그룹원들의 위치 추적이 가능합니다
- 지도 탭에 들어오면, 서버와 소켓 스트림을 연결하게 됩니다
- 연결된 소켓 스트림으로 자신의 위치를 지속적으로 전달함과 동시에, 그룹원들의 위치를 전송받아 지도에 보여줍니다
- 본인은 빨간색 핀으로, 그룹원들은 파란색 핀으로 보여집니다
-
서버로 GPS 위치 정보를 전송하는 프로세스는 앱이 꺼져도 계속해서 실행됩니다
- 앱을 실행 중이 아니라면, work manager를 이용해 15분 간격으로 자신의 위치를 서버로 전송하게 됩니다
- 해당 위치 정보를 서버에 저장하고, 누군가 지도 탭으로 이동해서 요청할 시 전달해줍니다
- 사용자가 GPS 기능을 끄거나, 백그라운드 동작 허용을 하지 않은 경우 서버로 GPS 정보를 보낼 수 없고 이 경우 서버는 사용자에게 위치 정보를 보내줄 수 없습니다
-
다른 그룹원을 터치하면, 해당 그룹원의 위치로 지도가 이동합니다
- 자신의 위치로부터 얼마나 멀리 떨어져 있는지 계산해서 보여줄 수 있습니다
- 한양대학교에 있는 오소리다섯의 경우… 134.6km만큼 떨어져 있습니다
-
여러 그룹에 속해 있는 경우, 다른 그룹으로 전환할 수 있습니다
- 사진 상 나타나는 ‘김동하그룹’(자신의 그룹 이름)을 터치하면, 자신이 속해있는 그룹들을 드롭다운 형태로 볼 수 있습니다
- 전환하고 싶은 그룹을 선택하면, 지도에 있는 마커들을 모두 지우고 해당 그룹원들의 위치를 다시 그려줍니다