팀플로 / Teamplo — 개발 일지

1기 — v0 PWA (4/13~4/17)

처음 이름은 BestSimpleTodo. "회의록을 붙여넣으면 할 일이 자동 추출되는 PWA" 컨셉으로 시작.

  • 4/13마스터 설계 문서, 첫 엔지니어링 리뷰
  • 4/14v0 스캐폴드(Next.js 16 + Supabase). 하루 만에 DB 스키마·실시간 에디터·회의록 파서·OAuth·대시보드·공유·PWA·디자인 시스템까지
  • 4/15접근 권한 모델, 공유 모달, 실시간 충돌 수정, 한글 폰트
  • 4/16~17디자인·로고 폴리시. KAIST·성균관·고려대·POSTECH 재학생 P0 인터뷰

2기 — 전략적 피벗 (4/19~4/20)

P0 인터뷰로 방향이 크게 바뀜. "개인 todo 앱" → "팀의 병목을 드러내는 도구"(member-first → team-first).

  • 제품명 확정: 팀플로 / Teamplo, 도메인 확보
  • 경쟁 분석, 설계 문서 재편

3기 — v3 본 제품 빌드 (4/21~4/27)

가장 밀도 높은 구간. 클린 슬레이트로 v3를 다시 지음.

  • 4/21clean-slate 마이그레이션, 파서 재작성, API·UI·OAuth·실시간 병렬 빌드
  • 4/22라이브 디자인 리뷰에서 팀 페이지 스펙 누락 발견 → 복구
  • 4/24팀 페이지 리팩터: 개인 대시보드 재설계, 팀 스코프 라우트, E2E 인프라
  • 4/25모바일 도그푸드: 직접 폰으로 사용, 피드백 9건을 PR로 반영
  • 4/26~27초대/나가기, 초대 링크

4기 — 인프라 재작성 (4/28~5/1)

  • 4/28Yjs CRDT 마이그레이션: 직접 만든 merge 로직을 Y.Doc으로 교체
  • 4/29CodeMirror 6 에디터 마이그레이션: textarea → CM6 + y-codemirror. 한국어 IME 버그와 긴 사투
  • 4/30~5/1마크다운 하이라이트, 클릭 가능한 하이퍼링크, 카카오톡 웹뷰 대응
  • 카카오 봇 연동은 파트너십 심사 전까지 보류

