Skip to content

eosa1414/starting-line

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

565 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

당신을 위한 위대한 도전 - 출발선

Image

배포 링크
> https://drive.google.com/drive/folders/1yEKb8Xr3KZ6qOkDoXCN2YFPnJTvZlesq


팀 노션   |   figma   |   개발 위키

📄 목차


✍ 프로젝트 개요

기획의도

마라톤은 단순히 42.195라는 숫자가 아니라, 인간이 자신의 한계를 도전하고 극복할 수 있는 상징적인 거리입니다. 그러나 많은 마라토너들이 도전의 시작부터 복잡한 신청 양식, 개인정보 입력, 별도의 결제 방식 등 불편함에 직면하며 도전을 망설이게 됩니다. 이에, 우리는 "출발선"이라는 서비스를 통해 이러한 번거로운 과정을 혁신하고자 합니다. 사용자가 마라톤에 도전하는 그 첫 걸음, 즉 출발선에 서는 순간부터 간편하고 직관적인 경험을 제공함으로써, 위대한 도전에 온전히 몰입할 수 있게하고 함께 한계를 극복할 동료의 가치를 전달하고자 기획되었습니다.

서비스 소개

"출발선"은 간편하게 신청하고 재밌게 즐길 수 있는 나를 위한 마라톤 서비스입니다. 마라톤 등록 자동화 (Back Office): 크롤링 및 구글 Cloud Vision 기술을 활용해 다양한 대회 정보를 자동으로 등록, 대회측 사용자들의 편의성을 극대화합니다. 마라톤 간편 신청 / 간편 결제: 카카오 사용자 데이터와 원클릭 결제(카카오페이)를 통해, 복잡한 신청 과정을 단순화하여 누구나 손쉽게 도전에 참여할 수 있습니다. 카카오 친구 연동: 카카오 친구 목록을 자동으로 조회, 마라톤에 함께 참여할 동료를 손쉽게 등록하여 응원과 격려의 문화를 만듭니다. 모바일, 워치 연동 기록 조회: 최신 모바일 및 스마트워치 기술을 통해 개인의 마라톤 기록을 실시간으로 확인하고, 목표 페이스를 시각적으로 모니터링할 수 있도록 지원합니다. 실시간 팀 정보 제공: 마라톤 진행 중 팀의 위치, 인접 팀원 정보 및 랭킹을 실시간으로 전송해, 동료의 응원과 격려 속에서 한계를 극복할 수 있도록 돕습니다.

  • 개발 기간: 25.01.06~25.02.26 / 7주+1주(본선)
  • 인원: 6명
  • 서비스 개요 : 마라톤 플랫폼 어플리케이션 (모바일, 워치)

🚀 핵심 기능

마라톤 등록 자동화

대회 등록 프로세스를 자동화하여 편의성을 향상하는 기능 제공

마라톤 간편 신청 / 간편 결제

직관적인 UI를 통해 간편하게 마라톤 신청 및 결제하는 기능 제공

카카오 친구 연동

카카오 친구 목록을 자동 조회하여 마라톤에 참여한 친구를 손쉽게 등록하는 기능 제공

friend link operation of mobile and watch
mobile friend list page mobile friend link page

모바일, 워치 연동을 통한 개인 기록 조회

스마트워치를 통해 사용자가 자신의 마라톤 기록을 실시간으로 확인하는 기능 제공

모바일, 워치 연동을 통한 실시간 팀 정보 조회

마라톤이 진행중일 때 스마트워치를 통해 팀의 실시간 위치, 인접 팀원 정보, 랭킹을 제공



⚙️ 기술 스택

분류 기술 스택

백엔드

DB

모바일 & Watch

API

협업

인프라


🏛️ 시스템 아키텍처

시스템 아키텍처

🛠️ 기술적 도전

REST API, Firebase RealTime Database, Bluetooth 등 다양한 통신 프로토콜 사용으로 인한 데이터 일관성 및 관리

  • 각 프로토콜의 역할과 데이터 흐름을 명확히 문서화하여 예외 상황에 대응할 수 있도록 설계함
  • 데이터 변환 및 중앙화: 데이터 형식을 표준화(하나의 dto로 정의)하고, 변환 로직을 중앙 집중식으로 관리하여 일관성을 확보함

실시간 GPS 통신이 백그라운드에서 동작하지 않는 문제

  • MVVM(Movel-View-ViewModel) 아키텍쳐를 도입해 기존 구조에서 원할하지 않던 비동기 데이터 처리와 상태 관리를 해결하고 구조적 유연성과 유지보수성을 개선함
  • 개선된 구조를 바탕으로 백그라운드 서비스를 포어그라운드 서비스로 전환하여, 서비스가 지속적으로 실행되도록 변경

제한된 자원 환경에서의 실시간 이벤트 처리 및 통신 최적화

  • 이벤트 처리 시 DataClient를 활용하여 데이터 송수신 및 이벤트 전달을 구현함
  • 통신 흐름, 통신 주기, 연산 로직 등을 최적화하여 워치와 모바일의 부족한 자원을 효율적으로 사용함

