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 자바 Set – HashSet, TreeSet, LinkedHashSet 정리

소개 자바에서 Set은 중복을 허용하지 않는 데이터 집합을 의미합니다. List와 달리 동일한 요소를 여러 번…

1개월 ago

Java 자바 Hash 해시 제대로 이해하기

해시(Hash)란 무엇인가? 해시(Hash)는 자바 프로그래밍에서 빠르고 효율적인 데이터 저장 및 검색을 위한 핵심적인 개념입니다. 이…

2개월 ago

Java 자바 리스트 (List) 정리

List란 무엇인가? List는 자바 컬렉션 프레임워크의 핵심 인터페이스 중 하나로, 순서가 있는 데이터를 다루는 데…

2개월 ago

Java 자바 LinkedList 동작 원리와 사용법

LinkedList란 무엇인가? LinkedList는 자바에서 유용하게 사용되는 자료구조 중 하나로, 연결 리스트 방식을 이용하여 데이터를 관리하는…

2개월 ago

Java 자바 ArrayList 동작 원리와 사용법

ArrayList란 무엇인가? ArrayList는 자바에서 가장 널리 사용되는 컬렉션 중 하나로, 가변 크기의 배열을 구현한 클래스입니다.…

2개월 ago

Java 자바 제네릭(Generic) 개념과 문법 알아보기

제네릭(Generic)이란? 자바 제네릭은 코드의 재사용성을 높이고 타입 안전성을 보장하는 중요한 개념입니다. 이 블로그 글에서는 자바…

2개월 ago