Categories: 개발일지

웹 개발 FitOn 팀 프로젝트 회고

서론

현대인들은 점점 더 운동과 건강에 대한 관심을 가지고 있으며, 이를 체계적으로 관리하고 공유할 수 있는 플랫폼의 필요성이 커지고 있습니다. 이러한 요구를 충족시키기 위해 우리 팀은 FitOn이라는 운동과 건강 관련 쇼핑몰 및 커뮤니티 웹 서비스를 기획하고 개발했습니다.

이 프로젝트는 제가 팀장을 맡아 5명이 함께 진행했습니다. 프론트엔드에서는 React와 TypeScript, 백엔드에서는 Java와 Spring Boot를 사용하여 웹 서비스를 구축했습니다.

FitOn 프로젝트는 사용자가 운동 정보를 쉽게 찾고, 운동 루틴을 관리하며, 다양한 운동 용품을 편리하게 구매할 수 있는 종합 플랫폼을 목표로 했습니다. 이를 위해 다양한 기술 스택과 협업 도구를 활용하며 체계적으로 프로젝트를 진행했습니다. 프로젝트의 성공적인 완료와 함께 우리는 우수상을 수상하며 그 성과를 인정받았습니다.

이번 프로젝트를 통해 팀원들은 실무에서 요구되는 기술과 협업 능력을 강화할 수 있었으며, 이러한 경험은 앞으로의 개발에 큰 자산이 될 것입니다.

프로젝트 과정

프로젝트 설명

수강 중인 과정에서 총 두 번의 프로젝트가 진행되었습니다.

그 중 두 번째 프로젝트이고, 첫 번째 프로젝트에 이어 두 번째 프로젝트에서도 팀장을 맡아 프로젝트를 진행하게 되었습니다.

  • 주제 : 운동과 건강 관련 쇼핑몰 및 종합 커뮤니티 웹 서비스 FitOn
  • 기간 : 2024.04.04 ~ 2024.05.30 / 2024.07.01 ~ 2024.07.31
  • 인원 : 5명
  • 내용 : 프론트엔드(React, TypeScript) 백엔드(Java, Spring Boot) 기술을 활용한 웹 개발

기술 스택

  • Front-End : React / TypeScript / Styled-Component / React-MUI / React-Quill
  • Back-End : Java / Spring Boot / Gradle / MySQL / Mybatis / AWS
  • Tools : IntelliJ IDEA / VS CODE / Figma
  • etc. : Github / Notion / Discord

프로젝트 목적

운동과 건강에 대한 관심이 증가하면서 많은 사람들이 체계적으로 운동 정보를 얻고, 운동 루틴을 기록하며, 운동 관련 용품을 쇼핑할 수 있는 종합적인 플랫폼의 필요성을 느끼게 되었습니다. 이를 위해 사용자가 다양한 운동 정보를 쉽게 찾고, 운동 루틴을 관리하며, 운동 용품을 편리하게 구매할 수 있는 플랫폼을 기획하게 되었습니다.

프로젝트 기능

  • 사용자들이 운동 관련 정보를 쉽게 찾을 수 있도록 다양한 운동 루틴, 운동 팁, 운동 관련 정보를 제공하는 게시판을 구현했습니다.
  • 운동을 하면서 겪는 어려움이나 성과를 공유하고, 서로 조언을 나눌 수 있는 커뮤니티를 구축하여 사용자들이 서로 소통하고 동기부여를 받을 수 있도록 했습니다.
  • 운동용품, 보충제, 식품 등을 구매할 수 있는 쇼핑몰이 있습니다. 사용자는 다양한 상품을 한 곳에서 비교하고, 리뷰를 확인하며 다양한 운동 관련 용품을 쇼핑할 수 있습니다.
  • 사용자 편의를 위해 일반 로그인뿐만 아니라 Google, Kakao, Naver 소셜 로그인 기능을 지원하며, 사용자가 자신의 개인 설정, 운동 루틴 등을 관리할 수 있는 마이 페이지를 제공합니다.
  • 플랫폼의 효율적인 관리를 위해 관리자 페이지를 제공하여 게시판, 사용자, 상품 등을 관리할 수 있습니다.

