VitaMatch
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

- 카테고리별 영양제 조회

- 영양제 상세정보

- 영양제 원료정보

- 영양제 조합

- 영양제 추천설문

- 약국추천

- 리뷰게시판

- 건강뉴스

댓글 작성