프로젝트

VitaMatch

작성자: nam | 조회수: 123 | 작성일: 2025-09-09 13:20 | 수정일: 2025-10-11 06:30

VitaMatch



1. 프로젝트 개요

  • 프로젝트명: VitaMatch
  • 개발 기간: 2024/11/13 ~ 2024/12/03 (4주)
  • 인력구성: 6
  • 담당 범위: 상세페이지 개발,영양제 데이터 입력,CI/CD 구축
  • 배포현황: 미출시
  • 기술 스택: JAVA,Spring Boot,MySql,HTML5,CSS,JavaScript,AWS

2. 프로젝트 목적 및 담당역할

프로젝트 목적

VitaMatch는 Spring Boot 기반의 개인 맞춤 영양제 추천 및 영양제 정보 제공 웹 애플리케이션입니다. 사용자의 성별, 연령대, 건강 상태 등을 고려하여 개인 맞춤형 영양제 성분 추천과 효과적인 영양제 조합 제시를 목표로 합니다.

기획의도 및 목표

  • 성별, 연령대, 건강 상태 등을 바탕으로 개인 맞춤형 영양제 추천
  • 영양제 성분 조합 및 상호작용 분석 기능 제공
  • 영양제 추천 및 건강 뉴스 제공 기능

담당 역할

  • 영양제 상세정보 페이지 제작
  • 영양제 원료 정보 페이지 제작
  • 영양제 더미 데이터 입력
  • CI/CD 구축

3. 개발환경 및 기술 스택

분류 내용
운영체제 Windows 10/11, Linux(Ubuntu)
서버 Apache Tomcat, AWS EC2
데이터베이스 MySQL 8
개발 툴 STS 4, Visual Studio Code, SQL Developer
협업/디자인/문서 GitHub, Notion, Discord, ERD Cloud, Draw.io, Figma, Google Drive, MiriCanvas
언어 Java 21, HTML5, CSS, JavaScript, SQL
백엔드 프레임워크 Spring Boot, Spring Web, Spring MVC, Spring Security(Spring Boot Security), Spring Boot Devtools
데이터/빌드/유틸 JPA, QueryDSL, HikariCP, Gradle, Jackson, Lombok
프론트엔드 Thymeleaf, jQuery, Ajax, Bootstrap
통신/외부 API RESTful API, HttpURLConnection, Kakao Maps API, Naver Search API, OpenAI API

4. 주요 기능

영양제 성분 조합 추천

  • 궁합이 맞는 영양제와 함께 먹으면 안 되는 영양제 추천
  • 성분 상호작용 분석 제공

개인 맞춤 영양제 추천

  • 건강 설문을 바탕으로 성별, 연령대, 건강 고민 등을 고려한 영양제 추천

카테고리별 영양제 검색

  • 영양 성분 카테고리: 비타민, 미네랄 등
  • 건강 고민 카테고리: 면역력 강화, 혈압 조절 등

건강 뉴스 제공

  • Naver Search API를 활용하여 최신 건강 및 영양제 관련 뉴스 제공

주변 약국 검색

  • Kakao Map API를 활용하여 현재 위치 기준으로 가까운 약국 검색

영양제 리뷰 게시판

  • 사용자가 영양제에 대한 리뷰 작성 및 확인 가능

AI 챗봇 상담

  • OpenAI API를 활용한 실시간 영양제 추천 및 건강 상담

다국어 지원

  • messages.properties를 사용하여 영어 등 다국어 지원

5.구현

1.영양제 상세정보,원료정보

  • 스크린샷


목적사용자가 영양제에 대한 상세 정보를 한눈에 확인할 수 있는 페이지를 제공
기술스택Spring MVC,JPA, QueryDSL,Thymeleaf
사용 기술1.Spring MVC
: @Controller로 웹요청을 받고 @RequestParam으로 파라미터 처리후에 model을 통해 뷰로 데이터 전달

2.JPA
: 엔티티를 테이블과 매핑하고, 리포지토리를 통해 특정 제품의 상세정보를 seq 값으로 조회하는 데 사용함

3.QueryDSL
: Q클래스를 이용해서 동적 쿼리 처리

Thymeleaf
: 조회된 제품 정보를 뷰에 전달하여 서버사이드 렌더링으로 화면에 동적 표시
구현 방식1.@GetMapping(“/productInfo”)메서드에서 ?seq={seq} 파라미터 를 받음

2.ProductInfoRepository.findByseq(seq)를 호출하여 DB에서 해당 엔티티를 조회

3.Optional<ProductInfo>로 엔티티를 받고 값이 존재하면 value.toDTO()를 통해 엔티티를 DTO로 변환

4.컨트롤러에서 model.addAttribute(“productInfo”,dto)로 뷰에 전달

5.Page/productInfo.html 에서 ${productInfo.productName} 같은 표현식으로 데이터표시   


6. 협업 및 커뮤니케이션


  • 요구분석서에 기능,비기능요구를 정의하고 요구분석서 기반으로 개발
  • 순서도 기반 RESTful 설계로 엔트포인트를 선정의하여 개발시 팀원들 코드간의 연결 용이
  • ERD Cloud를 사용하여 팀원과 함께 데이터구조오류 검증,각 담당 테이블의 PK,FK,제약조건등 확인
  • Figma로 화면설계서 작성 팀원간의 디자인 통일
  • 노션으로 회의록작성 및 각종 참고문서 정리
  • 디스코드와 카카오톡으로 팀원간 질의응답,일정조율 활성화

7. 개발 결과 및 회고

결과

  • 문서기반 개발을 성공적으로 수행

회고

  • 핵심 원리 체득: Spring MVC 요청 흐름, @RequestParam 기반 QueryParameter 전달, RESTful GET/POST 설계 등을 이해.
  • 템플릿 기반 개발 효율: Thymeleaf로 화면을 동적으로 구성하면서 서버사이드 렌더링의 장점을 체감.
  • 데이터 계층 설계 감각 향상: JPA 리포지토리와 QueryDSL 병행으로 가독성·확장성 좋은 조회 레이어를 정리.
  • 배포 자동화 경험 축적: GitHub Actions + Docker + DockerHub + 서버 컨테이너까지 CI/CD 전 과정을 직접 구축하며 자동화 파이프라인을 익힘.

8. 스크린샷

  • 메인화면

  • CI/CD

  • ERD

  • 카테고리별 영양제 조회


  • 영양제 상세정보


  • 영양제 원료정보


  • 영양제 조합


  • 영양제 추천설문


  • 약국추천


  • 리뷰게시판


  • 건강뉴스




댓글 작성

0 / 1000자

댓글 목록 (0)