5기 — 도그푸드 & v4 (5/11~6/4)

  • 5/11도그푸드 회고, v4 계획. 핵심 인사이트: 실패 모드는 "리마인더 전달"이 아니라 "팀원 쪽 가시성"
  • 5/12~13캘린더 뷰 출시
  • 5/15~16캘린더·디자인 폴리시
  • 5/19에디터 폰트 합자 비활성화 (`->` `=>`에서 커서 어긋남 수정)
  • 5/22네비게이션 지연 버그 수정 — router.refresh()가 도는 동안 화면 이동이 멈추던 문제. 휘발성 데이터를 GET 라우트 핸들러로 옮겨 해결
  • 5/23뒤로가기 시 이전 페이지 내용이 잠깐 보이던 문제 수정
  • 5/24v4 캘린더 Phase 2 드래그 스케줄링 (PR #13). 호버 기기는 행 그립 → 날짜 셀 드롭, 터치는 롱프레스 → DatePickerSheet. 낙관 상태·800ms 슬로우 스피너·2초 TTL 에러 폴백·받침 인식 한국어 날짜 안내까지 단일 훅으로 통합. 단위·E2E 테스트 50건 추가
  • 5/24v3 캘린더를 클라이언트 셸 + GET API로 분리. router.refresh 폴백을 prop catch-up 효과로 교체해 낙관 상태가 refetch 정착까지 유지되도록 정리
  • 5/24구조 리팩터 — src/components 평면 33개를 기능별 8 폴더로, 거대 파일 5개를 헬퍼 모듈로 분할. biome 에러·경고 0건, v0 잔재 코드(parser·session·DashboardLive) 제거
  • 5/28모바일 디자인 폴리시 — /design-review HIGH 8건. 바텀시트·도크 필 safe-area-inset 적용, iOS 포커스 줌 막으려 모바일 입력·셀렉트 16px로 (PR #15)
  • 5/28모바일 MEDIUM 후속 — 바텀시트 스와이프 다운 닫기(useSwipeDismiss 훅, 거리 100px·속도 0.5px/ms 임계), 다크모드 도크 필 elevation 복구 (PR #18)
  • 6/1v3 에디터·뷰어 팔레트 마이그레이션 — @멘션 칩과 뷰어 체크박스를 앰버로 통일(DESIGN.md amber-only). 모든 표면에서 앰버=배정 신호 일관성 (PR #17)
  • 6/1태스크 로우 대칭 — 4개 편집 표면 모두에 날짜 피커 노출. /office-hours·eng·design 리뷰로 useDatePicker 훅 시그니처와 오버레이 스택 결정 잠금 (PR #19)
  • 6/3뷰어 단일 줄바꿈을 하드 `<br>`로 렌더(remark-breaks) — 빈 줄 없이 이어 쓴 줄이 한 문단으로 합쳐지던 "엔터가 안 먹던" 버그 수정 (PR #20)
  • 6/3편집 페이지 데스크톱 할일 레일 접기/펴기 토글 — 폭 확보용 세로 스트립, localStorage 유지, 토글 시 포커스 이전. 레드 테스트 6건 동시 수정 (PR #21)
  • 6/4마케팅 홈에 제품 갤러리 — 3개 표면(편집 받아치기·/me 리스트·/me 캘린더)을 조별과제 데모로 정적 목업화. 서버 컴포넌트·클라 JS 0, 라이브 컴포넌트와 클래스 단위로 동기화 (PR #22)

6기 — 팀 허브 & 공유 링크 (6/5~6/23)

v4 런치패드 라인 — 흩어진 팀 자원을 좌측 레일 하나로 모으고, 팀 바깥 사람도 볼 수 있는 공유 링크까지 열었다.

  • 6/5교차팀 캘린더에서 각 팀 캘린더로 바로 가는 범례 링크, Ctrl+Space/Ctrl+Enter로 새 할 일 줄을 넣고 @배정까지 한 흐름으로 (PR #23)
  • 6/9/me 리스트 전면 리디자인 — 세로 팀 네비(전체·개인·팀)로 전환, 모바일은 공용 바텀시트. v4.1 (PR #24)
  • 6/18Track A 팀 허브 런치패드 — 좌측 레일에 고정 링크(team_links)·캘린더·페이지 네비, 모바일 드로어, 806px 중앙 정렬 에디터, 링크 CRUD, DnD 재정렬, 링크·할일 실시간 동기화, 게스트 읽기 전용까지. v4.2 (PR #26)
  • 6/18Track B 익명 보기 전용 공유 링크 — access_grants + resolveGrant 초크포인트, /view/<slug>/<token>에서 멤버 화면을 그대로 읽기 전용으로 재사용, 실시간 반영·발급·회수. v4.3 (PR #27)
  • 6/23디자인 폴리시 일괄 — 편집↔뷰 스크롤 동기화, 뷰어 체크박스·마감일 정규화, 마감 태그를 레일·캘린더·리스트에서 (D-5, 06/20)로 통일, 날짜 피커 배치 보정. v4.3.1 (PR #29)
  • 6/23게스트 보기 레일이 created_at이 아니라 멤버가 정한 드래그 순서를 따르도록 수정 — 공유 링크가 출시 후 줄곧 페이지 순서를 잘못 보여주던 버그. v4.3.2 (PR #28)
  • 6/23편집 페이지 폴리시 — 넓은 좌우 거터, 본문 폰트 mono→Pretendard(체크박스는 열 정렬 위해 mono 유지), 보조 동작을 더보기(⋯) 메뉴로, 할 일 행에 우측 날짜 칩 하나로 통일. v4.3.3 (PR #30)
  • 6/23보기 전용 링크 재확인 — 발급 토큰을 저장해 공유 모달을 다시 열면 같은 링크를 다시 보여줌(멤버 전용). v4.4 (PR #31)
v0 PWA ──피벗──▶ 팀플로 v3 ──인프라 교체──▶ v4 캘린더 ──▶ 팀 허브·공유 링크
개인 todo       팀 중심        Yjs + CM6       팀원 가시성     런치패드·보기 전용

현재: 팀 허브 런치패드(고정 링크·DnD·실시간)와 익명 보기 전용 공유 링크까지 라이브. 다음은 공유 링크 Phase 2(편집 권한·카카오 포스팅·MCP 쓰기)와 규칙 기반 알림. 카카오 봇은 파트너십 심사 대기.

10주 내내 Claude Code로 백엔드·프론트·OAuth·실시간을 병렬로 풀었다.

일지