블로그
Fecit을 만들며 배운 이야기들.
구조에 기억을 더한다는 것
사람들이 더 쉽게 성취하게 하려면 뭘 해야 할까? 며칠을 돌고 돌아 결국 'Fecit이 갖고 있는 구조에 시간을 붙이는 일'이라는 답에 도달했습니다.
한 단계의 모달이 만든 다섯 가지 문제
가이드 모드의 만족도 단계가 모달이라는 이유로, 그 위로 다섯 개의 문제가 줄줄이 따라왔습니다. 우여곡절 끝에 결국 RN Modal을 바꿨습니다.
좋아요와 프로필, 그리고 작은 UX 보정
커뮤니티에 좋아요 기능과 다른 유저 프로필 보기를 한 번에 붙였습니다. 그 사이사이 작은 결정들과, 마지막에 한 번 되돌린 결정에 대해.
팔로우는 구독이다 — 그래서 비대칭
팔로우는 한 단어 안에 두 가지 다른 의미가 섞여 있다. 콘텐츠 구독과 사회적 신호. 어느 쪽인지 정하면 — 디자인이 따라온다.
보이는 문제는 미리 갈아엎는다
북마크 기능이 잘 돌아가긴 했다. 그런데 북마크가 수천 개 쌓인 사용자에게서 망가질 것이 보였다. 그래서 그 자리에서 갈아엎었다.
Daily/Weekly 루틴을 나누고, 캘린더 일자별 화면에 깔았다
1179줄짜리 화면을 둘로 쪼개면서 공유 utility를 추출했고, 그 결과로 캘린더 일자별 화면에 routine 배경 표시도 자연스럽게 들어갔습니다.
커뮤니티 탭을 사이드 메뉴로 다시 정리했다
Filter 버튼 하나 치우는 걸로 시작했는데, 결국 사이드 메뉴 + 섹션 전환 구조까지 갔습니다. 그리고 자유 게시판 이름도 바꿨습니다.
원래 자리 찾아주기
"나" 탭에 잡다하게 모여 있던 메뉴들을 캘린더와 체크리스트의 자기 자리로 옮겼습니다.
Hey Siri, Fecit에 할 일 만들기
iOS Shortcuts와 App Intents를 붙여서, 앱을 열지 않고도 음성 한 마디로 할 일을 추가할 수 있게 만들었습니다.
기본값을 뒤집은 날
리스트 아이템 레이아웃 애니메이션을 예외적으로 끄는 방향에서, 기본적으로 꺼져 있고 변경 대상만 켜는 방향으로 뒤집은 과정을 기록합니다.
기각의 기록, 하루 더
어제에 이어 오늘도 포커스 슬롯을 눈에 띄게 하려고 많은 것을 만들었다가 지웠습니다. 오늘의 삽질을 기록합니다.
하루의 매듭을 짓는 알림 — 매일 회고 리마인더 구현기
매일 22시에 회고를 권하는 알림을 만들면서 마주친 선택들 — 로컬 vs 서버 푸시, 완료 신호의 정의, 언어 설정의 숨은 빈 틈.
기술 한계를 인정받는 방식
AI에게 '이건 이 도구로는 안 돼'라는 답을 받는 건 어려운 일이에요. AI는 기본적으로 '할 수 있다'고 말하려는 경향이 있거든요. 한계를 제대로 인정받는 것도 기술이었습니다.
실패한 시도들의 가치
AI와 같이 일하면 실패한 시도가 엄청 많이 쌓입니다. 버려진 시도들이 쓸모없는 낭비가 아니라, 남길 것의 윤곽을 드러내는 정보라는 이야기.
대화가 질문이 되는 순간
AI와의 대화는 지시로 시작해서 질문으로 끝나요. 내가 AI에게 묻는 게 아니라, AI가 만든 제안이 나 자신에게 '너는 왜 이걸 원하는가'를 묻게 되는 순간들에 대해서.
제안을 어떻게 거부하는가
AI와 제품을 만들면서 배운 건 제안을 빨리 받아들이는 기술이 아니라, 대부분을 거부하는 근거를 가지는 일이었어요. 거부의 근거가 곧 제품 철학이었습니다.
정렬의 언어
Task Record List에 우선순위·난이도·만족도 정렬을 추가했습니다. 정렬만 더한 게 아니라 각 축에 맞는 시각 언어를 입혔고, 그러면서 그룹 접기 기능도 자연스럽게 따라왔어요.
focused task를 더 돋보이게 하고 싶었다
focus된 태스크를 시각적으로 강조하려고 애니메이션 여섯 개를 만들었다가 전부 지우고, 결국 preference 토글로 착지한 하루의 기록입니다.
기각의 기록
포커스 아이템을 더 도드라지게 하려고 이런저런 시도를 했고, 대부분 지웠습니다. 오늘의 시도들을 기록합니다.
체크리스트를 넘어서는 태스크 관리 앱 5선 (2026)
체크만 하면 끝나지 않는 태스크를 위해. 할 일을 항목 이상으로 다루는 다섯 가지 앱을 살펴봅니다.
계속 미루는 할 일, 어떻게 시작할까
왜 어떤 태스크는 몇 주째 목록에 남아있는지, 그리고 막연한 의도를 실행 가능한 계획으로 바꾸는 네 가지 질문.
Todoist vs Fecit — 어떤 앱이 당신의 사고방식에 맞을까?
Todoist와 Fecit의 상세 비교. 둘 다 태스크를 관리하지만, '일을 끝내는 과정'에 대한 접근이 근본적으로 다릅니다.
시작하면 집중한다 — 자동 포커스의 UX
태스크를 시작하면 자동으로 상단에 고정되는 자동 포커스 기능의 설계 의도와 사용자 경험을 이야기합니다.
0.4초의 차이 — 자동 포커스 구현기
태스크 시작 시 자동 포커스, 완료 시 자동 해제를 구현하면서 마주친 타이밍, 애니메이션, 상태 동기화 문제들을 다룹니다.
회고 표시 바 하나 넣으려다 — 노랑 팔레트 교체부터 API 버그까지
태스크 리스트에 '이 태스크는 회고가 작성됐다'는 작은 표시 하나 넣으려다 SECONDARY 팔레트를 갈아엎고 API 버그까지 고친 이야기.
이야기가 없는 랜딩페이지
좋은 조각들은 있었지만 구조가 없었다. 섹션을 추가하고, 카피를 다시 쓰고, 랜딩페이지가 목록이 아니라 대화라는 걸 배운 이야기.
금요일에 만들었는데 수요일에 등록되는 시간표
아들 앞에서 시연하다 발견한 요일 버그. 출근길이 길었습니다.
디자이너 없이 앱스토어 스크린샷 20장 만들기
Claude와 Python Pillow로 앱스토어 스크린샷을 직접 만든 과정. 배경 그라디언트, 로고, 카피까지.
AI 서브태스크가 하나씩 나타나기까지
OpenAI 스트리밍 응답을 실시간으로 파싱하고, SSE로 클라이언트에 전달해서 서브태스크가 하나씩 생겨나는 경험을 만든 이야기.
첫 번째 사용자를 찾는 여정 — 설명하기 어려운 앱을 마케팅하기
의도적으로 복잡한 태스크 앱의 사용자를 찾으려는 솔직한 이야기. Reddit 필터, Google Ads, 그리고 Fecit이 어떤 앱인지 정직하게 말하는 법을 배우는 과정.
ASO 삽질기 — 앱 이름부터 설명까지 다시 쓰다
fecit의 앱스토어 제목, 부제, 키워드, 설명을 처음부터 다시 정리한 과정. Claude Code와 함께한 ASO 작업 기록.
가이드 모드 애니메이션 — 뿅 하고 나타나고, 뿅 하고 사라지고 싶었을 뿐인데
GuideBar에 슬라이드 애니메이션을 넣으려다 SafeArea, 키보드, 마운트/언마운트와 싸운 이야기.
앱이 말을 걸다 — 대화형 가이드 모드
태스크 작성을 대화처럼 안내하는 가이드 모드 구현기입니다. fecit 아이콘이 말풍선으로 질문하고, 격려하고, 마무리까지.
준비물에 비용을 — Preparation 섹션 강화
준비물 항목에 비용 추적 기능을 추가한 구현기입니다. 단가/총액 선택, 통화 자유입력, 자동 계산까지.
지금 어디를 편집하고 있지?
문서형 태스크 에디터에서 편집 중인 필드를 시각적으로 강조하는 포커스 하이라이트 구현기입니다.
네트워크가 끊겨도 내 글은 사라지지 않는다
API 호출 실패로 사용자의 콘텐츠가 증발하는 문제를 AsyncStorage 기반 임시저장으로 해결한 이야기.
여러 날에 걸친 일정, 타임라인에서 어떻게 드래그할까
일일 타임라인 뷰에서 여러 날짜에 걸친 일정 블록의 드래그 드랍을 개선한 과정. 클램핑, 리사이즈 핸들, 시각적 피드백까지.
하루는 항상 86,400초일까?
Hermes 엔진 크래시인 줄 알았던 버그의 진짜 원인은 addDays 함수 한 줄이었습니다.
현재와 기대 사이, 세 줄이면 충분합니다
Gap Analysis라는 거창한 이름이 붙어 있지만, 실은 세 가지 질문이 전부입니다.
아이콘 하나, 댓글 한 줄
필드 레이블에 아이콘을 붙이고, Task에 댓글 기능을 추가한 이야기.
알림 기능, 생각보다 쉬웠다
할 일 시작 전에 알림을 보내는 기능. 어려울 줄 알았는데 계산된 필드 하나로 끝났습니다.
드래그 중 자동 스크롤, 생각보다 어렵다
ScrollView 안에서 드래그 드랍하면서 자동 스크롤을 구현하는 과정. 세 번 실패하고 네 번째에 성공한 이야기.
3월 업데이트: 심사 대응, 캘린더 크래시, 그리고 Desktop 개선
애플 심사 거절 대응부터 Hermes GC 크래시 디버깅, Desktop UI 대폭 개선까지. 이틀간의 기록.
첫 번째 마일스톤 완료 — AI가 본 Fecit의 현재
Claude Code의 시선에서 바라본 Fecit. 코드베이스를 탐색하고, 함께 만들고, 때로는 실수하면서 도달한 첫 번째 마일스톤.
준비 항목에 사진을 붙이다
재료, 도구, 장소에 사진을 첨부할 수 있게 했습니다. 기존 첨부파일 패턴을 재사용하면서, 준비 항목이라는 새로운 맥락에 맞게 조정한 과정.
섹션을 보이고 숨기는 설정을 만들다
섹션이 많아서 복잡하다는 문제의 답을 구현했습니다. 문서별 설정, 기본값 설정, 그리고 준비 카테고리까지.
준비 섹션을 다듬다 — 공유 모델에서 카테고리별 분리까지
하나의 PreparationItemModel로 다섯 카테고리를 다루던 구조를 분리했습니다. 모델, 화면, 컴포넌트를 각각 독립시키고, 캐시 버그를 잡기까지.
준비 섹션을 만들었더니 섹션이 너무 많아졌다
할 일을 깊게 관리하고 싶어서 분석, 준비, 회고 섹션을 만들었습니다. 그랬더니 화면이 복잡해졌습니다. 가벼움과 깊이 사이의 줄다리기.
프로젝트 담당자 기능을 만들다
서버는 이미 준비되어 있었습니다. UI를 붙이고, 검색 화면을 만들고, 빠진 데이터를 채우기까지.
Tauri 삽질기 2탄 — DMG 하나 만드는 게 이렇게 어려울 줄이야
빌드는 됐는데 DMG가 안 만들어지고, 만들어졌는데 아이콘이 사라지고, 열었더니 damaged. Tauri 데스크톱 앱 배포까지의 여정.
Weekly Routine 알림이 오지 않았던 이유
Daily는 되는데 Weekly만 안 됐습니다. 원인은 빈 칸 하나였습니다.
주소 입력 UI를 갈아엎다
이틀 동안 열 가지 방법을 시도한 끝에, 문제를 해결하는 대신 문제 자체를 없애기로 했습니다.
주소 자동완성과 키보드의 전쟁
React Native에서 키보드가 올라간 상태로 드롭다운을 탭하는 것이 왜 이렇게 어려운지에 대한 기록.
SSE 실시간 동기화 구현기
FastAPI 서버에 SSE를 붙이고, 데스크톱과 모바일 클라이언트를 연결하기까지 부딪힌 문제들.
모바일과 데스크톱, 실시간으로 동기화검토
같은 API를 공유하는 두 클라이언트를 SSE로 연결하기까지의 고민 과정.
데스크탑 캘린더에 생명을 불어넣다
세 가지 뷰에 걸친 드래그앤드롭, 커서를 따라가는 가이드 라인, 낙관적 업데이트, 그리고 가독성을 바꾼 디자인 전환.
할 일에 장소를 붙였습니다
Apple Maps API로 주소 자동완성을 만들고, 지도 미리보기까지. 간단할 줄 알았는데 아니었습니다.
꼬리표라는 분류
할 일이 늘어나면 분류가 필요해집니다. 프로젝트와는 다른, 가볍고 유연한 분류 도구를 만든 이야기.
다듬고, 다듬고, 다듬는다
랜딩페이지 문구 하나를 몇 번이고 고치는 이야기. 완성은 없고, 다듬기만 있다.
이어주는 것, 그리고 도전
쉬운 일과 어려운 일을. 혼자와 함께를. 익숙한 것과 새로운 것을. 하나의 앱으로 이어줄 수 있을까?
랜딩 페이지 메시지를 다시 정렬하다
할 일 앱은 많다. 그중에 왜 Fecit인가? 이 질문에 답하기 위해 랜딩 페이지 전체를 다시 썼다.
Tauri로 데스크톱 앱 만들기 — 3시간의 절망
아이콘이 왜 이렇게 크지? 창은 왜 안 움직이지? Tauri로 데스크톱 앱을 만들면서 겪은 가장 절망적인 3시간.
Fecit 웹 버전을 배포하기까지
모바일 앱을 웹으로 옮기면서 겪은 서버 설정, 프록시, Apple/Google 로그인 삽질기.
바운스율 75%, 랜딩 페이지를 뜯어고친 하루
방문자 139명, 바운스율 75%. 전환율을 높이기 위해 하루 동안 랜딩 페이지를 어떻게 바꿨는지에 대한 기록.
할 일 앱, 뭘 써야 할까?
Todoist, TickTick, Things 3, Microsoft To Do, Apple 미리알림. 그리고 Fecit. 직접 써보고 느낀 것들.
습관에 요일을 붙였습니다
매일 반복하는 습관에서 요일별 루틴으로. 주간 습관를 만들면서 고민했던 것들.
Claude Code와 함께 개발하기
AI와 페어 프로그래밍을 하고 있습니다. 실제로 어떻게 쓰고 있는지, 뭐가 좋고 뭐가 아쉬운지에 대한 이야기.
AI 활용기
Fecit에서 AI가 하는 일들. 추천, 생성, 제안. 아직 실험 중인 것들에 대한 이야기.
할 일 하나를 끝내기까지
제목 하나로 시작해서 회고까지. 하나의 할 일이 만들어지는 과정에 대한 이야기.
드래그 앤 드롭 캘린더를 직접 만들었습니다
라이브러리 없이 캘린더를 처음부터. 무한 스크롤, 타임라인, 드래그 앤 드롭 일정 관리까지.
스텝 인디케이터 — 리스트 안의 작은 지도
서브태스크 목록에 git-graph 스타일의 흐름도를 넣으려고 했습니다. 레인, 베지어 곡선, 파란 점. 삽질의 기록.
서브태스크 그래프를 만들기까지
할 일의 흐름을 눈으로 볼 수 있다면? 노드와 엣지로 이루어진 그래프 에디터를 만들면서 겪은 이야기.
필요할 때 필요한 만큼 — Fecit의 설계 철학
제목 하나면 충분하되, 원하면 끝까지 깊어질 수 있는 구조를 만들기 위해 고민한 이야기.
템플릿이라는 도구
할 일을 끝낼 때마다 얻는 경험을 어디에 쌓을 것인가. 템플릿이라는 도구를 만들기까지의 이야기.
Fecit에 대해 — 해냈다!
Fecit은 라틴어로 '해냈다'라는 뜻입니다. 이 앱이 왜 만들어졌는지, 어디를 향해 가고 있는지에 대한 이야기.
VauDium 시작하겠습니다!
VolunTas에서 VauDium으로. 도메인 하나 못 사서 시작된 이름 바꾸기가, 회사의 방향을 바꿨습니다.