분담

내가 맡은 파트
  • 프론트엔드
    • 마이페이지
  • 백엔드
    • 데이터베이스 설계
    • RESTful API 설계 및 구현
    • 로그인 회원가입 및 권한
    • 마이페이지 기능 구현
    • 구글, 네이버, 카카오 소셜 로그인 API
    • Spring Security, JWT 토큰 인증
  • 기타
    • PPT 제작 및 발표

협업

깃허브, 노션, 디스코드를 활용한 협업

Github

버전 관리 및 코드 리뷰: 모든 팀원은 Github를 사용하여 각자의 작업 내용을 버전 관리하였고, 이를 통해 코드 리뷰를 수행하여 코드 품질을 높였습니다. 각 기능 개발 후 Pull Request를 통해 다른 팀원들의 리뷰를 받고, 피드백을 반영하여 코드의 완성도를 높였습니다.

Notion

프로젝트 관리 및 문서화: Notion을 통해 프로젝트의 모든 문서와 정보를 중앙에서 관리했습니다. 프로젝트 계획, 일정 관리, 회의록, 기술 문서 등을 체계적으로 정리하여 모든 팀원이 필요할 때 쉽게 접근할 수 있도록 했습니다.

Discord

실시간 커뮤니케이션: Discord를 사용하여 팀원 간의 실시간 커뮤니케이션을 활성화했습니다. 프로젝트 진행 중 발생하는 문제를 신속히 해결하고, 필요한 경우 회의 및 미팅을 통해 의견을 교환했습니다.

발표

프로젝트 발표를 위해 발표 자료를 준비하였습니다.

팀 소개와 프로젝트 소개, 개발 환경, 개발 동기, 기획 의도, 프로젝트 상세 설명, 기술 설명 등으로 구성해 발표하였고 프로젝트 시연과 Q&A 로 발표를 마무리 하였습니다.

프로젝트 종료

팀원 모두의 열정과 노력 덕분에 우리는 우수상을 수상하며 프로젝트를 마무리할 수 있었습니다.

모든 팀원이 각자의 역할을 충실히 수행하여 프로젝트의 완성도를 높였고, 협업을 통해 발생한 다양한 문제들을 해결하며 팀워크를 강화했습니다. 프로젝트 기간 동안 얻은 경험과 성과는 앞으로의 개발에 큰 자산이 될 것입니다.

이번 프로젝트를 통해 우리는 실무에서 요구되는 기술과 협업 능력을 강화할 수 있었으며, 최종적으로 만족스러운 결과를 얻을 수 있었습니다. 앞으로도 이러한 경험을 바탕으로 더욱 발전하는 개발자가 되기를 기대합니다.

KPT 회고

Keeper (유지할 점)

  • 컨벤션 준수: 팀원 모두가 코드 컨벤션을 준수하여 일관성 있는 코드를 유지할 수 있었습니다. 이를 통해 코드의 가독성과 유지보수성을 크게 향상시켰습니다.
  • 노션 협업: 프로젝트 전반의 문서화와 일정 관리를 노션을 통해 진행했습니다. 이를 통해 모든 팀원이 프로젝트 진행 상황을 명확히 파악하고 필요한 정보를 쉽게 접근할 수 있었습니다.
  • 디스코드 커뮤니케이션: 실시간 커뮤니케이션을 위해 디스코드를 사용했습니다. 발생하는 문제를 신속히 해결하고, 필요한 경우 바로 회의를 진행하여 효율적인 협업을 할 수 있었습니다.
  • 깃허브 협업: 모든 팀원이 깃허브를 통해 버전 관리를 철저히 하여 코드 리뷰를 효과적으로 수행했습니다. 이를 통해 코드의 품질을 높이고, 피드백을 반영하여 코드의 완성도를 향상시킬 수 있었습니다.

