Gatsby를 이용하여 사이드 프로젝트를 진행해봤고 부트캠프 과정을 통해 혼자서 간단한 CRUD를 구현할 수 있을 정도로 발전했다.
이 상태에서 메인프로젝트 진행 전 프리프로젝트로 StackOverflow를 클론 코딩을 진행했다.
전체 팀원들과 먼저 StackOverflow의 사이트를 분석했다. 로그인 여부에 따라 헤더가 바뀌며 이에 따라 첫 메인페이지도 변한다는 것을 알 수 있었다.
위 내용을 간단하게 작성하고 마감일을 봤을 때 우리가 잡을 메인페이지는 질문 리스트가 있는 페이지 였다.
아래와 같이 프로젝트 요구사항을 작성했다.
이후 화면 정의서도 팀원들과 시도를 하였고 아래와 같이 작성했다.
이번 프로젝트는 팀원으로 참여하였다. 왜냐하면 아는 것이 없다고 생각을 했고 섣불리 나서기 두려웠기 때문이다.
요구사항 정의서에서 중요도 "상"을 먼저 하고 시간이 남으면 "중"과 "하"로 넘어가기로 했다.
중요도 "상"으로 잡은 것은 메인페이지, 로그인 및 회원가입, 메인 CRUD(질문(답변) 작성, 수정, 조회, 삭제)이다. 왜냐하면 stackoverflow의 가장 기본적인 역할은 질문을 하고 답변을 하는 것이기에 이 부분을 1순위로 잡았다.
결론부터 말하자면 이 기능은 로그인 및 회원가입을 하는 사람이 한번에 했더라면 더욱 좋았을 거라고 생각한다. 그러나 이 덕분에 token기반의 로그인 프로세스를 확실히 할 수 있었다..
토큰을 배웠지만 너무 생소했고 실습이 부족하여서 기능을 담당했을 때 약간 막막했다.
그래도 해내야 하는 일이기에 계속 검색을 했지만 블로그 글이나 stackoverflow의 글로는 이해가 쉽게 되지 않았다. 그래도 수많은 검색 끝에 결국 RFC editor - The OAuth 2.0 Authorization Framework
의 token section의 글을 찾아고 이를 토대로 다시 하나씩 공부를 했다.
위 자료에서 제공하는 token전달 process를 보고 추가 검색을 하면서 이번 프로젝트에서 사용할 로직을 다음과 같이 만들었다.
이후 이 로직을 팀원과 공유하고 파트를 나누어서 로그아웃 페이지를 구현하고 로그아웃 시 브라우저에 저장한 쿠키를 삭제하는 것으로 로그아웃을 구현했다.
Router연결은 쉬웠다. 각자 맡은 페이지의 컴포넌트를 react-router-dom
을 이용하여 연결시켜줬다.
StackOverflow에서 유저 이미지를 클릭하면 마이페이지로 이동할 수 있다. 그러나 시간관계 및 작업분량으로 인해 구현하지 못하고 간단하게 유저정보를 표시하는 카드를 만들었다.
들어가는 사진, 유저이름, 이메일주소는 로그인 시 전역상태에 저장한 정보를 활용하여 구현했다.
단도직입적으로 말하자면 이 부분이 가장 많이 아쉬웠다.
모든 기능이 전부 완료되어갈 시점에 전체적인 화면 디자인 및 위치 조절이 필요하다는 안건이 올라왔고 내가 맡아서 한다고 했다. 새벽까지 시간을 들여서 작업을 했으나, 각자의 환경에서 내가 바라던 모습과는 다르게 배치가 이상하다는 피드백을 받았다. 이 후 다른 팀원이 이어 받아서 작업을 했고 결과 코드를 봤을 때 다음 사항들이 부족했던 것 같다.
첫 프로젝트에서 문제 해결방법 경험을 얻었기에 속도도 이전보다는 빨랐지만 이번 두 번째 프로젝트에서는 아쉬운 점이 매우 많다. 그래도 이번 경험을 통해 다음을 알 수 있었다.
- 전체 css의 중요성. 들어가기 전에 화면 비율이나 컨텐츠 사이즈의 넓이를 미리 저장하는 것이 좋다는 것을 알 수 있었다.
- 타인의 코드를 수정할 수 있는 용기를 가지자
- 내가 틀릴 수 도 있지만 의견을 내야 한다고 생각했다. 이번에는 너무 조용히 있다보니 내가 가지고 있던 더 좋은 의견이나 방향을 공유하지 못 했다.