개발

3weeks 개발기 2편 — 21일의 규칙: 연속, 초기화, 그리고 완성

2026-02-08·2분 읽기
3weeks 개발기 2편 — 21일의 규칙: 연속, 초기화, 그리고 완성

핵심 규칙은 단 하나

3weeks를 기획하면서 가장 먼저 정한 건 규칙이었습니다.

21일 연속. 하루라도 빠지면 0일로 초기화.

느슨한 조건은 필요 없었습니다. "이번 주에 5일만 해도 돼"라거나 "하루 빠진 건 그냥 넘어가자"는 예외를 허용하는 순간, 습관화의 긴장감이 사라집니다.

강연에서 들은 내용의 핵심도 그것이었습니다. 21일이라는 숫자가 효과를 갖는 건 매일 빠짐없이 한다는 전제가 있기 때문입니다.


하루의 기준을 어떻게 정할까

첫 번째 설계 고민은 "하루를 어떻게 정의하느냐"였습니다.

자정 기준? 아니면 24시간?

예를 들어 운동 습관을 만든다고 할 때, 오전 2시에 늦게 퇴근해서 그때 운동을 했다면 — 이건 어제 날짜로 봐야 할까요, 오늘 날짜로 봐야 할까요?

저는 날짜 기준으로 결정했습니다. 자정이 기준입니다. 그래야 달력과 동기화가 자연스럽고, 사용자가 직관적으로 이해할 수 있습니다.

생활 패턴이 불규칙한 분들에게는 불리할 수 있지만, 습관 형성의 맥락에서 날짜 기준이 더 명확합니다.


알림 시스템 설계

체크를 잊어버리는 게 가장 큰 실패 원인입니다. 그래서 알림이 중요했습니다.

사용자가 각 습관에 대해 알림 시간을 직접 설정할 수 있도록 했습니다. "매일 오전 7시에 알려줘"라고 설정하면, 그 시간에 알림이 옵니다.

알림 내용도 신경 썼습니다. 단순히 "체크하세요"가 아니라 습관 이름과 현재 진행 일수가 함께 나오도록 했습니다.

"운동 — 현재 12일째 진행 중. 오늘도 해볼까요?"

숫자가 보이면 포기하기가 조금 더 아쉬워집니다.


21일 완성 화면

이건 소소하게 신경 썼습니다.

21일을 모두 채웠을 때 그냥 "완료"라고 뜨면 허무합니다. 3주 동안 매일 해낸 건데, 그게 당연한 것처럼 처리되면 안 된다고 생각했습니다.

축하 애니메이션과 함께 "21일 완성!" 화면이 나오도록 했습니다. 간단하지만, 그 순간을 특별하게 만들어주는 게 중요합니다.

그 경험이 있어야 다음 습관도 시작하게 됩니다.


여러 습관을 동시에

처음엔 하나의 습관만 관리할 수 있을까 고민했습니다.

하지만 현실적으로 한 번에 여러 습관을 만들고 싶은 사람이 많습니다. 운동도 하고 싶고, 공부도 하고 싶고, 독서도 하고 싶은 것처럼요.

여러 개의 습관 트랙을 동시에 관리할 수 있도록 했습니다. 각 트랙마다 알림 시간, 진행 일수, 체크 여부가 독립적으로 관리됩니다.

단, 너무 많이 만들면 부담이 됩니다. 그 부분은 사용자의 자율에 맡겼습니다.


데이터는 로컬에

이 앱은 서버가 필요 없습니다. 모든 데이터는 기기 안에 저장됩니다.

Realm Swift를 사용했습니다. 습관 정보, 매일의 체크 기록, 알림 설정을 로컬 DB에 저장했습니다.

단순한 앱이라 데이터 구조도 단순합니다. 습관 하나당 이름, 시작일, 알림 시간, 그리고 날짜별 체크 기록. 이게 전부입니다.