본문으로 건너뛰기
개인

Ledgerly

2025-08-01 — present

가족·조직 단위 공유 가계부 앱 — Next.js 16 풀스택, Supabase PostgreSQL, 3단계 역할 기반 접근 제어(OWNER/ADMIN/MEMBER), NestJS Cron 정기거래 자동 처리, 99.45% 라인 커버리지 단위 테스트 + 300건 이상 E2E 통합 테스트

Ledgerly project cover image

프로젝트 설명

가족이나 조직 단위로 수입·지출을 함께 관리할 수 있는 공유 가계부 애플리케이션이다. Next.js 16 App Router 기반 프론트엔드에서 거래·카테고리·예산의 CRUD와 Recharts 기반 재무 분석 대시보드를 제공하고, Supabase Auth와 Row Level Security로 인증·인가를 처리한다. OWNER/ADMIN/MEMBER 3단계 역할 체계로 조직 내 권한을 세분화하고, TanStack Query v5로 서버 상태를 관리하며 Zod 4로 폼 입력을 검증한다. 정기거래 자동 처리는 Vercel Cron 제한을 우회하기 위해 NestJS 기반 별도 백엔드를 Mac mini에서 Docker로 운영하며, 매일 자정(KST) @nestjs/schedule로 실행한다. Vitest 단위 테스트 397건(라인 커버리지 99.45%)과 Playwright E2E 테스트 300건 이상을 역할별(Admin/Member) 시나리오로 구성하고, 실제 백엔드와 로컬 Supabase를 연동한 풀스택 통합 테스트 환경을 구축했다.

주요 내용

  • Vitest 397건 단위 테스트, 라인 커버리지 99.45% 달성
  • Playwright 300건+ E2E 테스트, 역할별 시나리오 분리
  • OWNER/ADMIN/MEMBER 3단계 RBAC + Supabase RLS 적용
  • NestJS Cron 정기거래 자동 처리 (Docker 배포)
  • 풀스택 통합 테스트 환경 구축 (FE+BE+Supabase)

담당 기능

  • 거래 관리 — 수입·지출 CRUD, 카테고리별 분류, 날짜·메모·금액 기반 거래 기록
  • 예산 관리 — 카테고리별·기간별 예산 설정 및 실시간 사용율 추적
  • 조직 관리 — 다중 조직 생성·전환, 조직별 독립 데이터 관리
  • 3단계 역할 기반 접근 제어 — OWNER(전체 권한), ADMIN(멤버·설정 관리), MEMBER(본인 거래 관리)
  • 정기거래 자동 처리 — NestJS Cron 서비스로 매일 자정(KST) 반복 거래 자동 생성
  • 재무 분석 대시보드 — Recharts 기반 수입·지출 추이, 카테고리별 비율 시각화
  • 다국어 지원 — next-intl 기반 한국어·영어 UI 전환

깨달은 점

  • 💡 Next.js 16 App Router와 Supabase Auth를 조합하여 SSR 환경에서의 인증 상태 관리와 Row Level Security 기반 데이터 접근 제어를 구현하며, 서버·클라이언트 컴포넌트 간 인증 컨텍스트 전파 패턴을 학습
  • 💡 OWNER/ADMIN/MEMBER 3단계 역할 체계를 설계하며 조직 단위 멀티테넌시에서의 권한 분리와 데이터 격리 전략을 경험
  • 💡 Vercel Cron 제한을 우회하기 위해 NestJS 기반 별도 백엔드를 Docker로 분리 운영하며, 마이크로서비스 분리의 실무적 판단 기준과 공유 DB 스키마 관리 전략을 학습
  • 💡 Vitest 단위 테스트 397건(99.45% 커버리지)과 Playwright E2E 300 이상을 역할별 시나리오로 구성하고, 실제 백엔드와 로컬 Supabase를 연동한 풀스택 통합 테스트 환경을 구축하며 테스트 피라미드 전략을 체득

기술 스택

Next.js React TypeScript Supabase PostgreSQL Prisma NestJS Tailwind CSS TanStack Query Zod Vitest Playwright Docker Vercel

관련 링크

  • live