- 일정 관리(등록, 수정, 삭제)
- 일정 시작 날짜와 끝나는 날짜를 등록
- 일정에 관련된 사람도 등록(Asignee)
- 다른 사용자를 이름으로 검색
- 일정 상세 관리
- 진행 여부에 따라 Todo, In Progress, Done
- 중요도에 따라 Low, Medium, High, Urgent
- 전체 일정 월별 조회(Calendar), 전체 일정 주간 조회(Overview Period), 전체 일정 일별 조회(Overview Daily), 나와 관련된 일정 조회(Kanban)
- 관리자 권한
- 권한(Role) 변경 및 모든 사용자의 일정을 수정, 삭제 가능
- 모든 사용자의 정보 조회 가능(비밀번호 제외)
- 일정 통계 조회(DashBoad)
- 최근 일주일동안 생성된 일정의 진행여부 통계(Progress)
- 최근 2주일동안 진행 완료된 일정의 통계(Performance)
- 최근 일주일 일정 조회(Latest Task)
| 사용 기술 | 기술 설명 |
|---|---|
| JPA | 자바에서 객체와 관계형 데이터베이스를 매핑하기 위해 사용 |
| Spring Security | 인증, 인가를 관리하기 위해 사용 |
| Docker | 애플리케이션을 컨테이너화하여 같은 환경에서 배포 및 실행하기 위해 사용 |
| Jenkins | CI/CD |
| JWT | JWT를 쉽게 만들고 검증하기 위해 사용 |
| JUnit | 단위 테스트를 위해 사용(Mockito와 함께) |
| JaCoCo | 테스트 커버리지를 측정하기 위해 사용 |
| Lombok | 반복적인 코드 작성(getter, constructor등)을 줄이기 위해 사용 |
| MySQL | 가장 익숙한 RDBMS로, 데이터 저장 및 검색을 위해 사용 |
| S3 | 프로필 이미지를 업로드하기 위해 사용 |
- Timestamp
- 매번 createdAt, updatedAt 멤버 변수와 메소드를 만들어줘야 하는 문제
- 메인 메소드 클래스에
@EnableJpaAuditing을 붙이고 Timestamped라는 추상화 클래스를 만들어서 createdAt, updatedAt이 필요한 엔티티가 상속받아서 사용
- ZonedDateTime
- LocalDateTime을 쓰면 서버 시간에 맞춰지는 문제 → 서버 타임존을 변경해야 함
- ZonedDateTime을 쓰고 ZoneId를 전역 변수로 설정해서 타임존을 고정함
- Logout 처리
- access token의 만료기간을 로그아웃한 시점보다 1초 전으로 변경하여 만료시킴
- Pageable 쓸 때 join fetch 문제
- Pageable을 쓸 때 join fetch를 하게 되면 countQuery를 별도로 적어줘야 하는 문제
- countQuery를 사용할 때 조건(where)을 따로 적어주지 않아도 value의 조건을 가져옴
- 일정 작성 시 시작 날짜가 끝나는 날짜보다 뒤일 경우
- request DTO에서 boolean으로 @AssertTrue로 검증
| 포지션 | 이름 | 담당 | GitHub |
|---|---|---|---|
BE 팀장 |
박주영 | - CI / CD - 로그인 / 로그아웃 - 유저 조회 / 검색 - 개인정보 수정 - 일정 CRUD - 프로필 업로드(S3) |
https://github.com/ju-ei8ht |
BE |
이윤형 | - 회원 권한 수정 - 대시보드 통계 - 칸반보드 READ - 달력 페이지 |
https://github.com/Lee-yh2 |
BE |
김형준 | - 회원가입 | https://github.com/jerok-kim |
BE |
예병창 | - 비밀번호 확인 - 이메일 중복 |
https://github.com/KORYEcan |

