이승현
안녕하세요. 스터디 그룹 코드드림을 운영하고 있는 이승현입니다.
예전에 '농실농실'이라는 메이커로그를 작성한 이후, 오랜만에 새로운 앱을 출시하게 되었습니다.
최근 결혼을 준비하면서 여자친구의 소개로 공유 가계부 앱을 처음 사용해 보게 되었습니다. 꾸준히 사용하다 보니 서로의 지출 내역을 확인할 수 있어 우리가 어디에 소비를 많이 하는지 알 수 있다는 점이 특히 유용했습니다.
하지만 사용하던 앱은 반복적으로 등장하는 광고 때문에 지출과 수입을 등록할 때 불편함이 있었습니다. 특히 전면 리워드 광고나 스킵이 불가능한 광고가 사용 경험을 방해했는데요. 이를 해결하려면 유료 결제를 해야 했습니다.
그러다 문득, "차라리 직접 만들어볼까?" 하는 생각이 들었습니다. 그리고 "우리가 쓰려고 만든 공유 가계부, 우리"라는 이름과 함께 본격적으로 프로젝트를 시작하게 되었습니다.
1. 기획
먼저 기능 기획과 DB 설계를 진행했습니다.
모든 기획과 설계는 카페24 호스팅 서비스를 기준으로, 최소한의 비용으로 최대한의 효율을 낼 수 있도록 고민하며 진행했습니다.
기능
1. 회원가입
최소한의 정보만 저장: 닉네임, 이메일, 비밀번호
비밀번호 찾기 시 이메일 인증 활용
카카오 로그인, 애플 로그인 지원 (애플 로그인은 앱스토어 배포를 위해 추가)
2. 가계부
수입/지출 등록 가능, 등록되는 정보는 최소화
3. 공유 기능
회원 간 가계부 공유 가능 (원하지 않는 경우도 고려)
개인 사용도 가능해야 함
4. 일정
단순한 가계부 기능뿐만 아니라 일정을 추가하면 좋을 것 같아 포함
일정 역시 최소한의 정보만 등록 가능하도록 구성
5. 통계
회원별 지출 데이터를 바탕으로 매주/매월 사용 금액 제공
6. 알림
가계부 및 일정 등록 시 푸시 알림 제공
이 기획을 바탕으로 ERD를 설계했습니다.
초기 ERD이며, 기능이 하나둘 추가되면서 일부 수정되었습니다.
테이블은 크게 4가지로 구성했습니다.
회원
회원정보, 푸쉬, 메일인증체크 등
공유
회원별 하나의 공유코드를 가질 수 있으며, 코드를 통해 각 회원의 가계부와 일정을 공유합니다.
가계부
수입/지출에 필요한 결제구분, 수입(지출)구분은 코드화하여 별도 관리했습니다.
일정
가계부와는 성격이 다른 점을 고려해 테이블을 분리시켰습니다.
2. 개발
'우리'에 사용된 기술은 다음과 같습니다.
백엔드
Spring Boot
Spring Security
Java 17
MariaDB
Gradle
프론트엔드
Flutter 3.27.1
Dart
Riverpod
인프라
Tomcat JSP 호스팅 비즈니스
개인적으로 Flutter가 없었다면 앱 개발을 하지 못했을지도 모릅니다...😅
Riverpod을 이용한 상태 관리와 Android/iOS 배포가 어렵지 않았던 점 덕분에, 백엔드를 주로 다루는 저도 부담 없이 앱 개발에 도전할 수 있었습니다.
앱의 주요 기능은 각 기능별 API를 구현한 후 테스트를 거쳐 개발했으며, 부가 기능으로 푸시 알림과 이메일 인증을 추가했습니다.
주요기능
기능별 API 구현
각 API에는 CLIENT_SECRET와 같은 호출 키와 값을 정의하여 무분별한 API 호출을 방지하고, 인증이 필요한 API는 JWT 토큰을 통해 인증 처리를 했습니다.
부가기능
앱 푸쉬
앱 푸쉬는 Firebase Admin SDK를 사용했습니다. 가계부/일정 등록시에 공유 계정으로 푸쉬가 발송됩니다.
이 때 여러 기기에 푸쉬기능을 사용했는데 오류가 하나 있었습니다. 알고보니 해당 메소드가 deprecated 된 상태 였습니다.
// firebase-admin 9.2.0
FirebaseMessaging.getInstance().sendEachForMulticast(message);
// firebase-admin 8.1.0
FirebaseMessaging.getInstance().sendMulticast(message);이메일 인증
비밀번호 분실시에는 Gmail 인증번호를 통해 재설정이 가능합니다.
여기까지 프로젝트 기획부터 개발까지의 간략한 내용을 정리해봤습니다.
처음 계획에는 없던 프로젝트였지만, 어제 배포를 마치고 여자친구와 함께 사용해 보니 뿌듯함을 느낍니다. 이런 점이 개발자의 큰 장점이 아닐까 싶습니다 😅
플레이스토어와 앱스토어에서 만나보실 수 있습니다.
오늘 아침에 확인해 보니 신규 회원 9명이 가입해 주셨더군요.
공유 가계부가 필요하신 분들이라면 한 번 사용해보시고, 피드백을 주시면 감사하겠습니다.
끝까지 읽어주셔서 감사합니다 :)
[플레이스토어]
[앱스토어]
(모바일앱 실제 화면)