[기획] 개인 재무 관리/목표 달성 앱 (MVP 설계서)

Nolrimbo·2025년 9월 10일

포트폴리오

목록 보기
13/21

“돈의 흐름을 보이게 만들고, 목표는 진행률로 느끼게 하자.”

TL;DR

  • 🎯 목표: 수입·지출 기록 + 목표(적립형) 진행률 시각화

  • ⚙️ 스택: Spring Boot + JWT + MariaDB / React Native(Expo)

  • 🧱 MVP 범위: 계정/카테고리/트랜잭션/목표 CRUD + 월별 통계 + 목표 진행률 API

  • 🔒 보안: 비밀번호 해시(BCrypt), JWT 만료/재발급(추가 예정), 최소 데이터 수집

  • 🪜 진행 방식: 백엔드 → RN 테스트 화면(카드/리스트) → 반복


1) 왜 이 앱인가? (Problem & Insight)

  • ✍️ 기록의 번거로움: 입력은 간단해야 하고, 바로 요약/피드백이 보여야 지속된다.
  • 👀 목표 체감의 부재: “얼마 모았는지”를 퍼센트/바로 즉시 가시화.
  • 🧩 개인화 필요: 카테고리/계정은 사람마다 다름 → 사용자별 소유 데이터가 기본.

2) 타깃 페르소나

  • 직장인/프리랜서 초보 가계부러: “월말에 어디로 샜지?”
  • 적금·여행·장비 등 목표성 지출/적립이 있는 사용자
  • 모바일 위주, 입력→즉시 반영되는 요약/진행률 선호

3) 성공 기준 (Definition of Success)

  • 📈 정량: 첫 주차 기준 30건 이상 트랜잭션 입력, 목표 진행률 카드 클릭률 60%+

  • ✅ 정성: “월간 합계와 목표 진행률을 한 화면에서 파악 가능”

  • 🧪 기능 DoD (MVP)

    • 회원가입/로그인(JWT), 내 계정/카테고리/트랜잭션/목표 CRUD
    • 월별 합계/카테고리별 지출 통계, 목표 진행률 API
    • RN에서 대시보드 카드 + 트랜잭션 입력/목록 + 목표 목록/진행률 바

4) 범위 (MoSCoW)

  • Must: 사용자 인증, 계정/카테고리/트랜잭션/목표 CRUD, 월 통계, 목표 진행률
  • Should: 색상/아이콘 등 카테고리/목표 시각적 구분, 기본 검증/예외 공통 처리
  • Could: 다국어(i18n), 다크모드, 간단한 온보딩, 금액 입력 UX 향상(+/- 토글)
  • Won’t (MVP): 다중 통화, 은행 API 자동 동기화, 예산 초과 알림, 절감형 목표 자동 계산

5) 아키텍처 개요

[React Native(Expo, TS)]
   ⤷ Axios(Interceptor, JWT)
        |
        v
[Spring Boot API]
   ├─ Security(JWT) ─ Auth
   ├─ Domain: account/category/transaction/goal
   └─ Stats service
        |
        v
[MariaDB]
  • 전형적인 BFF 스타일 단일 백엔드 + 모바일 클라이언트
  • 인증 토큰은 RN에서 보관 → Axios 인터셉터로 자동 첨부

6) 데이터 모델 (ERD - MVP)

User(id, email, password_hash, created_at)

Account(id, user_id, name, type[CASH|CARD|BANK], created_at)
Category(id, user_id, name, flow[INCOME|EXPENSE], color?, created_at)

Goal(id, user_id, title, target_amount, due_date, color?, created_at)

Transaction(
  id, user_id, account_id, category_id,
  flow[INCOME|EXPENSE], date, amount, memo?, goal_id?, created_at
)

# 목표 진행률(적립형):
# progress% = SUM(Transaction.amount WHERE goal_id AND flow=INCOME) / target_amount

7) 핵심 API (초안)

  • Auth: POST /api/auth/signup, POST /api/auth/login, GET /api/auth/me
  • Account: POST/GET/DELETE /api/accounts
  • Category: POST/GET/DELETE /api/categories?flow=INCOME|EXPENSE
  • Transaction:
    • POST /api/transactions
    • GET /api/transactions?from=YYYY-MM-DD&to=YYYY-MM-DD&categoryId=&accountId=
    • DELETE /api/transactions/{id}
  • Goal: POST/GET/DELETE /api/goals, GET /api/goals/{id}/progress
  • Stats: GET /api/stats/monthly?year=2025&month=9
    → { incomeTotal, expenseTotal, net, byCategory[] }

세부 스키마/DTO는 구현 편에서 확정.


