전체 글285 [Travly 개발기 2화] 지도가 중심이 되다 — 4가지 뷰가 생긴 이유 화면을 설계할 때 가장 많이 싸운 문제가 하나 있다. 뷰의 형태다. 여행 일정을 어떤 모양으로 보여줄 것인가.처음에는 리스트였다초기 버전은 단순했다. 날짜 → 일정 목록. 세로로 죽 나열되는 형태. 빠르게 만들 수 있고, 누구나 이해하기 쉽지만 씁제지 이해하기 쉽지만 주다주다 다른 문제가 생겣다.4가지 뷰의 탄생결론은 하나의 뷰로 모든 걸 해결하려 하지 말자였다. 세로 목록, 수평 타임라인, 일별 뷰, 캘린더 뷰 네 가지가 생겼다.좌표 없으면 아무것도 안 된다지도 기반으로 설계하면서 가장 고통스러운 문제가 하나 있었다. 좌표다. 사용자가 Embassy Suites Milpitas라고 입력하면 지도에 핀이 꽂혀야 한다. AI를 중간에 끊워 넣었다.설계의 기본 원칙화면은 사용자가 여행 중에 꺼내보는 물리적인.. 2026. 3. 11. [Travly 개발기 1화] 왜 또 여행 앱이야? — Travly를 만든 진짜 이유 AI와 함께 일하다 보면 이상한 버릇이 하나 생긴다. 불편한 것을 참지 못하게 된다. 이거 그냥 만들면 되지 않나 라는 생각이 너무 쉽게 든다. Travly도 그렇게 시작됐다.기존 앱들의 진짜 문제GTC 2026 출장을 준비하면서 일정을 짜기 시작했다. 지도와 일정이 진짜로 연결된 앱은 거의 없었다.참고한 서비스가 없다는 것의 의미Travly를 만들면서 특이한 점이 있었다. 다른 서비스를 벤치마킹하지 않았다. 처음부터 나를 위해 만들었기 때문이다.MVP 첫날 결정한 것들첫 번째 화면을 무엇으로 할지 결정할 때 지도를 메인으로 가기로 했다. AI는 첫날부터 있었다.다음 화: 지도가 중심이 되다→ Travly 바로가기 2026. 3. 11. [AI 노동일지 5탄 #5] Google OAuth 통합 — 버튼 하나로 로그인하기 이메일/비밀번호 로그인만 있었다. 모바일에서 이메일을 치는 건 귀찮다. 특히 게임을 하려고 들어온 사람에게. Google 버튼 하나면 끝나는 로그인이 필요했다.서버는 이미 준비되어 있었다POST /api/auth/google/signin 엔드포인트가 이미 있었다. Google ID 토큰을 받아서 검증하고, 유저를 찾거나 생성하고, JWT를 발급한다. 클라이언트만 연결하면 됐다.GSI 원탭 버튼Google Sign-In 라이브러리(GSI)를 동적으로 로드한다. SharedWallet의 로그인 모달이 열릴 때 버튼을 렌더링한다.google.accounts.id.initialize({ client_id: GOOGLE_CLIENT_ID, callback: (response) => handleGoogle.. 2026. 3. 10. [AI 노동일지 5탄 #4] SW 캐시와의 전쟁 — Service Worker가 업데이트를 먹는 날 코드를 고쳤다. 배포했다. 모바일에서 확인했다. 안 바뀌어 있다. 캐시를 비웠다. 안 바뀌었다. 앱을 삭제하고 재설치했다. 그제야 바뀌었다. Service Worker가 범인이었다.SW는 왜 업데이트를 막는가Service Worker는 브라우저와 서버 사이에 있는 프록시다. 모든 fetch 요청을 가로채고, 캐시된 응답을 돌려줄 수 있다. 오프라인 지원에는 좋지만, 업데이트에는 적이다.내 SW는 install 이벤트에서 주요 파일을 미리 캐시했다.const CACHE = 'enhance-v5';const OFFLINE = [ '/enhance/', '/enhance/index.html', '/lib/shared-wallet.js', // 여기가 문제 '/lib/multiplayer.js', .. 2026. 3. 10. 이전 1 2 3 4 5 ··· 72 다음