![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| 제이엠/김정민 | 소리/오소윤 | 제로/정규은 | 우변/양우영 | 페이커/선준우 |
| Back-End (팀장) | Back-End | Back-End | Back-End | Back-End |
| 백엔드 총괄 초기 세팅 알림 기능 구현 |
과제 관련 기능 구현 | 팀 과제 세부 기능 구현 | 로그인 기능 구현 배포 및 운영 환경 구성 |
유저 관련 기능 구현 |
- 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.mdnpm install# 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 migrate:devnpm run seed || npx prisma db seednpm run devnpm start| 브랜치명 | 설명 | 명명 규칙 예시 |
|---|---|---|
| main | 실제 배포되어 운영되는 서버의 코드 | main |
| develop | 다음 배포를 위해 개발된 기능들이 통합되는 브랜치 | develop |
| feature | 단위 기능 개발을 위한 브랜치 develop에서 분기 | eature/issue-번호 |
- 브랜치명:
커밋유형/이슈번호
| 브랜치명 | 설명 |
|---|---|
| Feat | 새로운 기능 추가 |
| Fix | 오류/버그 수정 |
| Refactor | 내부 구조 개선 |
- issue 생성
- 작업 전, GitHub Issue 탭에서 할 일을 등록
- 작업할 내용 작성 후 Assignees(담당자) 지정
- Branch 생성
develop으로 병합되는 작업Branch생성
- 작업 및 Push
- 기능 구현 후 약속된 컨벤션에 맞춰 커밋 진행
- 작업 브랜치를 원격 저장소에 올림
- Pull Request(PR)
- GitHub에서 작업
Branch->develop브랜치로 PR을 생성 - PR 템플릿에 맞춰 작업 내용, 변경 사항, 결과 등을 작성
- Reviewer(팀원)을 지정하여 코드 리뷰 요청
- GitHub에서 작업
- 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} |
과제 회의록 작성 |




