Skip to content

구름톤 트레이닝 풀스택 7회차 파이널 프로젝트 구름방범대 팀의 이디핏입니다.

Notifications You must be signed in to change notification settings

junyoungkim12/FinalProject

 
 

Repository files navigation

이디핏 (Eadyfit) - 백엔드

banner

구름톤 트레이닝 풀스택 7회차 파이널 프로젝트 구름방범대 팀의 이디핏 입니다.


프로젝트 개요

이디핏(Eadyfit)은 운동을 처음 시작하는 사람들에게 유용한 웹사이트를 제공하기 위해 제작된 프로젝트입니다. 다양한 운동과 기구를 올바르게 사용하는 방법을 안내하고, 사용자들이 운동 기록과 식단 기록을 쉽게 관리할 수 있는 공간을 제공합니다. 이를 통해 사용자가 자신의 건강 목표를 효율적으로 달성할 수 있도록 돕습니다.

Notion 링크

프로젝트 이름: 이디핏 (Easy + Fitness)

프로젝트 진행 기간: 2024.06 ~ 2024.08

🎨 Frontend Members

역할 이름 담당 기능
팀장 예진희 로그인, 회원가입
팀원 이현기 운동 기록, 식단 기록
팀원 형성희 게시판, 데이터 시각화

🛠 Backend Members

역할 이름 담당 기능
팀원 김준영 운동 기록, 식단 기록
팀원 이승현 로그인, 회원가입, 게시판
팀원 윤창기 실시간 채팅 기능 (프론트도 진행)

ERD

erd

Notion 링크

기술 스택

기술 스택

  • 백엔드:

    • Java, Spring Boot, Spring MVC
    • MariaDB
    • REST API
    • JPA (Java Persistence API)
    • OAuth2, JWT
    • AWS (Amazon Web Services) - EC2, RDS
    • OpenAPI (식품의약품안전처)
  • 개발 도구:

    • Git, GitHub
    • Docker

주요 기능

주요 기능

  1. 운동 기록 관리 기능

    • 사용자가 운동 기록을 추가, 수정, 삭제할 수 있도록 지원합니다.
    • METs(Metabolic Equivalent of Task)를 이용하여 사용자가 선택한 운동의 칼로리 소모량을 자동으로 계산합니다.
  2. 식단 기록 관리 기능

    • 사용자가 일일 식단을 기록할 수 있으며, 각 음식의 영양 정보와 칼로리 섭취량을 확인할 수 있습니다.
    • 식품의약품안전처의 Open API를 활용하여 음식 데이터를 DB에 저장하고, 사용자가 식단을 기록할 때 정확한 칼로리 섭취량을 계산할 수 있도록 지원합니다.
  3. 사용자 인증 및 관리

    • OAuth2와 JWT(Json Web Token)를 이용한 사용자 인증 및 권한 관리 기능을 구현하여 보안성을 강화하였습니다.

기능 명세서

기능명세서


Notion 링크

기능 명세서

API 문서
Notion 링크

나의 역할


  • 저는 백엔드 개발자로서 운동 기록 관리식단 기록 관리 기능을 개발했습니다.
  • METs(Metabolic Equivalent of Task)를 이용한 칼로리 소모량 계산 기능을 구현하여 사용자가 선택한 운동의 칼로리 소모량을 자동으로 계산하도록 했습니다.
  • 식단 관리 기능에서 사용자가 기록하는 음식의 영양 정보를 제공하기 위해 식품의약품안전처의 Open API를 활용하여 DB에 저장하였고, 이를 통해 사용자가 정확한 칼로리 섭취량을 알 수 있도록 했습니다.

아쉬운 점, 개선 방안

아쉬운 점

  • 데이터베이스 접근 코드나 서비스 레이어에서 반복적으로 나타나는 패턴들이 존재하여 코드의 가독성과 유지보수성에 문제가 있었습니다.
  • 백엔드와 프론트엔드 간의 데이터 형식과 요구 사항을 맞추는 과정에서 일부 소통이 부족하여, 개발 초기의 API 인터페이스가 여러 번 변경되었습니다.

개선 방안

  • 반복되는 코드를 모듈화하고, 재사용 가능한 공통 메소드를 추출하여 코드의 중복을 줄이는 방향으로 개선했습니다.
  • 서비스 계층의 기능들을 좀 더 명확히 구분하고, 각 기능의 책임을 명확히 함으로써 코드의 가독성을 높이고 유지보수성을 개선했습니다.
  • 백엔드와 프론트엔드 팀원 간의 정기적인 회의와 소통 채널을 강화하여, API 인터페이스와 데이터 형식을 명확히 정의하고 개발 초기 단계에서 문제를 해결할 수 있도록 개선했습니다.

코드 리팩토링 경험

  • 프로젝트 중반 이후 코드 품질과 유지보수성을 높이기 위해 엔티티, DTO, 서비스 계층 전반에 대해 리팩토링을 진행하였습니다.
  • Setter 전체 허용 대신 불변 객체(@Getter, 빌더/생성자 패턴)로 통일하고, 엔티티에서는 필요한 필드에만 setter 또는 변경 메서드를 허용하도록 개선하였습니다.
  • DTO의 updateEntity 등 엔티티 변경/비즈니스 로직을 서비스 계층으로 분리하여, 계층 간 책임이 명확한 구조로 변경하였습니다.
  • 중복되는 데이터 처리 로직을 공통 메서드로 추출하고, 서비스 내 엔티티 값 변경 로직을 별도 메서드로 분리하여 코드 중복을 최소화했습니다.
  • JPA 표준(@NoArgsConstructor(access = PROTECTED), 컬렉션 초기화, Builder.Default 등) 적용 및 null-safe/Optional 패턴을 일관되게 사용하여 런타임 오류와 유지보수 리스크를 줄였습니다.
  • 코드 리뷰와 리팩토링 과정에서 팀원들과 코드 스타일, 네이밍 컨벤션, 표준화 방향을 합의하고, PR 메시지와 커밋 메시지도 일관된 템플릿으로 작성하여 협업 효율성을 높였습니다.

사용법

배포 URL

이디핏 웹사이트

로컬에서 실행하려고 할 때

  1. GitHub에서 코드를 다운로드합니다.
  2. 명령 프롬프트나 쉘을 열어 Finalproject/Backend 디렉토리로 이동합니다.
  3. 필요한 의존성을 설치합니다:
    ./gradlew build
    
    

About

구름톤 트레이닝 풀스택 7회차 파이널 프로젝트 구름방범대 팀의 이디핏입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 47.7%
  • Java 42.1%
  • SCSS 9.4%
  • Other 0.8%