API를 통해 사용자가 면접 일정 캘린더를 관리할 수 있도록 지원하는 서비스
Method | URI | Request Header | Query String | Request Body | Code |
---|---|---|---|---|---|
GET | /calendar/interviews | Authorization: Bearer <token> |
interviewDetailId?: string name?: string yearMonth?: string |
200: 성공 400: 잘못된 요청 401: 권한 없음 404: 면접 일정 없음 |
|
POST | /calendar/interviews | Authorization: Bearer <token> |
name: string date: date location: string |
200: 성공 400: 잘못된 요청 401: 권한 없음 404: 면접 일정 없음 |
|
DELETE | /calendar/interviews | Authorization: Bearer <token> |
interviewDetailId: string | 200: 성공 400: 잘못된 요청 401: 권한 없음 404: 면접 일정 없음 |
|
PUT | /calendar/interviews | Authorization: Bearer <token> |
interviewDetailId: string | name?: string date?: date location?: string |
200: 성공 400: 잘못된 요청 401: 권한 없음 404: 면접 일정 없음 |
면접 캘린더 서비스의 주요 기능을 사용자 관점에서 정의한 유즈케이스 다이어그램입니다. 사용자는 면접 일정을 조회·등록·수정·삭제할 수 있습니다.
위 다이어그램은 면접 캘린더 서비스의 데이터 흐름을 나타낸 것입니다. 사용자의 이벤트 발생(조회, 저장, 수정, 삭제)은 프론트엔드(React)를 통해 REST API로 전달되며, Spring Boot 서버는 JWT 기반 인증 후 MongoDB와 연동하여 데이터를 처리합니다. 처리 결과는 다시 사용자에게 반환됩니다.
# build
$ docker build -t my-image .
# run
$ docker run --env-file .env -p 8080:8080 my-image:latest
# Gradle 빌드 수행 (테스트 제외하고 빌드)
$ ./gradlew clean build -x test --no-daemon
# 빌드된 JAR 파일을 실행
$ java -jar build/libs/calendar-0.0.1-SNAPSHOT.jar
Layered Architecture
calendar
├─ .devcontainer
│ ├─ .dockerignore
│ └─ Dockerfile
├─ .gitattributes
├─ .gitconfig
├─ .github
│ ├─ auto-assign-config.yml
│ ├─ rulesets
│ │ └─ Main-Rule.json
│ ├─ swagger-index.html
│ └─ workflows
│ ├─ auto-assign.yml
│ ├─ generate-swagger.yml
│ └─ gradle-build.yml
├─ .gitignore
├─ .gitmessage
├─ Dockerfile
├─ gradle
│ └─ wrapper
│ ├─ gradle-wrapper.jar
│ └─ gradle-wrapper.properties
├─ gradlew
├─ gradlew.bat
├─ README.md
├─ setup.ps1
├─ setup.zsh
└─ src
├─ .gitkeep
├─ main
│ ├─ java
│ │ └─ com
│ │ └─ pickme
│ │ └─ calendar
│ │ ├─ CalendarApplication.java
│ │ ├─ config
│ │ │ ├─ MongodbConfig.java
│ │ │ ├─ security
│ │ │ │ └─ JwtInterceptor.java
│ │ │ ├─ SwaggerConfig.java
│ │ │ └─ WebConfig.java
│ │ ├─ controller
│ │ │ └─ CalendarController.java
│ │ ├─ dto
│ │ │ ├─ get
│ │ │ │ ├─ GetCalendarDTO.java
│ │ │ │ ├─ GetCompanyDTO.java
│ │ │ │ └─ GetInterviewDetailDTO.java
│ │ │ ├─ post
│ │ │ │ ├─ PostCompanyDTO.java
│ │ │ │ └─ PostInterviewDetailDTO.java
│ │ │ └─ put
│ │ │ ├─ PutCompanyDTO.java
│ │ │ └─ PutInterviewDetailDTO.java
│ │ ├─ entity
│ │ │ └─ Calendar.java
│ │ ├─ exception
│ │ │ ├─ CustomException.java
│ │ │ ├─ ErrorCode.java
│ │ │ └─ GlobalExceptionHandler.java
│ │ ├─ repository
│ │ │ ├─ CalendarMongoQueryProcessor.java
│ │ │ └─ CalendarRepository.java
│ │ └─ service
│ │ ├─ CalendarService.java
│ │ ├─ JwtService.java
│ │ └─ mapper
│ │ └─ CalendarMapper.java
│ └─ resources
│ ├─ application-mongodb.properties
│ ├─ application-mysql.properties
│ ├─ application.properties
│ ├─ static
│ └─ templates
└─ test
└─ java
└─ com
└─ pickme
└─ calendar
└─ CalendarApplicationTests.java