API 설계 완료
ERD 설계 완료
회원가입/로그인 API 수정 완료
post CRUD API 수정 완료
comment CRUD API 기능 구현
메인 페이지 전체 조회 구현
프로젝트 모집 지원/지원 취소/모집 마감 구현
5월 1일 토요일에 기술 멘토링을 받고 일요일 새벽까지 API 설계를 다시 하는 등의 이슈가 있었다.
회원 정보를 조회하고 수정하는 간단한 기능만 담겼던 마이 페이지 부분에 기존의 2~3배 되는 API가 추가되었고, 앞서 미니 프로젝트와 클론코딩 때 했던 기본적인 CRUD에 여러 기능들이 추가되다보니 시행착오도 꽤 겪었던 것 같다.
솔직히 이번주에 코드를 짜는 것도 물론 쉬운 것은 아니었지만, 코드 외적으로 lombok이 인식이 안된다거나, mysql이 연동이 안된다거나 하는 등 프로그램 환경 설정과 관련된 이슈들이 연속으로 계속 생겼고 거기에 꽤 많은 시간을 뺏겨서 멘탈적으로 시간 압박을 계속 받았던 것 같다.
기술적으로 어려웠다기 보다는 비지니스 로직을 짤 때, 고려해야하는 점들이 많아서 어렵게 느껴졌던 것 같다.
상세 페이지에서 조회한 유저가 누구인지에 따라 버튼이 다르게 나타나야했다
- 로그인하지 않은 유저 : 지원하기 버튼 누르면 로그인 유도
- 로그인 한 유저
- 모집글 쓴 유저 : 지원자 목록 버튼
- 지원한 유저 : 취소하기 버튼
- 지원 수락된 유저 : 합류 완료 버튼
- 그냥 로그인만 한 유저 : 지원하기 버튼
enum으로 userStatus를 만들고, if-else문으로 각각의 상황에 맞춰 상세 페이지 조회시 userStatus value를 변경시켜서 내려보내줌
모집 마감시 프로젝트의 CurrentStatus 변경, 프로젝트 참가한 유저의 projectCount 수 올려주기
지원한 유저 중 수락된 유저들만 projectCount를 올려줌
지금 이렇게 정리하니까 간단해보이지만.... userStatus가 5개까지 늘어나게 될 것이라는 것과 userStatus에 따라 상세 페이지의 버튼이 다르게 보여야 한다는 것을 모집 지원 비지니스 로직을 짜면서야 생각하게 되서 조금 더 어렵게 느꼈던 것 같다.
기존의 CRUD는 그냥 한 API에 한 기능만이 담겨있었는데, 어렵게 느껴졌던 부분들을 한 API에서 이곳저곳 다른 entity의 상태를 변경시켜줘야했어서 비지니스 로직시 어떤 것들이 추가되어야하는지, 연관 관계를 어떻게 잘 맺어줘야 될지 고민을 많이 하게 됐던 것 같다.
1일 토요일 기술 멘토링 이후 1차 타임라인을 지키지 못한 상황인데다, 2차 기술 멘토링 때 1차 기술 멘토링 때 받았던 채팅을 제외하면 잘 정리된 CRUD 기능만 보여서 기술적으로 고민한 부분을 찾기 어려운 프로젝트가 될 것 같다는 피드백을 또다시 받게 되었다.
1차 기술 멘토링을 받고나서 검색 기능을 추가했고, MVP 이후로 알림 기능도 추가할 예정이라고 했는데 그럼 괜찮겠네요 라고 답하시면서도 여전히 좀 더 보완이 필요해보인다는 뉘앙스여서 어떤 기능을 더 녹여내야 고민의 흔적을 잘 어필할 수 있을지 고민이 많이 되는 상황이다.
또한, API Path와 코드 부분에 대한 피드백도 받은 상황이라 아직 MVP API 기능 구현도 마치지 못했는데, 추가할 사항들이 계속 생격서 마음이 조금 무거운 것은 사실이다.
그렇지만, 항해99를 하면서 걱정하고 또 걱정해도 결국 시간이 지나면 어떻게든 과제를 끝낸 나를, 우리를 발견했기에 이번에도 분명 해낼 수 있으리라 믿는다
5월 14 토요일에 중간 발표회가 열리기에 MVP 기능 구현을 토요일 전까지는 마쳐야되는 상황이 되었다.
백 기준 MVP까지 남은 기능은
인데, 이중 나는 카테고리별 조회와 무한 스크롤을 맡게 되었다.
덧붙여 지난 7일 토요일에 있었던 기술 멘토링을 통해 Dto를 이너 클래스로 사용하지 말고 상속시켜서 사용하라는 피드백을 받아서 여유가 된다면 리팩토링까지 MVP 전에 해볼 생각이다.