
1. 시작하며: "맘에 드는 게 없어서 그냥 내가 만들었다"
나는 약속, 결제일, 공고, 개발 마감일, 집안일까지 모든 일정과 할 일을 캘린더에 기록하는 헤비 유저다. 그동안 타임블록, 플래닛, 미니캘 등 수많은 앱을 써봤지만 늘 아쉬움이 남았다. 무료 앱은 디자인이 부족했고, 예쁘고 편한 앱은 부분 유료화나 광고가 거슬렸다.
'요새 비개발자도 AI로 앱을 만든다는데, 내가 직접 만들면 얼마나 걸릴까?' 계좌 잔고를 보며 망설이던 유료 결제를 접어두고, 출퇴근 자투리 시간을 활용해 직접 개발해 보기로 했다. 결과적으로 원하는 초기 프로토타입을 뽑는 데는 5시간도 채 걸리지 않았다.
2. 기획 및 기술 스택: 백엔드 없이 가볍고 예쁘게
과거 칸반보드와 간트차트를 개발하며 느꼈던 아쉬운 점들을 반영해, UI/UX와 편의성에 집중했다. 빠르게 결과물을 내기 위해 백엔드와 DB 없이 프론트엔드만으로 구성했다.
- Core: React + TypeScript
- Data/Auth: Google Calendar & Task API (Headless DB처럼 활용)
- Deploy: Vercel, PWA 지원
- 주요 기능:
- 일정 템플릿 제공 (이모지 활용)
- 드래그 앤 드롭을 통한 일정 수정 및 기간 등록
- 4가지 기간 표시 스타일 지원
- 다크모드 (06.12 추가) 및 릴리즈 노트
🔗 미리 보기


📖 가이드 문서
💡 앱 이름은 Dayflow와 dailyflow 혼용 중인데, 조만간 통일할 예정이다.
https://wisdom-dev.notion.site/dailyflow-37bcd21bbb7f804aad1bc048291842ec?source=copy_link
dailyflow | Notion
Dailyflow 시작하기
wisdom-dev.notion.site
후기
이번 프로젝트의 가장 큰 특징은 소스코드나 패키지 구조를 직접 세팅하지 않았고 프로토 타입 뽑고난 이후에는, Claude(메인)와 Codex(서브)를 활용해 모바일 환경에서 채팅만으로 개발했다는 점이다.
`claude` (메인) + `codex` (서브)로 프로토타입 뽑는 데는 3시간도 안 걸렸다. 가장 큰 건, 백엔드와 DB를 아예 안 쓰고 프론트로만 개발했기 때문이다.
별도의 스킬이나 디자인시스템을 따로 사용하진 않았고, 프롬프트로만 만들면서 규칙을 추가했다. 기존에 써봤던, 맘에 들었던 레퍼런스를 이미지로 주기도 했다.
이번엔 소스코드와 패키지 구조 등 아무것도 보지 않았다. 단순히 결과물을 얼마나 빨리, 원하는 데로 뽑을 수 있는지 확인하는 용도였다.
테스트
토큰 이슈로 테스트는 거의 진행하지 않고, 정적 리뷰로만 개발했다. 그리고 초기엔 내 데이터 기준으로만 보다 보니, 엣지 케이스를 찾기 어려워서 주변에 테스터를 구했다. 하지만 생각보다 구글 캘린더를 메인으로 쓰는 유저가 적어서 테스터 확보가 어려웠다.
나도 구글 캘린더는 전혀 쓰지 않다가, 구글이 `API`, `mcp` 등 AI에서 인식 잘되고 여기저기 연동 잘되니까 `DB` 목적으로 데이터 쌓기 위해 사용한 지 얼마 안 되긴 했으니까
대부분 일반 캘린더앱 (앱 내부 디비) 쓰고 연동은 크게 고려하지 않는 느낌. 아이폰 유저는 아이클라우드 쓰는 사람도 많은 듯하다.
다른 사람들한테 보니 피드백과 오류가 우다다 쏟아져서 확인하는 대로 수정 -> 배포를 계속했다. 이유는 PC로 작업하는 게 아니다 보니 모바일에서 보기 위해서는 배포되어야 했고, 구글 로그인하려면 승인된 도메인만 가능한데 `preview` 배포는 주소가 달라지기 때문에 `URI`를 추가해주지 않으면 확인할 수가 없었기 때문.. 이것도 다른 방안이 있었을 텐데 아직은 찾아보지 않았다.

지금은 나름 플로우를 정리한 상태.. (기존: 변경사항 수정 후 바로 메인 배포 / 현재: 기능은 무조건 브랜치 생성 후 preview 확인, 테스트 후 완료되면 메인 반영)
작업 방식은 초기 개발만 집에서 조금 하고, 모두 모바일 앱으로 출퇴근 시간이나, 회사 자투리 시간에 채팅으로만 작업했다.
개인적인 사용 결과, 코덱스보단 클로드가 앱 사용성이 훨씬 좋았다. (연결 문제 등등)
둘 다 유튜브나 공식문서 등을 찾아보지 않고, 앱 들어가서 막 써본 거라 사용방식을 잘 모르고 썼을 수도 있다.
세션 만료
현재는 구글 `OAuth` 인증이 계속 풀린다는 치명적인 문제가 있지만, DB를 도입하려고 생각 중인데 어떤 방식으로 할지는 아직 고민이다.
주말에 처리할 예정.

회고: 완벽주의 버리기
"완벽하게 하려고 시작도 안 하느니, 엉성한 무언가라도 일단 하는 게 낫다." 사이드 프로젝트를 늘 생각만 하다 접기를 반복했는데, 이번엔 일단 작게라도 마무리를 지어보았다.

이 포스팅 역시 미루다 겨우 쓴다. 글이 다소 거칠더라도 일단 써두면 나중에 수정할 수 있지만, 쓰지 않으면 영영 세상에 나오지 못한다.
DB가 도입되고 기능이 안정화되면, 앱 전환까지 고려해 완전히 새롭게 리팩토링한 후속 포스팅으로 돌아오겠습니다!!

'Development' 카테고리의 다른 글
| [Hurl] 여러 API 호출 시나리오를 로컬에서 테스트하기 (0) | 2026.06.17 |
|---|---|
| [Claude] buddy 생성하기 / buddy 바꾸기 (2) | 2026.04.02 |
| [CI/CD] 컨테이너 레지스트리, Harbor (0) | 2026.03.30 |
| [Obsidian] 문서 구조에 대한 고민 (feat.PARA 방법론) (0) | 2026.03.25 |
| obsidian cli 설정하고 사용해보기 (0) | 2026.03.23 |