- 금오공과대학교 개발 동아리 '금오사이'에서 개발한 교내 공식 풋살장 예약 관리 서비스입니다.
- 기존에 사용하던 교내 예약 서비스는 불편한 예약 프로세스를 가지고 있었기에, 이를 간편하고 빠르게 예약하고 싶다는 요구사항에서 시작되었습니다.
- 총학생회 측에서 용이한 체육시설 관리, 각 동아리 사용자의 공평한 예약을 위해 개발되었습니다.
- 본 레포지토리는 기존 금오사이 풋살장 서비스를 리팩토링한 서버를 명세합니다.
| 이지현 | 김현진 | 노현이 | 최주혁 | 김선진 |
|---|---|---|---|---|
@journeybongbong |
@badasskim |
@hyunoi |
@Juhye0k |
@gimseonjin |
- Node.js (18.x)
- Framework : Nest.js (10.x)
- IDE : Vscode
- Database : Mysql 8.0
- Deployment : AWS EC2, ECR, Docker
- Static Analysis Tool : SonarLint
- Jira, Notion, Slack
- typescript 기반 웹 프레임워크로 타입 검사, 의존성 주입 등으로 코드 재사용성을 꾀했습니다.
- Git-flow 전략을 기반으로 main, develop 브랜치와 feature 기능 브랜치로 간소화 하여 사용했습니다.
- main, develop, Feat 브랜치로 나누어 개발을 하였습니다.
- Main 브랜치는 최종 배포 단계에서만 사용하는 브랜치입니다. dev 브랜치에서 병합 시 github action으로 ci/cd 가 이루어집니다.
- Dev 브랜치는 개발 단계의 Feature 브랜치들의 집합 브랜치입니다.
- Feat 브랜치는 기능 단위로 독립적인 개발 환경을 위하여 사용하였습니다. Feature 브랜치명은 Jira Service의 각 ticket에 부여되는 고유 id로 작성하였습니다.
src
├── app.controller.ts
├── app.module.ts
├── app.service.ts
├── auth
│ ├── auth.controller.ts
│ ├── auth.module.ts
│ ├── auth.service.ts
│ ├── dto
│ │ └── create-user.dto.ts
│ └── jwt
│ ├── jwt.guard.ts
│ └── jwt.payload.ts
├── cache
│ ├── cache.module.ts
│ └── cache.service.ts
├── common
│ ├── decorators
│ │ ├── permission.guard.ts
│ │ └── user.decorator.ts
│ ├── dto
│ │ ├── inquiry-message.dto.ts
│ │ ├── members
│ │ │ └── members.dto.ts
│ │ ├── reservation
│ │ │ ├── block-reservation.dto.ts
│ │ │ ├── month-reservation-delete.dto.ts
│ │ │ ├── one-reservation-delete.dto.ts
│ │ │ ├── pre-reservation-set.dto.ts
│ │ │ └── register-reservation.dto.ts
│ │ └── user
│ │ ├── change-user.dto.ts
│ │ └── make-user.dto.ts
│ └── get-reservation.pipe.ts
├── config
│ └── swagger.config.ts
├── entites
│ ├── xe_member.entity.ts
│ ├── xe_member.futsal.entity.ts
│ ├── xe_reservation.entity.ts
│ ├── xe_reservation_config.entity.ts
│ ├── xe_reservation_cricle.entity.ts
│ ├── xe_reservation_major.entity.ts
│ ├── xe_reservation_member.entity.ts
│ ├── xe_reservation_pre.entity.ts
│ └── xe_reservation_time.entity.ts
├── main.ts
├── members
│ ├── members.controller.ts
│ ├── members.module.ts
│ └── members.service.ts
├── pipe
│ └── parse-int.pipe.ts
├── reservation
│ ├── official-reservation
│ │ ├── official-reservation.service.ts
│ │ └── official-reservation.transaction.repository.ts
│ ├── pre-reservation
│ │ ├── pre-reservation.service.ts
│ │ └── pre-reservation.transaction.repository.ts
│ ├── reservation-scheduler.ts
│ ├── reservation-slot.builder.ts
│ ├── reservation.controller.ts
│ ├── reservation.module.ts
│ ├── reservation.service.ts
│ └── time
│ ├── reservation-time.service.ts
│ └── reservation-time.transaction.repository.ts
├── serverless.ts
├── slack
│ ├── slack.controller.ts
│ ├── slack.module.ts
│ └── slack.service.ts
├── user
│ ├── user.controller.ts
│ ├── user.module.ts
│ └── user.service.ts
└── util
└── date-util.ts
- 기능
- 로그인 및 유효성 검사
- 슬랙 연동
- 유저 crud
- 예약 삭제, 예약자 조회, 사용자 조회/삭제
- 기능
- lambda 환경 세팅
- 도커 빌드 및 배포
- git CI/CD
- 스케줄러 설정
- 공휴일 구분
- 기능
- 정식/우선 예약 시작
- 우선 예약 재개/중지
- 우선 예약 시간 설정
- 예약 현황 조회
- 스웨거 연동
- 기능
- 로그인 해시 리팩토링
- 사전예약 재호출금지 구현
- 멘토
- 코드 리뷰


