2026

Capacitor를 걷어내고 React Native로 — 모바일을 다시 짠 이유

한 코드베이스를 지키려고 골랐던 Capacitor를 몇 달 뒤에 버리고, 모바일만 React Native로 다시 짠 기록. 리라이트의 리스크를 줄인 세 가지와 카카오맵 삽질.

프로젝트

tmux 화면을 파싱해서 폰에서 프롬프트에 답하기

Claude Code가 터미널에 그리는 선택 UI를 tmux capture-pane으로 읽어 디스코드 버튼으로 바꾸는 과정. 단일/다중 선택의 정반대 키 의미, 놀고 있는 세션 오인, 렌더 레이스 같은 실측 함정들.

학습

폰에서 Claude Code 세션들을 조종하기 — 디스코드를 붙였다

Mac mini에서 tmux로 돌리는 여러 Claude Code 세션을, 자리를 떠나서도 폰으로 보고 개입하려고 디스코드를 붙인 기록. 원격 조종의 편의보다 "무엇을 못 하게 할지"를 먼저 정한 이야기.

프로젝트

Plan Do! AI 어시스턴트 고도화 — 여러 개를 한 번에, 그리고 이름을 믿지 않기

다건 생성부터 워크스페이스 인식·프롬프트 인젝션 방어까지, 자연어 명령을 실무에 붙이며 겪은 것들.

학습

쌓인 노트를 스스로 잇게 — 임베딩 유사도로 자동연결

노트를 저장할 때마다 임베딩으로 의미가 가까운 노트를 찾아 잇고, 그걸 그래프로 그리고 군집으로 묶은 기록. pgvector kNN·Louvain·Canvas 렌더까지.

프로젝트

워크스페이스 격리를 한 메서드로 — WorkspaceResolver 패턴

협업 SaaS에서 데이터 격리를 강제하는 방법과 트레이드오프.

학습

Plan Do! 자연어 라우팅 — 로컬 LLM과 GPT를 100회 붙여보고

qwen2.5-coder:7b vs gpt-4o-mini, 같은 프롬프트 100개 케이스로 비교한 결과와 안 옮긴 이유.

학습

블로그에 글 쓰는 마찰 줄이기 — Pages CMS 연동

글 한 편 올리는 마찰을 줄이기 위해 Pages CMS 연동

노트

Plan Do! 출시 회고 — 혼자서 풀스택, 그리고 iOS까지

할 일·캘린더·AI를 통합한 생산성 앱을 1인 개발로 출시하며 부딪힌 결정들과 시행착오.

프로젝트

Plan Do! 데이터 모델 — Workspace 중심의 멀티테넌시

30여 개 엔티티를 Workspace 하나로 묶은 결정과, 그 과정에서 마주친 트레이드오프.

학습

Plan Do! 인프라 — Lightsail 한 인스턴스 위의 모든 것

AWS Lightsail 4GB 한 대에 웹·DB·파일까지 묶고, 단순함을 1순위로 둔 1인 운영 인프라 기록.

학습

WebSocket 두 개를 한 앱에 — presence와 DM을 분리한 이유

Plan Do!의 실시간 기능을 두 개의 STOMP 클라이언트로 나눈 결정과 트레이드오프.

학습

Capacitor로 PWA를 iOS 앱으로 출시하기

같은 웹 코드베이스로 iOS 앱까지 출시하면서 부딪힌 것들.

학습

사이트를 새로 단장했습니다

Astro로 옮기면서 글과 작업을 한 자리에 모았어요. Claude와 함께 작업한 기록도 함께.

노트