AI를 활용한 식재료 관리 및 레시피 추천 서비스
냉장고 속 식재료를 등록하면, 보유 재료·소비기한·개인 식습관을 바탕으로 AI가 맞춤 레시피를 추천해 주는 웹 서비스입니다.
바쁜 일상 속에서 "남은 식재료로 뭘 해 먹지?"라는 고민과, 관리되지 않고 버려지는 식재료 문제를 해결하기 위해 시작한 프로젝트입니다.
Algorithm Chef는 다음 세 가지 핵심 가치를 제공합니다.
- 식재료 입력 자동화 — OCR로 영수증을 스캔하거나 음성으로 입력해, 일일이 타이핑하지 않아도 냉장고를 채울 수 있습니다.
- 개인화된 레시피 추천 — 보유 식재료, 소비기한 임박 재료, 사용자 성향 설문을 종합해 AI가 메뉴를 추천합니다.
- 식재료 관리 + 나눔 — 냉장고 재고를 체계적으로 관리하고, 남는 재료는 나눔 게시판을 통해 이웃과 공유합니다.
- OCR 영수증 인식 — 마트 영수증 사진을 업로드하면 품목을 자동으로 추출해 냉장고에 등록합니다.
- 음성 인식(STT) 등록 — 말로 식재료를 불러 등록할 수 있습니다.
- 수동 등록 / 수정 — 카테고리별로 재료와 수량, 등록일·소비기한을 직접 관리할 수 있습니다.
- 보유 식재료 기반 추천 — 현재 냉장고에 있는 재료로 만들 수 있는 메뉴를 추천합니다.
- 소비기한 임박 재료 우선 추천 — 빨리 소비해야 하는 재료를 활용하는 레시피를 우선 제안해 음식물 낭비를 줄입니다.
- 사용자 성향 기반 추천 — 가입 시 입력한 식습관·선호 설문을 반영한 맞춤 추천을 제공합니다.
- 레시피 재추천 / 수정 — 추천 결과가 마음에 들지 않으면 다시 추천받거나, 조건을 바꿔 레시피를 다듬을 수 있습니다.
- 레시피 상세 보기 — 추천된 메뉴의 재료, 조리 순서를 상세 페이지에서 확인합니다.
- 카테고리(육류·채소·유제품 등)별 재고 현황을 한눈에 확인합니다.
- 등록일·소비기한 기반으로 재료 상태를 관리합니다.
- 남는 식재료를 나눔 글로 등록하고, 댓글로 소통할 수 있습니다.
- 글 작성·수정·삭제 및 댓글 기능을 제공합니다.
- 회원가입 및 성향 정보 등록 — 가입 시 식습관·건강 목표 등 성향 설문을 함께 수집합니다.
- 인증/인가 — Spring Security + JWT 기반 로그인 및 토큰 인증.
- 아이디 찾기 / 비밀번호 찾기 — 이메일을 통한 계정 복구.
- 임시 비밀번호 발급 — 메일로 임시 비밀번호를 전송하고 변경하도록 안내.
- 마이페이지 — 내 정보, 성향 설정, 알림 설정 관리.
- Web Push 알림 — 소비기한 임박 등 주요 이벤트를 푸시로 안내합니다.
| 구분 | 기술 |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.5.7 |
| Build | Gradle |
| Persistence | Spring Data JPA (Hibernate) + JDBC |
| Security | Spring Security, JWT (jjwt 0.11.5) |
| Validation | Spring Boot Starter Validation |
| Spring Boot Starter Mail (계정 복구·임시 비밀번호 발송) | |
| Database | MySQL |
| Test | JUnit 5, Spring Security Test |
| 구분 | 기술 |
|---|---|
| Library | React |
| 음성 입력 | Web Speech API |
| 푸시 | Web Push API |
| API | 용도 |
|---|---|
| Gemini API | AI 레시피 추천 / 프롬프팅 |
| Google Cloud API | OCR(영수증 인식) 등 |
| FCM | 푸시 알림 |
- Docker
- GitHub Actions (CI/CD)
- Git / GitHub (협업)
- Notion (API 명세·문서화)
┌─────────────────────────────┐ ┌──────────────────────────────────────┐
│ Client │ │ Backend Server │
│ React │ │ ┌──────────────────────────────────┐ │
│ Web Speech API (음성 입력) │ HTTP │ │ Controller Layer @RestController │ │
│ Web Push API (푸시 알림) │ ◄─────► │ │ HTTP 요청 처리 │ │
└─────────────────────────────┘ REST │ ├──────────────────────────────────┤ │
│ │ Service Layer @Service │ │
┌─────────────────────────────┐ │ │ 핵심 비즈니스 로직, 외부 API 통신 │ │
│ External APIs │ API │ ├──────────────────────────────────┤ │
│ Gemini API │ ◄─────► │ │ Data Access Layer @Repository │ │
│ FCM │ CALL │ │ DB 연결, JPA 및 SQL 번역 │ │
│ Google Cloud API │ │ ├──────────────────────────────────┤ │
└─────────────────────────────┘ │ │ Persistence Framework │ │
│ │ JPA(Hibernate) + JDBC SQL 실행 │ │
│ └──────────────────────────────────┘ │
└────────────────────┬───────────────────┘
│
┌──────▼──────┐
│ MySQL │
└─────────────┘
계층형 아키텍처(Layered Architecture)를 따릅니다. Controller → Service → Repository → Persistence 순으로 책임을 분리해, 각 계층이 자신의 역할에만 집중하도록 설계했습니다.
AlgorithmChef_Backend
├── gradle/wrapper
├── src
│ ├── main
│ │ ├── java/com/webservice/algorithmchef
│ │ │ └── (도메인별 계층 구성: controller / service / repository / domain)
│ │ └── resources
│ │ └── application.yml # DB, JWT, Mail, 외부 API Key 등 환경 설정
│ └── test
├── build.gradle
├── settings.gradle
├── gradlew
└── gradlew.bat
Spring Boot(Gradle) 기반 프로젝트이며, group은
com.webservice.algorithmchef입니다. 세부 패키지 구성은 소스 코드를 참고해 주세요.
| 기능 | Method | Endpoint |
|---|---|---|
| OCR 영수증 업로드 | POST |
/api/ocr/upload |
| 음성 인식(STT) | POST |
/api/stt |
| 레시피 재추천 | POST |
/recipe/recommendation/retry |
| 레시피 수정 | POST |
/recipe/revise |
전체 API 명세는 Notion 문서로 관리됩니다.
# 1. 저장소 클론
git clone https://github.com/AlgorithmChef/AlgorithmChef_Backend.git
cd AlgorithmChef_Backend
# 2. 환경 설정
# src/main/resources/application.yml 에 아래 값을 설정하세요.
# - MySQL 접속 정보 (url, username, password)
# - JWT secret key
# - Mail(SMTP) 계정 정보
# - 외부 API Key (Gemini, Google Cloud 등)
# 3. 빌드
./gradlew build
# 4. 실행
./gradlew bootRun요구 사항: Java 21, MySQL
- API 호출 로직 최적화 — 다양한 외부 API 간 호출 로직을 더 안정적으로 정리
- 미구현 기능 구현 — 일정상 미처 구현하지 못한 기능 보완
- 프론트엔드 UI 개선 — 레시피 추천 영역 등 UX 고도화
확장 로드맵
- Phase 1. 개인화 알고리즘 — 축적된 데이터를 바탕으로 개인 맞춤 추천 고도화
- Phase 2. 위치기반 채팅 서비스 — 근처 이웃과 식재료 나눔을 위한 채팅 기능
- Phase 3. 헬스케어 연동 — 식습관 통계 기반 건강 관리 연동
| 역할 | 이름 |
|---|---|
| 팀장 | 김부연 (컴퓨터공학부) |
| 팀원 | 오건우, 이준형, 김효찬 |