제이엠/김정민
소리/오소윤
제로/정규은
우변/양우영
페이커/선준우
Back-End (팀장)
Back-End
Back-End
Back-End
Back-End
백엔드 총괄 초기 세팅 알림 기능 구현
과제 관련 기능 구현
팀 과제 세부 기능 구현
로그인 기능 구현 배포 및 운영 환경 구성
유저 관련 기능 구현
Category
Technology
Description
Language
서버 사이드 비즈니스 로직 처리 및 API 서버 구축
Web Server
리버스 프록시 설정을 통한 보안 및 API 요청 전달
Database
관계형 데이터베이스를 활용한 데이터 관리 및 CRUD 처리
Compute
클라우드 가상 서버 인스턴스를 통한 애플리케이션 호스팅
Storage
사용자 업로드 파일(이미지, 문서 등) 저장 및 객체 URL 관리
CI/CD
코드 변경 시 자동 빌드, 테스트 및 서버 자동 배포 환경 구축
🏗 Service Architecture Flow
Request : Vercel(Next.js)에서 발생한 API 요청이 NGINX로 인입됩니다.
Proxy : NGINX는 해당 요청을 내부 Node.js 서버로 안전하게 전달합니다.
Logic & DB : Node.js에서 비즈니스 로직을 처리하며 MySQL과 통신하여 데이터를 관리합니다.
File Control : 파일 업로드 시 AWS S3와 통신하여 파일을 관리하고 객체 URL을 반환받습니다.
BACKEND
├── .github/ # GitHub Actions (CI/CD)
│ └── workflows/
│ ├── ci-develop.yaml
│ └── cd-develop.yml
│
├── prisma/ # Prisma ORM 설정
│ ├── schema.prisma
│ └── seed.js
│
├── src/
│ ├── config/ # 인증, CORS, JWT, Redis, S3 등 환경 설정
│ ├── controllers/ # 요청/응답 처리 (입력값 검증)
│ ├── services/ # 비즈니스 로직 (에러 처리 포함)
│ ├── repositories/ # DB 접근 계층
│ ├── dtos/ # 요청/응답 데이터 구조 정의
│ ├── middlewares/ # 인증, 에러 핸들링 등
│ ├── routes/ # API 라우팅 정의
│ ├── socket/ # Socket.IO 이벤트 처리
│ ├── swagger/ # Swagger 문서 설정
│ ├── utils/ # 공통 유틸 함수
│ ├── errors/ # 커스텀 에러 정의
│ ├── docs/ # Swagger YAML 문서
│ ├── server.js # Express + Socket 서버 설정
│ ├── index.js # 서버 실행 진입점
│ └── db.config.js # Prisma DB 설정
│
├── .env # 환경 변수
├── package.json
└── README.md
# Database (MySQL)
DATABASE_HOST = localhost
DATABASE_PORT = 3306
DATABASE_USER = your_db_user
DATABASE_PASSWORD = your_db_password
DATABASE_NAME = your_db_name
# Prisma에서 사용하는 DB URL
DATABASE_URL = " mysql://USER:PASSWORD@HOST:3306/DB_NAME"
# Server
PORT = 8000
NODE_ENV = development
# JWT
JWT_SECRET = your_jwt_secret_key
# Kakao OAuth
PASSPORT_KAKAO_CLIENT_ID = your_kakao_client_id
PASSPORT_KAKAO_CLIENT_SECRET = your_kakao_client_secret
KAKAO_CALLBACK_URL = http://localhost:8000/api/v1/auth/kakao/callback
# AWS S3
AWS_REGION = aws_region_name
AWS_ACCESS_KEY = your_aws_access_key
AWS_SECRET_ACCESS_KEY = your_aws_secret_access_key
# Frontend Redirect URL
FRONTEND_LOCAL = ...
FRONTEND_VERCEL = ...
# Session
SESSION_SECRET = your_session_secret
# Redis
REDIS_URL = redis://localhost:....
npm run seed || npx prisma db seed
브랜치명
설명
명명 규칙 예시
main
실제 배포되어 운영되는 서버의 코드
main
develop
다음 배포를 위해 개발된 기능들이 통합되는 브랜치
develop
feature
단위 기능 개발을 위한 브랜치 develop에서 분기
feature/issue-번호
브랜치명
설명
Feat
새로운 기능 추가
Fix
오류/버그 수정
Refactor
내부 구조 개선
issue 생성
작업 전, GitHub Issue 탭에서 할 일을 등록
작업할 내용 작성 후 Assignees(담당자) 지정
Branch 생성
develop으로 병합되는 작업 Branch 생성
작업 및 Push
기능 구현 후 약속된 컨벤션에 맞춰 커밋 진행
작업 브랜치를 원격 저장소에 올림
Pull Request(PR)
GitHub에서 작업 Branch -> develop 브랜치로 PR을 생성
PR 템플릿에 맞춰 작업 내용, 변경 사항, 결과 등을 작성
Reviewer(팀원)을 지정하여 코드 리뷰 요청
Review & Merge
//성공 시
{
"resultType" : " SUCCESS" ,
"message" : " string"
"data" : {
...
}
}
// 실패 시
{
"resultType" : " FAIL" ,
"code" : 500 ,
"errorCode" : " INTERNAL_SERVER_ERROR" ,
"reason" : " 서버 내부 오류가 발생했습니다" ,
"data" : null
}
Base Class
설명
CustomError
모든 에러의 부모 클래스 (statusCode, errorCode, reason, data 포함)
Status Code
Default Error Code
기본 메시지
400
BAD_REQUEST
잘못된 요청입니다
401
UNAUTHORIZED
인증에 실패했습니다
403
FORBIDDEN
접근 권한이 없습니다
404
NOT_FOUND
리소스를 찾을 수 없습니다
500
INTERNAL_SERVER_ERROR
서버 내부 오류가 발생했습니다
기능명
Method
Endpoint
설명
카카오 로그인
GET
/api/v1/auth/kakao
카카오 OAuth 로그인 요청
Access Token 재발급
POST
/api/v1/auth/refresh
Refresh Token 기반 Access Token 재발급
기능명
Method
Endpoint
설명
과제 생성
POST
/api/v1/task
개인/팀 과제 생성
과제 목록 조회
GET
/api/v1/task
필터링(개인/팀/마감일/진척도 등) 기반 과제 조회
과제 상세조회
GET
/api/v1/task/{taskId}
과제 + 세부과제 + 자료 + 커뮤니케이션 통합 조회
과제 수정
PATCH
/api/v1/task/{taskId}
과제 정보 수정
과제 삭제
DELETE
/api/v1/task/{taskId}
과제 삭제
세부 과제 상태 변경
PATCH
/api/v1/task/subtask/{subTaskId}/status
세부과제 완료/진행 상태 변경
팀원 초대 링크 생성
POST
/api/v1/task/{taskId}/invitation
팀 과제 초대 URL 생성
기능명
Method
Endpoint
설명
알림 목록 조회
GET
/api/v1/alarm
현재 사용자 알림 목록 조회
알림 읽기 처리
PATCH
/api/v1/alarm/{alarmId}
특정 알림 읽음 처리
알림 전체 삭제
DELETE
/api/v1/alarm/all
모든 알림 삭제
알림 설정 변경
PATCH
/api/v1/alarm/settings/task
사용자 알림 설정 변경
기능명
Method
Endpoint
설명
내 정보 조회
GET
/api/v1/user/me
로그인 사용자 정보 조회
프로필 수정
PATCH
/api/v1/user/profile
닉네임 등 사용자 정보 수정
폴더 생성
POST
/api/v1/user/folder
사용자 폴더 생성
폴더 조회
GET
/api/v1/user/folder
사용자 폴더 목록 조회
기능명
Method
Endpoint
설명
자료 추가
POST
/api/v1/reference/data/{taskId}
URL 또는 파일 자료 업로드
커뮤니케이션 생성
POST
/api/v1/reference/communication/{taskId}
과제별 커뮤니케이션 생성
회의록 생성
POST
/api/v1/reference/log/{taskId}
과제 회의록 작성