본문 바로가기
SAC

[새싹x코딩온] 풀스택 개발자 부트캠프 과정 16 주차 2차 팀프로젝트 -1

by 비너발트 2025. 2. 28.

본 글은 추가 보완 중입니다

 

프로젝트 설명

프로젝트 서비스명: 팀 플로우

카테고리: IT 협업 플랫폼

작업기간: 25. 02. 10일 ~ 02. 28일 

사용기술: Node.js, WebSocket, OAuth, nodemailer, MySQL

담당하게 된 역할: 백엔드

 

이 주제를 결정한 이유? 🤔

  • 재택근무와 온라인 협업이 증가함에 따라 효과적인 협업 툴에 대한 수요가 증가
  • 분산된 팀원들이 한 곳에서 소통하고, 작업을 체계적으로 진행할 수 있도록 지원하는 서비스가 필요

 

 

기능 확정

 

기능 확정

서비스에서 제공할 핵심 기능을 다음과 같이 확정했습니다.

  1. 워크스페이스 관리
    •  워크스페이스 생성 및 삭제
    •  초대 기능 (이메일 기반)
    •  권한 관리 (관리자, 멤버 구분)
  2. 칸반보드 기능
    •  업무 생성, 수정, 삭제
    •  상태 변경 (계획 → 진행중 → 완료)
    •  우선순위, 마감일 설정
  3. 채팅 기능
    •  실시간 채팅 (Socket.io 활용)
    •  메시지 저장 및 조회
    •  이모티콘 및 파일 업로드 기능
  4. 로그인 인증 및 보안
    •  세션 기반 passport 인증 시스템
    •  OAuth 소셜 로그인 카카오 지원
  5. 배포 전략
    •  개발 서버, 운영 서버, 로컬 서버 환경 분리
    •  AWS 클라우드 플랫폼 배포

 

기술 스택 및 아키텍처

  • 백엔드: Node.js, Express, WebSocket, OAuth, nodemailer, MySQL, Passport
  • 프론트엔드: Html, CSS, Bootstrap, Javascript, React

 

DB ERD

 

본 ERD는 워크스페이스 기반 협업 서비스를 위한 데이터 구조를 정의하는데

주요 기능으로는 워크스페이스 생성 및 초대, 칸반보드(Task 관리), 실시간 채팅이 있습니다.

 

ERD 주요 엔티티 및 관계

  • Users (사용자) → 로그인, 프로필 관리
  • Workspace (워크스페이스) → 협업 공간 생성 및 관리
  • Members (워크스페이스 참여자) → 사용자와 워크스페이스 간 N:N 관계
  • Todos (할 일 관리) → 작업 생성, 우선순위 설정, 마감일 지정
  • ChatRooms & Messages (채팅 시스템) → 실시간 채팅 및 파일 공유
  • Tags (태그 시스템) → 할 일(Task) 분류 및 검색 기능

 

데이터 관계 특징

  • Users ↔ Workspace (N:N 관계) → Members 테이블을 통해 연결
  • Workspace ↔ Todos (1:N 관계) → 한 워크스페이스에 여러 작업 가능
  • Todos ↔ Tags (N:N 관계) → 중간 테이블(TodoTags)로 매핑
  •  Workspace ↔ ChatRooms ↔ Messages (1:N:N 관계) → 채팅방 내 메시지 전송

 

API 명세서

 

이 API는 사용자 인증, 워크스페이스 관리, 업무(Task) 관리, 실시간 채팅 등의 기능을 제공합니다.

이렇게 개발 전 미리 주 API를 작성하고 어떤 요청과 응답이 오고 가는지 정리하고 컨트롤러의 함수명이나 라우팅 경로 개발 및 테스트 여부를 작성함으로써 다른 팀원과 충돌 없이 원활하게 개발에 임할 수 있었습니다

 

내가 맡은 작업

  • 워크스페이스 작업
  • 업무(칸반보드) 작업
  • 이메일 미들웨어 작업
  • 개발 인프라 환경구성

 

1차 프로젝트에서 경험했던 기억을 되살려 체계적인 협업환경을 구성하였습니다 그리고 이번에 새롭게 배우게 된 리액트를 사용하게 됨으로써 프론트와 백엔드간 서비스테스트에 상당한 애로사항이 발생할 것이라고 예상됐기에 개발 간 중간 Develop 서버를 배치해 백엔드와 프론트엔드 간 최신화된 코드를 배포하여 테스트를 해볼 수 있어 실제 운영서버에 배포할 때 발생하는 오류를 미리 체크할 수 있었습니다