← 포트폴리오 목록

카페인사이트 원가·마진 관리 시스템

카페·외식(F&B) 소상공인을 위한 원가·마진 관리 시스템으로, 원재료부터 메뉴 레시피, 판매·정산까지 이어지는 원가 흐름을 하나의 대시보드로 통합합니다.

연쇄 원가 재계산 엔진 구현원재료 단가 변경 시 중간재→메뉴까지 3단계 원가를 재귀 갱신하는 계산 로직 설계
일일 정산 계산 파이프라인 설계판매원가·고정비 배분·순마진을 단계별로 산출하는 정산 서비스 레이어 구축
FCM 예약 발송 큐 구현영업 시작·종료 시간 기준 Cron 스케줄러와 즉시 발송을 통합한 발송 큐 설계
서비스 타입Web
업종데이터 분석
기술 스택
React 18TypeScriptTailwind CSSNestJS (Swagger API 문서화)Prisma ORMPostgreSQLFirebase FCMDocker 컨테이너 배포Flutter 클라이언트 연동
주요 기능
  • 원가·마진율 통합 대시보드
  • 원재료·부재료·중간재 원가 마스터 관리
  • 판매량 입력 및 일일정산
  • FCM 푸시 발송 및 고정 미션 관리
Overview

프로젝트 개요

범위: 개발, 디자인, 기획

카페·외식(F&B) 소상공인을 위한 원가·마진 관리 시스템으로, 원재료부터 메뉴 레시피, 판매·정산까지 이어지는 원가 흐름을 하나의 대시보드로 통합합니다. NestJS + Prisma + PostgreSQL 백엔드와 React 기반 관리자 화면으로 마진율을 실시간으로 계산하고, FCM 푸시로 고정 미션과 공지를 함께 운영할 수 있는 구조를 설계합니다.

작업 범위

  • 원가·마진율 통합 대시보드: 매장 운영자가 오늘의 매출·원가율·마진율을 한 화면에서 확인하고, 메뉴별 마진 순위와 알림을 즉시 파악합니다
  • 원재료·부재료·중간재 원가 마스터 관리: 원재료·부재료·중간재를 등록·수정하고, 레시피에 연결된 항목의 단가 변경 시 메뉴 원가에 자동 반영합니다
  • 판매량 입력 및 일일정산: 메뉴별 판매량을 입력하면 판매액·매출원가·마진율을 자동 계산하여 일일 정산 내역을 생성합니다
  • FCM 푸시 발송 및 고정 미션 관리: 영업 시작·종료 시간 기준 예약 푸시를 설정하고, 고정 미션을 등록해 앱 사용자의 완료 현황을 관리합니다

주요 업무

  • 원가·마진율 통합 대시보드 화면: Recharts 라인·도넛·바 차트로 일별 매출-원가 추이와 메뉴별 원가 비중을 시각화하고, PostgreSQL Materialized View로 대시보드 집계 쿼리를 사전 계산합니다
  • 원재료·부재료·중간재 원가 마스터 관리 화면: Prisma 스키마로 원재료-중간재-메뉴 계층 관계를 모델링하고, 단가 변경 이벤트를 트리거로 연쇄 재계산합니다
  • 판매량 입력 및 일일정산 화면: 고정비 배분 로직을 포함한 일일 정산 계산 엔진을 NestJS 서비스로 구현하고, 정산 이력을 일자별로 조회합니다
  • FCM 푸시 발송 및 고정 미션 관리 화면: Firebase FCM 기기 토큰을 관리하고 즉시·예약 발송을 구분하는 발송 큐를 구현하며, 미션 완료 통계를 집계합니다
카페인사이트 원가·마진 관리 시스템
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

원재료 단가 변경이 중간재·메뉴 원가까지 연쇄적으로 반영되

재귀적 재계산 트랜잭션 설계가 필요합니다

판매량 입력과 고정비 배분이 동시에 반영되는 일일정산 계산에서 데이터 정합성을 보장하는 트랜잭션 격리 수준 설계가 필요합니다

FCM 예약 발송 시각과 매장 영업시간이 달라질 수 있어

영업시간 기준으로 갱신되는 Cron 잡 구조 설계가 필요합니다

기존 Flutter 앱과의 서버 연동 과정에서 토큰 갱신·오류 처리 방식을 API 명세에 맞춰 정합성 있게 설계해야 합니다

구현 내용

핵심 기능 상세

핵심 기능 1

원가·마진율 통합 대시보드

매장 운영자가 오늘의 매출·원가율·마진율을 한 화면에서 확인하고, 메뉴별 마진 순위와 알림을 즉시 파악합니다.

  • PostgreSQL Materialized View로 일별 매출·원가·마진율 집계를 사전 계산하여 대시보드 조회 구조 설계
  • Recharts 기반 라인/도넛/바 차트 조합으로 마진 추이와 메뉴별 원가 비중 시각화
  • NestJS Guard 기반 매장 단위 권한 분리로 대시보드 데이터 접근 범위 제어