Problem (문제점)

  • 일정 관리: 프로젝트 진행 중 일정 관리에 어려움이 있어 일부 작업이 계획한 일정에 맞추기 어려웠습니다. 이로 인해 작업이 지연되어 마무리 단계에서 시간이 부족한 상황이 발생했습니다.
  • 문서화 부족: API 문서 및 기타 개발 관련 문서화가 다소 부족했던 부분이 있었습니다. 이는 유지보수 시에 어려움을 초래할 수 있음을 깨달았습니다.

Try (시도할 점)

  • 체계적 문서화: 앞으로는 문서화를 더욱 체계적이고 구체적으로 진행해야겠습니다. 명확한 API 문서와 개발 관련 문서를 작성하여 누구나 쉽게 이해하고 활용할 수 있도록 노력할 것입니다.
  • 일정 관리 개선: 일정 관리를 더욱 철저히 하여 계획된 일정에 맞추어 작업을 진행할 수 있도록 하겠습니다. 이를 위해 프로젝트 시작 단계에서 세부 일정을 보다 명확히 하고, 주기적인 점검을 통해 일정을 조정하겠습니다.
  • 다양한 협업 툴 사용: 현재 사용 중인 협업 툴 외에도 다양한 협업 툴을 시도해보겠습니다. 이를 통해 더 효율적인 협업 방식을 찾고, 팀원 간의 커뮤니케이션을 더욱 원활하게 할 수 있을 것입니다.

마무리

FitOn 프로젝트는 팀원들의 열정과 노력으로 성공적으로 마무리되었습니다. 우리는 각자의 역할을 충실히 수행하며, 협업을 통해 다양한 문제들을 해결하고 프로젝트의 완성도를 높일 수 있었습니다.

프로젝트 기간 동안 우리는 많은 도전을 경험했고, 이를 통해 실무에서 요구되는 기술과 협업 능력을 크게 향상시킬 수 있었습니다. 프로젝트가 끝난 후, 우리 팀은 우수상을 수상하며 그 성과를 인정받았고, 이러한 경험은 앞으로의 개발에 큰 자산이 될 것입니다.

앞으로도 우리는 이번 프로젝트에서 얻은 경험과 교훈을 바탕으로 더욱 발전하는 개발자가 되기를 기대합니다. 지속적인 학습과 성장을 통해 더 나은 서비스를 제공하며, 기술적으로나 개인적으로나 계속해서 성장할 수 있도록 노력할 것입니다.

suover

Recent Posts

Java 자바 Enum 열거형 사용법

Enum이란? Enum은 "enumeration"의 줄임말로, 특정 값들의 집합을 정의할 수 있는 특별한 클래스입니다. 예를 들어, 요일,…

4주 ago

Java 자바 래퍼 클래스(Wrapper Class)란? 래퍼 클래스의 필요성

래퍼 클래스(Wrapper Class)란? 자바에서 래퍼 클래스는 기본 데이터 타입(Primitive Data Type)을 객체(Object)로 감싸는 클래스입니다. 자바의…

4주 ago

Java 자바 StringBuilder 개념 및 특징 주요 메소드

서론 Java에서 문자열을 다룰 때, 문자열의 변경이 빈번하게 발생하는 경우라면 StringBuilder 클래스를 사용하는 것이 매우…

1개월 ago

Java 자바 String 클래스 특징 및 메소드

String 클래스란? 자바에서 String 클래스는 가장 널리 사용되는 클래스 중 하나입니다. 문자열 시퀀스를 나타내며, 문자열을…

2개월 ago

Java 자바 불변 객체(Immutable Object) 개념 정리

불변 객체란? 불변 객체(Immutable Object)는 생성된 이후 그 상태를 변경할 수 없는 객체를 의미합니다. 불변…

2개월 ago

Java 자바 Object 클래스와 메소드

Object 란? 자바에서 Object 클래스는 모든 클래스의 최상위 부모 클래스입니다. 모든 자바 클래스는 명시적으로 다른…

2개월 ago