앱의 비정상 종료에 따른 데이터 소실 및 서비스 복구 불가능 문제

  • 앱 내에 ROOM DB를 도입하여, 실시간 데이터 업데이트에 필요한 데이터를 로컬 데이터베이스에 저장하도록 구현함
  • 앱이 비정상 종료되더라도, 재실행 후 로컬에 저장된 데이터를 기반으로 안정적으로 서비스 복구가 가능하게함

🧡 팀원 소개

김용현 이재훈 김지수 박민경 백지민 이주호
BE, 팀장 BE BE, Infra FE FE FE 팀장
@y0nghyun @potential1205 @jisu-0305 @mmmmingb @eosa1414 @joeholee
Contributors Role Position
김용현 팀장,
Backend
- 유저 자동화 구현: 카카오 OAuth를 통한 유저, 친구 자동 업데이트 구현
- 결제 자동화 구현: 카카오페이 간편결제, 오픈뱅킹 자동이체를 통한 결제 자동화 구현
- 알림 시스템 구현: Firebase Cloud Messaging을 통해 신청 시 친구에게 모바일 알림
- 모바일: RoomDB 마라톤 초기 정보 저장, 페이스 세팅 구현
- Watch: 워치 팀 화면 이벤트, 진동 설계
이재훈 팀원,
Backend
- API 구현: 마라톤 자동 등록, 마라톤 조회 및 필터링, 마라톤 신청 내역 관리 구현
- 시스템 설계 : ERD 구조, 통신 흐름 및 방법 설계
- 통신 구현: : DataClient를 활용한 이벤트 기반 Bluetooth 통신 구현 (워치<->모바일), Retrofit을 활용한 REST API 통신 구현 (모바일 <-> 서버), FireBase RealTime Database를 활용한 실시간 데이터 가공 및 연산 알고리즘 구현 (평균 페이스 평가, 이동거리에 따른 랭킹 계산 등)
김지수 팀원,
Backend
- 신청 자동화 구현: Chrome Driver, Selenium을 통한 마라톤 신청 폼 자동작성 및 API 구현
- 서버 설정 진행: 클라우드 서버에 Docker out of Docker방식과 Nginx를 통한 서버 구성 진행
- 자동배포 구축: Jenkins와 GitLab Webhook을 통한 자동배포 구축
- API 구현: 모바일 <-> FireBase Realtime DataBase 통신 연결 및 누적거리, 마라톤 종료 API 구현
- 데이터 스케줄러 적용: Firebase Cloud Functions를 통한 Realtime Database 데이터 TTL구현
박민경 팀원,
Frontend
- 워치 앱 화면 개발: 마라톤 진행 시 개인 화면, 팀 화면 구현
- ViewPager2 활용한 화면 전환: 개인 화면 터치 시 내용 변환 및 슬라이드 시 팀 화면으로 전환, 이벤트 발생 시 자동 화면 전환 구현
- 모바일 화면 개발: 신청 내역 및 친구 목록, 설정 화면 구현
- 공통 컴포넌트 개발: UI 재사용성을 고려한 공통 컴포넌트 설계 및 구현
- Figma 작업 : 모바일 앱 UI/UX 디자인 일부 기여
백지민 팀원,
Frontend
- Figma 작업: 전반적인 모바일&워치 UI/UX 디자인, 서비스명 작명 및 컨셉 색상 구성, 로고 제작
- 모바일 앱 화면 개발: 메인 화면(마라톤 목록 필터링), 설정, 대회 상세, 결제 페이지(결제하기/결제 완료 및 실패), 달려보기(워치 연동 부분) 화면 구현, 전반적인 UI 여백 조정
- 공통 컴포넌트 개발: UI 재사용성을 고려한 공통 컴포넌트 설계 및 구현(바텀 시트-모바일용 모달창, top bar 및 bottom bar)
- 워치 앱 화면 개발: 다른 사람의 위치를 도로 형태로 확인 가능한 워치 화면 구현(정규화식을 이용하여 실제 거리 비율에 따라 위치 배치, 도로 애니메이션 동작)
- 카카오 로그인 구현: 카카오 API를 이용하여 간편 로그인 처리(사업자 등록 없이 친구 동의 권한을 받기 위하여 카카오 SDK로 구현 후 웹 방식으로 수정)
- APK 배포: 안드로이드 스튜디오로부터 APK 파일 추출 및 구글 드라이브로의 배포(*관련 문의: 이메일로)
이주호 팀원,
Frontend 팀장
- 프로젝트 구조 설계: 유지보수성과 확장성을 고려하여 안드로이드 및 워치 애플리케이션의 구조 설계
- 카카오페이 결제 구현 : 카카오페이 API를 활용한 결제 페이지 개발 및 결제 성공/실패/완료 처리
- 모바일-워치 간 통신: DataClient를 활용한 블루투스 기반의 이벤트 송수신 시스템 구축
- 워치 앱 화면 개발 : 마라톤 출발 및 종료 화면 개발
- 약관 모달 구현: 마라톤 신청 시 약관 동의 모달 창 개발
- 공통 컴포넌트 개발: UI 재사용성을 고려한 공통 컴포넌트 설계 및 구현
- Figma 작업 : 모바일 앱 UI/UX 디자인 일부 기여
- 영상 포트폴리오 제작: 프로젝트 홍보 및 소개 영상 기획 및 제작

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6