NestJS + Prisma 집계 쿼리와 Recharts 시각화를 결합해 원가·판매 데이터를 하나의 관제 화면으로 통합하는 구조를 설계합니다.

원가·마진율 통합 대시보드
원가·마진율 통합 대시보드 실제 화면
핵심 기능 2

원재료·부재료·중간재 원가 마스터 관리

원재료·부재료·중간재를 등록·수정하고, 레시피에 연결된 항목의 단가 변경 시 메뉴 원가에 자동 반영합니다.

  • Prisma 관계형 스키마로 원재료→중간재→메뉴 3단계 원가 계층 구조 모델링
  • 좌측 리스트 + 우측 상세 패널 구조로 항목별 단가·규격·공급처 이력 관리
  • 단가 변경 시 연결된 레시피·메뉴 원가를 재귀적으로 재계산하는 서비스 레이어 설계

원재료 단가 변경 한 번으로 이를 사용하는 모든 메뉴의 원가율이 자동 갱신되는 연쇄 계산 구조를 구현합니다.

원재료·부재료·중간재 원가 마스터 관리
원재료·부재료·중간재 원가 마스터 관리 실제 화면
핵심 기능 3

판매량 입력 및 일일정산

메뉴별 판매량을 입력하면 판매액·매출원가·마진율을 자동 계산하여 일일 정산 내역을 생성합니다. 고정비 배분 로직을 포함한 일일 정산 계산 엔진을 NestJS 서비스로 구현하고, 정산 이력을 일자별로 조회합니다.

  • 메뉴별 판매량 입력 폼 + 일괄 저장 트랜잭션으로 정산 데이터 원자성 보장
  • 판매원가·고정비 배분·순마진을 단계별로 계산하는 정산 엔진 서비스 설계
  • 일자별 정산 이력 테이블과 전일 대비 증감 표시 UI 구현

판매량 입력 한 번으로 매출·원가·고정비 배분·순마진까지 자동 산출되는 일일 정산 계산 엔진을 구현합니다.

판매량 입력 및 일일정산
판매량 입력 및 일일정산 실제 화면
핵심 기능 4

FCM 푸시 발송 및 고정 미션 관리

영업 시작·종료 시간 기준 예약 푸시를 설정하고, 고정 미션을 등록해 앱 사용자의 완료 현황을 관리합니다.

  • Firebase Admin SDK로 기기 토큰 등록·발송 이력 관리 및 즉시/예약 발송 분기 처리
  • Cron 기반 영업 시작·종료 시간 예약 발송 스케줄러 구현
  • 고정 미션 CRUD + 사용자별 완료 상태 집계 통계 화면 구현

즉시 발송과 영업시간 기준 예약 발송을 하나의 큐 구조로 통합 관리하고, 고정 미션 완료 현황을 집계하는 구조를 설계합니다.

FCM 푸시 발송 및 고정 미션 관리
FCM 푸시 발송 및 고정 미션 관리 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

원가 데이터 모델 및 ERD 설계 · 2026.09

원재료·부재료·중간재·메뉴·레시피 계층 구조 설계, Prisma 스키마 테이블 12개 정의

STEP 2

NestJS 원가·정산 API 개발 · 2026.09

CRUD·원가 재계산·정산 계산 API 25~30개 구현, Swagger 문서 자동화 적용

STEP 3

React 대시보드 및 관리 화면 개발 · 2026.09

대시보드·원가관리·정산화면 등 7~9개 화면 구현, Recharts 차트 4종 적용

STEP 4

FCM 푸시·미션 기능 및 통합 테스트 · 2026.09

Firebase FCM 예약 발송 구조 구현, 정산 계산 로직 통합 테스트 진행

프로젝트 성과

주요 성과

연쇄 원가 재계산 엔진 구현원재료 단가 변경 시 중간재→메뉴까지 3단계 원가를 재귀 갱신하는 계산 로직 설계
일일 정산 계산 파이프라인 설계판매원가·고정비 배분·순마진을 단계별로 산출하는 정산 서비스 레이어 구축
FCM 예약 발송 큐 구현영업 시작·종료 시간 기준 Cron 스케줄러와 즉시 발송을 통합한 발송 큐 설계
Materialized View 대시보드 집계 설계PostgreSQL Materialized View 3개로 일별 매출·원가·마진 데이터 사전 집계, 조회 구조 최적화
Highlights

기술적 주안점

  • NestJS + Prisma 집계 쿼리와 Recharts 시각화를 결합해 원가·판매 데이터를 하나의 관제 화면으로 통합하는 구조를 설계합니다
  • 원재료 단가 변경 한 번으로 이를 사용하는 모든 메뉴의 원가율이 자동 갱신되는 연쇄 계산 구조를 구현합니다
  • 판매량 입력 한 번으로 매출·원가·고정비 배분·순마진까지 자동 산출되는 일일 정산 계산 엔진을 구현합니다

유사한 프로젝트를 기획하고 계신가요?

FIRSTPIP이 개발 범위와 로드맵을 함께 정리해드립니다

무료 상담 시작하기