[피드백 요청] Flutter로 만든 금연 습관 앱 금연뱅크 배포 후기
안녕하세요. 개인 프로젝트로 Flutter 앱 금연뱅크를 만들어 배포까지 완료했습니다.
앱은 금연을 “치료/진단” 대체가 아니라, 사용자가 금연을 유지하도록 돕는 루틴/동기부여 도구에 가깝습니다.
만든 배경
금연을 시도해보면, 실제로 무너지는 지점이 “한 번에 크게 포기”라기보다 흡연 욕구가 올라오는 아주 짧은 순간인 것 같았습니다.
그래서 저는 그 순간에 바로 대응할 수 있도록 다음을 설계했습니다.
“지금까지의 기록”을 한 화면에서 확인
정각 루틴 기반 알림(수집 가능 시간)
출석/보상/가벼운 게임 요소로 꾸준히 들어오게 만들기
주요 기능 (사용자 관점)
홈에서 금연 시간/절약 금액/미흡연 개수/실패 횟수/목표일 확인
출석 체크로 코인 적립 + 실패 횟수/수집 시도에 사용
09:00, 12:00, 18:00, 22:00 정각에 “담배 수집 가능” 시간 안내
설정에서 필요한 알림만 켜고 끌 수 있음
게임 랭킹(미니게임 4종)과 간단한 동기부여
기술 스택 (개발 관점)
Flutter
Supabase (프로필/랭킹 동기화, 게임 데이터)
알림/스케줄:
정각 알림 정확도를 위해
flutter_local_notifications의 정시 예약(zonedSchedule) 중심으로 구성WorkManager는 일부 백그라운드 플로우에 사용
Crash 안정성:
화면 dispose 이후 콜백이 들어와 크래시가 나던 케이스를
mounted가드/타이머 정리로 방어
개발하면서 부딪힌 이슈 & 해결 방향
정각 알림 정확도
초기엔 WorkManager 기반 예약에서 기기/OS 정책에 의해 시각 오차가 생길 수 있어,
정각 루틴은 정시 예약 방식으로 옮기고 타임존 초기화를 보강했습니다.
Crash 이슈
dispose()이후setState()가 호출되는 케이스를 Crashlytics로 확인했고,여러 화면의 타이머/비동기 흐름에 방어 코드를 추가했습니다.
랭킹 화면에서 “순서가 이상하게 보이는” 문제
스냅샷/실시간 데이터 소스가 섞일 때 UI 순서가 기대와 달라질 수 있어,
로딩 후 목록을 종목별 기준으로 한 번 더 강제 정렬하도록 수정했습니다.
피드백 받고 싶은 부분
OKKY 독자 분들 조언을 얻고 싶어서, 아래 중 하나라도 의견 주시면 좋겠습니다.
정각 알림(09/12/18/22)처럼 “정시성이 중요한 알림”에서, Android에서 더 권장되는 운영/구현 패턴이 있을까요?예: 절전/알림 최적화 예외 안내 문구, 스케줄 중복 처리 방식 등
랭킹/스냅샷(일일 확정)과 실시간(현재 기록) 혼용 구조에서, 클라이언트/서버 중 어디에 “정렬 권한”을 두는 게 더 안전하다고 보시나요?
스토어/앱 소개 글에서, 사용자가 기능을 빠르게 이해하도록 만들려면 어떤 정보 배치가 더 좋을까요?
(예: “정각 알림/동기부여 구조”를 첫 문단에서 강조하는 게 맞는지)
읽어주셔서 감사합니다.
많은 피드백 주시면 다음 릴리즈에 바로 반영해보겠습니다.