Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TypeScript Node.js Express.js Prisma PostgreSQL

운동인증 커뮤니티 서비스 백엔드

목차

프로젝트 소개

  • 운동 인증 커뮤니티 서비스의 백엔드 시스템 구축
  • 그룹, 참여자, 운동 기록, 배지, 좋아요 기능
  • 프로젝트 기간: 2025.08.11 ~ 2025.08.29

구현한 웹페이지

주요 문서 & 자료

문서 링크
Swagger API 바로가기
팀 문서 (Notion) 바로가기
실행 영상 바로가기
최종 발표 PPT 바로가기
프론트엔드 레포지토리 바로가기

팀원

이상욱 김보경 엄규리 박형익 김태회

기술 스택

📂 기술 스택 보기
Category Stack Version
Language TypeScript 5.9.2
Runtime Node.js 22.17.0
Framework Express.js 5.1.0
ORM Prisma ORM 6.14.0
Database PostgreSQL 17.5
Auth Bcrypt 6.0.0
Validation Zod 4.0.17
File Upload Multer 2.0.2
Logger Morgan 1.10.1
Middleware CORS 2.8.5
Config Dotenv 17.2.1
API Docs Swagger UI Express 5.0.1
Test Vitest / Supertest 3.2.4 / 7.1.4
Lint / Format ESLint / Prettier 9.33.0 / 3.6.2
Git Hook Husky 9.1.7
Package Manager npm 10.x

팀원별 구현 기능 상세

이상욱 운동기록(조회/정렬/검색)

구현 내용 1 2 3 4 5 6

김보경 그룹 DB, 그룹(생성/수정/삭제)

📁 자세히 보기
그룹
등록
수정
삭제
이미지 업로드
참여자 인증
Husky 이용
Prettier
Lint
Build 자동화
Lint 규칙 설정
GitHub Actions CD 이용
백엔드 배포 자동화

+
AWS EC2 / RDS
Vercel(프론트)
그룹 & 이미지
Swagger문서 작성
및 파일 분리
gotty이용
서버 로그 실시간
웹뷰어 설정
ERD
Deployment Diagram
  • 참여자의 그룹 탈퇴 상황 케이스 처리
  • 그룹 응답 데이터 프론트와 일치시키는 매핑 개발
  • 배지 테스트를 위한 목업 데이터 만들기

엄규리 그룹(조회/정렬/검색)

ezgif-79107d9dacac90

박형익 그룹(배지/참여/추천)

-뱃지 표시 Image -추천 참여 api Image Image -orm최적화 Image

김태회 기록 DB, 운동기록(생성/수정/삭제)

개발 내용 - vitest를 통한 전체적인 기능점검 image image
  • 백앤드의 설정한 fields 값이 아닐경우 request를 reject한후 무슨 값이 필요한지 알려주는 기능
image
  • 직접 타이머 api를 구축해 실제로 UI 시작 종료를 누르는시간을 서버타임으로 계산후 검증기능 구축
image
  • 운동기록/사진 검증 및 등록 기능 구축

파일 구조

📂 파일 구조 보기
.
├── src
│   ├── app.ts
│   ├── config
│   │   └── db.ts
│   ├── controllers
│   │   ├── group
│   │   │   ├── create_group.controller.ts
│   │   │   ├── delete_group.controller.ts
│   │   │   ├── get_group_by_id.controller.ts
│   │   │   ├── get_group_mem_rank.controller.ts
│   │   │   ├── get_group.controller.ts
│   │   │   ├── index.ts
│   │   │   ├── join_group.controller.ts
│   │   │   ├── leave_group.controller.ts
│   │   │   ├── recommend_group.controller.ts
│   │   │   └── update_group.controller.ts
│   │   └── record.controller.ts
│   ├── generated
│   ├── index.ts
│   ├── middleware
│   │   ├── auth.middleware.ts
│   │   ├── error.middleware.ts
│   │   ├── group.middleware.ts
│   │   ├── index.ts
│   │   └── validate.middleware.ts
│   ├── models
│   │   ├── auth
│   │   │   ├── auth_request.model.ts
│   │   │   ├── auth_response.model.ts
│   │   │   └── index.ts
│   │   ├── error_response.model.ts
│   │   ├── group
│   │   │   ├── create_group.dto.ts
│   │   │   ├── delete_group.dto.ts
│   │   │   ├── group_response.dto.ts
│   │   │   ├── index.ts
│   │   │   └── update_group.dto.ts
│   │   └── upload
│   │       ├── upload_request.model.ts
│   │       └── upload_response.model.ts
│   ├── routes
│   │   ├── group.routes.ts
│   │   ├── record.routes.ts
│   │   ├── timer.routes.ts
│   │   ├── upload.route.ts
│   │   └── uploads
│   ├── services
│   │   ├── group
│   │   │   ├── badge_evaluation.service.ts
│   │   │   ├── create_group.service.ts
│   │   │   ├── delete_group.service.ts
│   │   │   ├── get_group_by_id.service.ts
│   │   │   ├── get_group_mem_rank.service.ts
│   │   │   ├── get_group.service.ts
│   │   │   ├── index.ts
│   │   │   ├── join_group.service.ts
│   │   │   ├── leave_group.service.ts
│   │   │   ├── recommend_group.service.ts
│   │   │   └── update_group.service.ts
│   │   └── record.service.ts
│   ├── swagger
│   │   ├── components
│   │   │   ├── examples
│   │   │   ├── index.yaml
│   │   │   ├── parameters
│   │   │   ├── responses
│   │   │   └── schemas
│   │   ├── info
│   │   │   └── index.yaml
│   │   ├── paths
│   │   │   ├── group
│   │   │   ├── index.yaml
│   │   │   ├── record
│   │   │   ├── timer
│   │   │   └── upload
│   │   ├── server
│   │   │   └── index.yaml
│   │   ├── swagger.yaml
│   │   └── tags
│   │       └── index.yaml
│   ├── tests
│   │   ├── api.test.ts
│   │   └── setup.ts
│   └── utils
│       ├── auth.util.ts
│       ├── discord.ts
│       ├── mappers
│       │   └── group.mapper.ts
│       ├── password.ts
│       └── timer.ts
├── test_webhook.js
├── test.txt
├── tsconfig.json
├── uploads
├── eslint.config.js
├── package-lock.json
├── package.json
├── README.md
├── seed.js
└── vitest.config.ts

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages