프로젝트 소개
프로젝트 소개 — FridgeAI
냉장고 속 재료를 기억하고, 유통기한이 가까운 것부터 알려주며, 그 재료로 만들 요리를 추천한다
핵심 소주제
1
유통기한 중심 재고 관리
식재료마다 수량, 유통기한, 보관 위치(냉장/냉동/실온), 최소 수량을 기록한다. 유통기한이 없으면 구매일과 보관 기간으로 추정하고(추정 표시), 임박·만료·부족 상태를 뱃지로 보여 준다.
2
영수증 한 장으로 재고 채우기
영수증 사진을 S3에 올리면 Gemini Vision이 품목을 뽑는다. 사용자가 확인·수정한 품목만 재고에 담아 AI 인식 오류가 그대로 저장되지 않게 한다.
3
지금 써야 하는 재료로 레시피 추천
임박 재료를 우선해 Gemini가 레시피를 추천하고, 평가(취향 카드)를 쌓아 개인화한다. 키가 없거나 호출이 실패해도 준비된 레시피로 대체해 화면이 비지 않는다. 비로그인 사용자에게는 시간대별 요리를 보여 준다.
4
온프레미스 LLM 어시스턴트
대화형 어시스턴트는 로컬 GPU에서 vLLM으로 띄운 EXAONE을 쓴다. 웹은 채팅 요청만 통합 API(api.cloverky.cloud)로 프록시한다.
5
웹 · 모바일 · 통합 백엔드
Next.js 웹(Vercel)과 Flutter 앱이 있고, 백엔드는 여러 프로젝트를 경로로 나눠 담은 헥사고날 구조의 FastAPI(Cloudflare 터널)다. FridgeAI는 /api/fridge/* 바운디드 컨텍스트를 쓴다.
주요 기능
| 기능 | 설명 | 상태 |
|---|---|---|
| 재고 관리 | 식재료 CRUD, 소비·추가, 보관 위치·상태 관리 | 구현 |
| 영수증 스캔 | S3 업로드 → Gemini Vision 추출 → 확인 후 재고 반영 | 구현 |
| AI 레시피 추천 | 임박 재료 우선 추천, 폴백 레시피, 비로그인 시간대 추천 | 구현 |
| 취향 카드 | 레시피 평가(recipe_feedback)로 개인화 | 구현 |
| AI 어시스턴트 | EXAONE(vLLM) 채팅 프록시 | 구현 |
| 쇼핑 연결 | 부족 재료 감지 → 장바구니 메모 · 쇼핑몰 검색 링크 | 구현 |
| 위치 기반 날씨 | 좌표 → 한글 지명 + 날씨, 3단 폴백 | 구현 |
| 소셜 로그인 | Google·Kakao·Naver, 사전가입 강제, 데모 계정, admin 역할 | 구현 |
| 냉장고 달리기 | 미니게임, 최고 기록 계정 저장 | 구현 |
| 스마트 알림 | 유통기한 D-3/D-1 · 재고 부족 푸시 | 설계 |
| 소비 패턴 분석 | 소비·폐기 통계 | 설계 |
기술 스택
WEBNext.js 16 · React 19 · TypeScript · Tailwind v4 · shadcn/ui · Prisma 5
MOBILEFlutter (Android · Web · Windows)
BACKENDPython · FastAPI · SQLAlchemy 2 (async) · Alembic · Redis
AIGemini (Vision · 레시피) · EXAONE on vLLM · LangGraph
INFRANeon PostgreSQL · AWS S3 · Vercel · Cloudflare Tunnel · Docker Compose
아키텍처
| 계층 | 기술 | 배포 |
|---|---|---|
웹 (lucky/) | Next.js + Next API 라우트 + Prisma | Vercel · fridge.cloverky.cloud |
모바일 (fortune/) | Flutter | — |
API (clover/) | FastAPI, 헥사고날 · 바운디드 컨텍스트 | Docker · Cloudflare Tunnel · api.cloverky.cloud |
| DB | PostgreSQL | Neon |
| 파일 | 영수증 이미지 | AWS S3 |
| LLM | EXAONE (vLLM, :8001) | 로컬 WSL systemd |