/MATE---from-madcamp-week-2

from KAIST madcamp week 2

Primary LanguageKotlin

MATE---from-madcamp-week-2

from KAIST madcamp week 2

thumbnail

앱 소개

약속 시간이 언젠데… 왜 아직 안오는 거야?

친구들끼리 만나기로 한 시간에 서로가 어디인지, 오고는 있는지 확인할 수 있는 앱입니다.

MATE: Meetup and Tracking Explorer

  1. Meetup (만남): 이 부분은 친한 사람들과의 모임을 강조합니다. 어플리케이션을 통해 사용자들은 쉽게 서로의 위치를 확인하고 실제로 만날 수 있습니다.
  2. And (그리고): 여러 기능을 통합하여, 위치 정보 공유뿐만 아니라 다양한 다른 활동을 함께할 수 있는 플랫폼입니다.
  3. Tracking (추적): 앱은 사용자들 간에 위치 정보를 주고받을 수 있는 추적 기능을 제공합니다. 이는 친구들이 어디에 있는지 실시간으로 확인할 수 있도록 합니다.
  4. Explorer (탐험가): MATE는 새로운 장소를 탐험하고 새로운 사람들을 만날 수 있는 플랫폼임을 강조합니다. 함께하는 그룹과 함께 도시를 탐험하거나 새로운 장소에서 모임을 가질 수 있습니다.
  • 친구들끼리 그룹을 만들고, 그룹 단위의 구성원들 위치를 확인할 수 있습니다.
  • 그룹 단위로 약속을 만들 수 있습니다 → 모든 그룹 구성원들에게 적용

사용한 도구 🔨

  • Android Studio, Kotlin
  • Python, Fastapi
  • MYSQL + sqlalchemy
  • Figma (UI 디자인)

탭, 기능 소개

로그인 화면

Untitled (2)

  • 자체 로그인을 먼저 구현했습니다

    • 자체 데이터베이스에 아이디, 비밀번호를 등록할 수 있습니다
  • SNS 로그인을 자체 로그인 로직에 연동시켰습니다.

    • SNS 계정 정보를 이용해 회원으로 등록되어 있다면 로그인을 시켜주고, 아니라면 자체 회원가입으로 이동합니다.

회원가입

Untitled (3)

  • 회원 가입 탭에서는, 중복확인을 통해 아이디가 중복되지 않음을 인증해야만 회원 가입이 가능합니다

  • 회원 가입을 진행하면, 서버 측 데이터베이스에 아이디, 비밀번호, 닉네임, 이메일 정보가 저장됩니다

  • SNS 로그인을 진행하는 경우, 아이디와 비밀번호는 임의의 값으로 설정되며, 사용자가 변경할 수 없습니다

홈 화면 : 그룹 정보와 약속 정보 표현

Untitled (4)

  • 홈 화면은 자신이 속한 그룹과 그룹의 약속을 보여줍니다

  • 새로운 그룹을 생성하거나, 기존 그룹에 참여할 수 있습니다

    • 그룹 생성은 자신이 그룹장이 되며, 아무도 속하지 않은 새로운 그룹을 만듭니다
    • 그룹 참가는 그룹원으로 기존 그룹에 참여하게 됩니다
  • 하단의 ‘그룹 위치 확인 >’ 버튼을 통해 지도 탭으로 이동할 수 있고, 지도 탭에서 그룹원들의 위치를 볼 수 있습니다

그룹 상세 정보

Untitled (7)

  • 그룹의 상세 정보를 볼 수 있는 탭입니다

  • 그룹 ID를 복사해 다른 사람들에게 전달하면, 해당 그룹 ID를 이용해 그룹에 참가할 수 있습니다

  • 비밀번호 보기를 터치하면 그룹의 비밀번호가 짧은 시간 동안 토스트메세지로 나타납니다

    • 해당 비밀번호와 그룹 태그를 이용해 그룹에 참가 가능
  • 그룹의 구성 인원이 몇 명인지, 각각 누구인지 확인할 수 있습니다

  • 그룹원/그룹장은 언제든 그룹을 탈퇴할 수 있습니다

    • 그룹원은 그룹의 존재에는 영향을 미치지 못하고, 탈퇴만 가능합니다
    • 그룹장은 그룹 삭제만 가능하며 그룹 삭제 시 모든 그룹원들에게 그룹이 삭제됩니다

지도 : 위치 추적

Untitled (8)

  • 지도 탭에서는 그룹원들의 위치 추적이 가능합니다

    • 지도 탭에 들어오면, 서버와 소켓 스트림을 연결하게 됩니다
    • 연결된 소켓 스트림으로 자신의 위치를 지속적으로 전달함과 동시에, 그룹원들의 위치를 전송받아 지도에 보여줍니다
    • 본인은 빨간색 핀으로, 그룹원들은 파란색 핀으로 보여집니다
  • 서버로 GPS 위치 정보를 전송하는 프로세스는 앱이 꺼져도 계속해서 실행됩니다

    • 앱을 실행 중이 아니라면, work manager를 이용해 15분 간격으로 자신의 위치를 서버로 전송하게 됩니다
    • 해당 위치 정보를 서버에 저장하고, 누군가 지도 탭으로 이동해서 요청할 시 전달해줍니다
    • 사용자가 GPS 기능을 끄거나, 백그라운드 동작 허용을 하지 않은 경우 서버로 GPS 정보를 보낼 수 없고 이 경우 서버는 사용자에게 위치 정보를 보내줄 수 없습니다

Untitled (9)

  • 다른 그룹원을 터치하면, 해당 그룹원의 위치로 지도가 이동합니다

    • 자신의 위치로부터 얼마나 멀리 떨어져 있는지 계산해서 보여줄 수 있습니다
    • 한양대학교에 있는 오소리다섯의 경우… 134.6km만큼 떨어져 있습니다
  • 여러 그룹에 속해 있는 경우, 다른 그룹으로 전환할 수 있습니다

    • 사진 상 나타나는 ‘김동하그룹’(자신의 그룹 이름)을 터치하면, 자신이 속해있는 그룹들을 드롭다운 형태로 볼 수 있습니다
    • 전환하고 싶은 그룹을 선택하면, 지도에 있는 마커들을 모두 지우고 해당 그룹원들의 위치를 다시 그려줍니다