마감 기한에 맞춰 후닥닥 프로젝트를 완성하다 보니 지피티 범벅인 프로젝트가 되어버렸다.
팀원분이 코드를 설명해달라고 했는데 내가 짠 코드를 설명하지 못하는 상황에 직면..
프로젝트가 끝난 지금 조금 여유가 생겨 적어도 내가 짠 부분의 코드는 알아두고자 하여 처음부터 다시 해보기로 했다.
사용자 관리
회원가입 및 로그인 (JWT 인증 적용)
사용자 정보 수정 (닉네임 변경)
비밀번호 변경 및 비밀번호 찾기 기능
캘린더 관리 (핵심 기능)
캘린더 생성: 사용자가 새로운 캘린더를 생성할 수 있음
캘린더 조회: 사용자가 소유한 캘린더 목록을 확인할 수 있음
캘린더 수정: 캘린더 이름 및 설명을 수정할 수 있음
캘린더 삭제: 불필요한 캘린더를 삭제할 수 있음
캘린더 공유: 다른 사용자와 캘린더를 공유하고 권한을 설정할 수 있음
일정(Schedule) 관리
일정 추가 (제목, 설명, 날짜/시간, 장소 포함)
일정 수정 및 삭제 (캘린더 소유자 및 일정 작성자만 가능)
특정 캘린더의 일정 목록 조회
일정 상세 조회 및 참가자 관리
보안 및 인증
JWT 기반 로그인/회원가입 구현
Spring Security 적용 (API 보안 강화)
비밀번호 암호화 (BCrypt 사용)
우선은 프로젝트 내에서 맡은 파트가 캘린더 파트여서 캘린더 부분을 복기를 해보고 시간이 남으면 나머지도 해보겠슴.
캘린더 생성
캘린더 조회
캘린더 수정
캘린더 삭제
캘린더 공유 기능
생성된 캘린더가 없을 시 캘린더를 생성하라고 알려줌.
캘린더 생성
HTTP 메서드 : POST
URL : /api/calendars
요청
{
"name": "개인 일정",
"description": "2024년 개인 일정 관리"
}
반환
성공(201 Created)
{
"id": 1,
"name": "개인 일정",
"description": "2024년 개인 일정 관리",
"created_at": "2024-02-01T10:00:00"
}
캘린더 조회
HTTP 메서드 : GET
URL : /api/calendars
반환
성공(200 OK)
[
{
"id": 1,
"name": "개인 일정",
"description": "2024년 개인 일정 관리"
},
{
"id": 2,
"name": "업무 일정",
"description": "회사 일정 관리"
}
]
특정 캘린더 조회
HTTP 메서드 : GET
URL : /api/calendars/{id}
반환
성공(200 OK)
{
"id": 1,
"name": "개인 일정",
"description": "2024년 개인 일정 관리",
"created_at": "2024-02-01T10:00:00"
}
캘린더 수정
HTTP 메서드 : POST
URL : /api/calendars/{id}
요청
{
"name": "수정된 일정",
"description": "업데이트된 일정 정보"
}
반환
성공(200 OK)
{
"id": 1,
"name": "수정된 일정",
"description": "업데이트된 일정 정보",
"updated_at": "2024-02-01T12:00:00"
}
캘린더 삭제
HTTP 메서드 : DELETE
URL : /api/calendars/{id}
반환
성공(200 OK)
{
"message": "캘린더가 삭제되었습니다."
}
캘린더 공유
HTTP 메서드 : POST
URL : /api/calendars/{id}/share
요청
{
"user_id": 2,
"permission": "read"
}
반환
성공(200 OK)
{
"message": "캘린더가 사용자에게 공유되었습니다."
}


다음은 calendar 클래스를 만들어 보자. 코드를 짜며 개념 정리도 같이 기입하여보자.