안녕하세요. 가족끼리 사야 할 물건과 할 일을 함께 적어두는 앱을 만들어 출시했습니다.
■ 불편 포인트 및 기획: 다이소를 다녀오고 시작된 개발
건전지, 면봉 등을 사러 갔다가 적어두질 않아서 결국 정작 마음먹었던 몇 개를 빼먹고 돌아왔습니다.
가만 생각해보니 휴지가 떨어져가는 걸 보고 "조만간 사야지" 했다가 그대로 까먹었고,
저녁 요리하다 올리브유 다 떨어졌다고 서로 말은 했는데 그때뿐이었습니다.
적을 곳이 없는것은 아니었습니다. 문제는 알아채는 순간과 사는 순간이 늘 벌어져 있고,
인지한 사람과 사러 가는 사람이 다를 때가 잦아서였습니다.
카톡에 적으면 다른 대화에 밀려 사라지고, 냉장고 메모지는 그것대로 한계가 있고,
노션 같은 도구는 부부 둘이 집안일 적자고 쓰기엔 무거웠습니다.
그래서 저희 부부용으로 만들었다가, 비슷한 가족들이 있을 것 같아 더 디벨롭하고 출시까지 했습니다.
■ 앱 소개
생각난 순간 그 자리에서 한 줄 적으면 가족 모두에게 바로 보입니다.
살 것과 할 일을 탭으로 나눠 한 앱에 담았습니다.
항목마다 댓글을 달 수 있습니다. "이번엔 다른 브랜드로 사자", "이건 주말에 할까?" 같은 이야기가 카톡 대화창이 아니라 그 항목에 붙어 있도록 했습니다.
상세 메모도 넣을 수 있고, 메모와 댓글에 넣는 URL은 지저분하지 않게 정리해서 보여줍니다.
저희 부부가 제일 유용하게 생각하는기능입니다.
담당자를 지정하는 기능은 일부러 넣지 않았습니다. 집에서 쓰는 앱에 업무 도구 느낌을 들이고 싶지 않았습니다.
그리고, 적는 순간의 마찰을 줄이는 데 신경을 썼습니다.
필요한 물건은 대개 갑자기 떠오르는데, 단계가 하나만 더 있어도 그 자리에서 안 적게 되더라고요.
결국 한 줄 입력만으로 끝나게 했습니다.
■ 커밋 2,200회, 노력이 보이지는 않지만 안 하면 티가 난다는 믿음
작년 7월에 첫 커밋을 찍고 이번 달 초에 스토어에 냈습니다.
기능만 놓고 보면 단순한 앱입니다. 함께 적고, 체크하고, 지우는 게 전부입니다.
커밋의 절반 이상은 화면에 아무것도 안 보이는 곳에 들어갔습니다.
예를 들면 알림입니다. 처음엔 장 볼 것을 다섯 개 연달아 적으면 알림도 다섯 번 가게 했습니다.
생각해보니 가족한테 그렇게 보내면 다음 날 알림을 꺼버리겠죠.
그래서 첫 항목은 바로 보내고, 이후 30분 안에 추가되는 건 모았다가 한 통으로 보냅니다(묶음 발송).
또한, 밤에는 소리 없이 알림함에만 쌓이게 했습니다(방해금지).
지인 요청으로 영어·일본어를 넣었는데, 화면만 번역해선 반쪽이더군요.
화면도 푸시 알림도 각자 설정한 언어로 나가도록 했습니다.
읽기 비용도 같은 이유로 계속 만졌습니다. 가족 단위 실시간 공유는 Firestore 읽기 횟수가 금방 늘어서,
목록을 통째로 다시 읽지 않고 바뀐 부분만 가져오도록 바꾸고 화면별로 몇 번 읽는지 재면서 줄여나갔습니다.
(물론 사용자가 없다 보니 안 해도 될 걱정이었나 싶지만, 길게 보기로 했습니다..)
초대 링크는 시간이 지나면 만료됩니다. 가족 목록이 통째로 열리는 링크라 어딘가에 남아서 계속 유효하면 안 된다고 봤습니다.
그리고 아무도 안 보는 사이에 데이터가 어긋나는 일이 있어서, 매일 서버가 한 번씩 훑고 스스로 고칩니다.
"아침에 오늘 할 일 알려주기"(모닝 브리핑 기능)를 만들었는데, 계정 하나를 기준으로 시간을 재다 보니
시차 있는 곳에서 새벽에 알림이 나갔습니다. 지금은 기기마다 따로 기능하도록 구현했습니다.
위 같은 사례들은 잘 만들어도 아무도 모르지만, 못 만들면 한 번에 신뢰를 잃는 것들이라서 시간을 제일 많이 썼습니다.
■ 개발 스택
앱:
Flutter / Dart — Android·iOS 한 코드베이스
(부부가 서로 다른 OS를 쓰는 경우가 많아 처음부터 양쪽을 목표로 했습니다)
상태관리 BLoC, 라우팅 go_router, DI get_it + injectable
Clean Architecture + 기능별 폴더 구조
백엔드 및 데이터베이스:
Firebase -> 종량제지만 아직 무료 한도 안에서 돌아갑니다
Firestore + Cloud Functions (2세대 / Node 22 / 서울 리전)
구글·애플·카카오 로그인, FCM 푸시, App Check, Crashlytics
웹 (랜딩 / 약관 / 초대 안내 페이지):
Cloudflare Pages -> 무료 한도, 과금 없음
문의 메일도 Cloudflare Email Routing 포워딩 -> 무료
도메인 -> 2만원 / 1년
테스트:
flutter_test / bloc_test / mocktail + jest + Firebase 에뮬레이터
테스트 파일 220개
고정비:
Apple Developer $99 / 1년
Google Play $25 (최초 1회)
도메인 2만원 / 1년
서버는 아직 무료 한도(과금 구간에 들어가면 더 행복할 것 같아요)
■ 미리 밝혀둘 것
혼자 쓰는 메모 용도로는 굳이 이 앱일 이유가 없습니다. 더 좋은 도구가 많습니다.
가족이 가볍게 함께 사용할 때 가치가 있는 앱입니다.
출시한 지 열흘쯤 됐고 실사용자도 후기도 아직 별로 없습니다.
사전에 테스트 겸 배포한 지인들한테 잘 쓰고 있다는 이야기를 종종 듣는 정도입니다.
■ 피드백 받고 싶은 것
가족을 초대해서 같이 쓰기 시작하는 단계에서 막히는 포인트가 있는지
살 것과 할 일을 한 앱에 둔 게 맞는지, 아니면 섞여서 산만한지
"이 정도면 그냥 메모장이나 카톡 쓰지" 싶어지는 지점이 어디인지
스택이나 위에 적은 삽질 중에 궁금한 게 있으면 댓글로 더 풀겠습니다.
소개 페이지: 바로가기
Android: https://play.google.com/store/apps/details?id=app.togethery
iOS: https://apps.apple.com/app/id6782287287
누군가에겐 유용한 앱이 되면 좋겠습니다. 사용해보시고 불편한 지점 있으면 꼭 말씀해주세요. 감사합니다.