Focus On Meal (FOM)
(디지털컨버전스) React & Spring 활용 자바(Java) 개발자 양성과정(5) 1회차
| 개요 | Focus On Meal(FOM)은 식재료 가격 변동 추적, 식품 안전 공표/리콜정보 제공, 개인 맞춤형 식단 추천, 그리고 사용자 중심의 알림 서비스를 통합한 스마트 식생활 관리 플랫폼이다. 최근 급격한 물가 변동, 식품 안전 이슈 증가, 영양 불균형 문제 등 복합적인 생활 문제를 해결하고자, 공공 데이터(Open API) 기반의 정확한 정보 제공 + AI 기반 분석 기능을 결합하였다. 사용자는 관심 식자재를 등록하고, 가격 변동·안전 공표 발생 시 실시간 알림을 받으며, 개인의 신체 정보·알레르기·식재료 취향에 맞춘 맞춤형 식단 제안을 받아 효율적인 소비와 건강한 식생활을 유지할 수 있다. |
|---|---|
| 구현기능 | 1) 식재료 정보 & 가격 변동 관리 공공 농식품 가격 API(KAMIS) 연동 기간별 도매가격/소매가격 조회 가격 변동률 계산 및 그래프 시각화 사용자 관심 재료 즐겨찾기 등록/해제 및 알림 설정 2) 식품 안전 공표 & 리콜 정보 제공 정부 식품 안전 공표·위해식품 리콜 API 연동 관심 식자재의 안전 문제 발생 시 사용자에게 알림 3) 개인 맞춤형 식단 생성(AI 기반 Meal Planner) 신체 정보, 알레르기, 기피 재료 기반 필터링 Gemini AI 모델을 활용한 식단 추천 레시피 상세 모달 제공 및 사용자 저장 기능 4) 관리자 페이지 공지사항 CRUD (목록, 조회, 등록, 수정, 삭제) 공지 필독/NEW 뱃지 설정 회원 관리 검색(제목/내용/작성자), 정렬, 필터, 페이지네이션 각 API 동기화 수동 관리리 React + JWT 기반 관리자 접근 제어 5) 알림(Notification) 시스템 가격 급등/급락 알림 안전 공표 발생 시 알림 사용자 단위 알림 설정(가격/안전 개별 ON/OFF) 알림 읽음/삭제 처리, 전체 선택/일괄 처리 6) 회원 인증 및 계정 관리 Spring Security + JWT 로그인 회원가입 · 이메일 인증 랜덤 닉네임 생성 및 금칙어 필터링 마이페이지(개인정보 수정 / 식단 기록 / 알림 기록 / 즐겨찾는 식재료) |
| 설계의 주안점 | 데이터 기반의 정확성 확보 - 공공 API(가격/안전) 데이터를 주기적으로 수집하여 최신 상태 유지 - 가격 변동률·위해 정보 발생 시 사용자 단위 알림 제공 - 이력 데이터 축적을 통한 가격 추세 분석 및 예측 정확도 향상 확장 가능한 DB 구조 설계 - PRICE_HISTORY, ALERT_HISTORY 등 도메인 분리 - 회원별 알림 설정 커스터마이징 가능 - 정규화된 테이블 구조로 데이터 중복 최소화 및 유지보수성 확보 - 인덱스 설계를 통한 대용량 데이터 조회 성능 최적화 권한/보안 강화 설계 - JWT 기반 인증 - 관리자 페이지 접근 제어 - 비밀번호 변경/이메일 인증/계정 활성 여부 관리 - Spring Security를 활용한 역할 기반 접근 제어 - API 요청 시 토큰 검증 및 권한 확인 프로세스 적용 사용자 중심 UI/UX - React 상태 기반 렌더링과 직관적 알림 UI - 검색 → 정렬 → 필터 → 페이징의 조합을 고려한 프론트 구조 - 반응형 디자인 적용으로 모바일/태블릿 환경 지원 - 로딩 상태 표시 및 에러 핸들링을 통한 사용자 경험 개선 AI 기반 기능 확장성 - Gemini API 사용 - 향후 식단 사진 분석, 식단 영양 자동 계산 기능 확장 가능 - 사용자 선호도 학습을 통한 맞춤형 식재료 추천 기능 구현 가능 - 프롬프트 엔지니어링을 통한 응답 품질 및 정확도 개선 API 연동 안정성 및 예외 처리 - 외부 API 장애 시 재시도 로직 및 폴백 메커니즘 구현 - API 호출 실패 이력 로깅 및 모니터링 체계 구축 - 타임아웃 설정을 통한 시스템 안정성 확보 |
| 사용기술 및 개발환경 |
Backend - Java <17.x.x> - Spring Boot <3.5.7> - Spring Security <6.3.x> + JWT <0.11.5> 인증 - JPA <3.2.x> / MyBatis <3.0.5> 혼합 사용 - REST API 기반 설계 - Lombok <1.18.34> Frontend - React <^19.1.1> (Vite <^7.1.7>) - Axios <^1.13.2>, React Router <^7.9.5> - CSS Module Database - Oracle XE 21c ("Oracle Database 18c Express Edition Release 18.0.0.0.0 Production Version 18.4.0.0.0") - SQL Developer DevOps / Tools - GitHub - ERDCloud - Maven - IntelliJ IDEA / VS Code (IDE) Open API - KAMIS 농식품 가격 API - 식품의약품안전처 위해식품/리콜 정보 API - Google Gemini AI API |
|
|