테니스 매칭 시스템 구현기 (1) – 모바일 프론트엔드

지난 글에서 사용자 프로필을 입력받아 유저를 준비시켰다. 이제 이 사람들이 실제로 만나서 테니스를 칠 수 있게 ‘매칭(Match)’ 시스템을 만들어야 한다. Tennis GG 서비스의 핵심 기능이자, 가장 복잡한 비즈니스 로직이 들어가는 부분이다. 내용이 길어서  (1) 모바일 프론트엔드와 (2) 백엔드 편으로 나누어 정리한다. 오늘은 Flutter로 구현한 화면과 상태 관리 이야기다. 주요 포인트 매칭 시스템은 단순히 “글 쓰고 읽기”가 아니다. 이 복잡한 … 더 읽기

소셜 프로필 설정 (Flutter + GetX, Bonus+email 인증)

지난 글에서 소셜 로그인으로 사용자 인증까지 마쳤다. 하지만 우리 서비스(Tennis GG)에 필요한 건 ‘이메일’ 하나가 아니다. 테니스 실력(NTRP), 구력, 닉네임… 받아야 할 게 몇가지가 있다. 로그인 직후, 사용자를 붙잡아두고 자연스럽게 정보를 입력받는 과정(Onboarding Flow)을 어떻게 구현했는지 정리해본다. 먼저, 완성된 화면부터 보여드리겠습니다. 왜 이 글을 쓰게 되었는지 처음엔 그냥 긴 Form 하나 던져주고 “입력하세요” 할까 했다. 근데 나부터가 … 더 읽기

Flutter 소셜 로그인 (카카오/애플) 개발기

지난 백엔드 편에 이어, 이번에는 Flutter 앱 클라이언트에서 소셜 로그인을 붙이는 과정을 정리한다. 백엔드에서 아무리 잘 받아줘도, 클라이언트에서 토큰을 못 던져주면 말짱 도루묵이니까. 일단 결과물부터 보여드리면, 화면은 이런식으로 만들었고, 카톡 로그인 성공 시, 데이터 베이스에는 오른쪽과 같이 암호화된 임시 계정이 저장되었다. 왜 이 글을 쓰게 되었는지 소셜 로그인 라이브러리 kakao_flutter_sdk랑 sign_in_with_apple 가져다 쓰면 끝 아닌가? 싶었다. 그런데 막상 해보니 “카카오톡 … 더 읽기

카카오 & 애플 소셜 로그인 구현 삽질기 (Spring Boot + OAuth2)

이번에는 소셜[카카오(Kakao)와 애플(Apple)] 로그인을 실제로 구현하면서 겪은 과정들을 정리해본다. 왜 이 글을 쓰게 되었는지 사실 카카오 로그인만 붙이면 참 편했을 거다. 한국에서는 국민 앱이니까. 하지만 Apple App Store 심사 지침(Guideline 4.8)이 발목을 잡았다. 타사 소셜 로그인(구글, 카카오 등)을 쓰려면 반드시 ‘Sign in with Apple’도 같이 넣어야 한다는 조항 때문이다. 결국 울며 겨자 먹기로 두 가지를 다 구현하게 되었는데, … 더 읽기

Stitch AI로 화면 설계 효율화하기

안녕하세요! 오늘은 Tennis GG 프로젝트를 진행하면서 AI(Stitch AI)를 활용해 화면 설계를 어떻게 효율적으로 진행했는지 공유해보려 합니다. 앱 개발 과정에서 가장 고민되는 부분 중 하나가 바로 “복잡한 입력 폼을 어떻게 직관적이고 예쁘게 만들 것인가?” 입니다. 특히 제가 개발 중인 ‘매칭 생성’ 페이지는 날짜, 시간, 테니스장 위치, NTRP 레벨(실력), 구력, 모집 인원 등 입력해야 할 정보가 많아 자칫하면 화면이 … 더 읽기

AI 기반 테니스 플랫폼 TENNIS.GG 개발 로드맵: Flutter와 Antigravity의 만남

약 3년여간 테니스를 즐겨 치고 있습니다. 단순히 취미로 즐기던 저였지만 새로운 도전을 해보려고 합니다. 최근 직관했던 ‘현대 슈퍼매치’에서 알카라스와 시너의 박진감 넘치는 경기와 수많은 테니스 팬의 열기를 현장에서 직접 느끼며, 우리나라 테니스 커뮤니티와 인프라가 얼마나 빠르게 성장하고 있는지 실감했습니다. 하지만 동시에 동호인으로서 겪어온 불편함들도 떠올랐습니다. 완전 무료의 테니스 매칭앱이 없을까 라는 의문이 생겼고, 개발자로서의 한번 … 더 읽기