8) UX 플로우 (MVP)

  1. 로그인 → 홈 대시보드: 이번 달 수입/지출/순지출 + 목표 진행률 카드
  2. + 트랜잭션: 계정/카테고리/금액/일자/메모(+연결 목표 선택)
  3. 목표 탭: 목표 목록 + 진행률 바 / 새 목표 생성
  4. 통계 탭: 카테고리별 지출 원형, 월별 합계 바(후속)

9) 개인정보 & 보안

  • 🔐 비밀번호: BCrypt 해시
  • 🔑 JWT: 만료시간(1h), 리프레시/재발급은 후속(필요 시)
  • 🧺 데이터 최소화: PII 최소 수집(이메일만), 금액/메모 외 민감 정보 저장 금지
  • 📜 로그: 서버 처리 로그(금액/메모 원문 미노출), 접근 제어/예외 공통 처리

10) 성능/품질/운영

  • 📦 DB 인덱스: Transaction(userId, date), Transaction(goalId)
  • 🧪 테스트: API 스모크 테스트(cURL/Swagger), RN E2E는 간단한 시나리오로 시작
  • 🛠️ 운영 편의: Swagger UI, 간단 헬스체크, 프로필 분리(local/dev)

11) 수익화/확장(포스트-MVP)

  • 💳 프리미엄: 목표 다중/복합, 절감형 목표, 예산/알림, 월간 리포트 PDF
  • 🤝 공유: 커플/가족 목표 공유(권한), CSV/엑셀 임포트
  • 🔌 연동: 카드/은행 API(국내 환경 고려 시 장기 과제)
  • 📈 분석: 트렌드/추천(“이번 달 식비 과다, 다음 달 목표 조정?”)

12) 작업 방식 (DevCraft 규칙 반영)

  • 백엔드 기능 만들면 → RN에서 테스트 화면 최소 구성으로 즉시 검증
  • 기능 단위 작게, PR/커밋 메시지에 기능/엔드포인트/테스트 요약
  • 문서는 Velog 시리즈로 동행(기획 1편 + 구현 기록)

13) Plan

기본 플랜

  1. [기획] 개인 재무 관리/목표 달성 앱 — MVP 설계서
  2. [백엔드 #1] 프로젝트 부트스트랩 + 인증/JWT + 도메인 엔티티/ERD 확정
    • Gradle, application.properties, Security/JWT, User/Account/Category/Goal/Transaction 엔티티 + 마이그레이션
  3. [백엔드 #2] CRUD + 통계/목표 진행률 API + Swagger 시연
    • 각 도메인 CRUD, /stats/monthly, /goals/{id}/progress, cURL/Swagger 테스트 로그
  4. [프론트 #1] RN(Expo) 템플릿 + 로그인/토큰 인터셉터 + 대시보드 카드
    • Axios 인스턴스, Auth 플로우, 이번 달 합계/순지출/목표 진행률 카드 표시
  5. [프론트 #2] 트랜잭션 입력/목록 + 목표 탭 + 간단 차트(원형)
    • 입력 UX, 목록/필터, 목표 진행률 바, 카테고리별 지출 차트

확장 플랜 (난이도↑ 시 분리)

  • [백엔드 #3] 예외/검증/전역 핸들러 + 리프레시 토큰
  • [프론트 #3] 월별 합계 차트 + 목표/카테고리 UI polishing

14) 마일스톤 제안 (가이드)

  • M1: 백엔드 #1 완료 — Swagger에서 /auth, /domains 엔드포인트 보임
  • M2: 백엔드 #2 완료 — 월 통계/목표 진행률 정상 응답
  • M3: 프론트 #1 완료 — 로그인→대시보드 카드 표시
  • M4: 프론트 #2 완료 — 트랜잭션 입력/목록/목표 탭 동작

15) 리스크 & 대응

  • 🔄 데이터 입력 지속성: 입력 UX 최소화(최근 값 기억, 빠른 추가), RN 최적화
  • 🧮 목표 모델 다양성: MVP는 적립형만, 절감형은 별도 모델로 후속
  • 🔐 보안/토큰 만료: 초기엔 Access 토큰만 → 후속 글에서 Refresh 도입

16) 다음 글 예고

[백엔드 #1]: 프로젝트 생성, JWT 보안, 도메인 엔티티 & ERD 마무리, 실행/스모크 테스트까지!


참고/운영 메모

  • GitHub: (작성 후 링크 업데이트 예정)
  • 스키마/DTO/에러 모델은 구현 글에서 확정/문서화
  • application.properties 선호 정책 유지
profile
Java 개발자 | 사이드 프로젝트 마니아 | GPT 기반 자동화 툴 연구 중 기술 리뷰, 개발일지

0개의 댓글