[React] 팀프로젝트 - 뉴스피드 만들기(4) 마무리

안셩·2024년 9월 4일
2

프로젝트

목록 보기
8/36
post-thumbnail

README 내용 중 일부 내용을 가져왔다.

👨‍🏫 프로젝트 소개

  • 주제 : 워케이션(Work + vacation의 합성어로, 일을 하면서 휴가를 동시에 즐기는 근무 형태)
  • 내용 : “여기가 일하면서 쉬거나 놀기 좋더라~” 자랑과 공유를 동시에 할 수 있고, ‘좋아요’ 버튼을 눌러 놓은 게시물만 따로 볼 수 있다.

Oreo 소개

팀원 소개에 팀장/팀원, MBTI, Github링크, 블로그 주소를 썼다.
발표 후에 팀원들의 역할을 적어주면 좋다고 하여 추가했다.

나는 디테일페이지(모달), 피드 작성 폼 부분을 맡았다.
해당 내용은 뉴스피드 만들기 (2), (3)을 참고 바랍니다.


프로젝트 계기

  1. 디지털 기술의 발전으로 인해 업무 환경의 영향을 덜 받기 때문에 '디지털 노마드' 문화가 생겨남.
  2. 코로나 확산으로 인해 원격근무가 늘고, 탄력적인 업무 형태의 필요성이 생김.
  3. 사회구성원들이 일과 삶의 균형을 중시하기 시작함.

위처럼 사회가 변화하면서 일과 휴가를 동시에 즐기는 근무형태로 '워케이션(Workation)'이 트렌드라는 것을 알게 되었습니다. 이를 즐기는 사람들이 어떤 장소에서 일하기 좋았는지 공유할 수 있으면 좋을 것 같아 만들게 되었습니다.


💜 주요기능

1. Supabase를 활용한 CRUD

펼쳐보기

피드작성
피드 수정,삭제


  • Create : 로그인한 유저는 메인페이지 오른쪽 아래에 나타나는 '작성' 버튼을 클릭하여 게시물을 작성할 수 있다.
  • Read : 작성 후 '업로드하기' 버튼을 클릭하면 메인페이지에 피드에 보여지고, 로그인한 유저가 작성한 게시물만 마이페이지에서 확인할 수 있다.
  • Update : 마이페이지에서 로그인한 유저의 게시물을 클릭하면 제목과 내용, (이미지)를 수정할 수 있다.
  • Delete : 마이페이지에서 로그인한 유저의 게시물을 클릭하면 게시물을 삭제할 수 있는 버튼이 있다.

2. Supabase를 활용한 로그인, 회원 가입

펼쳐보기

로그인,회원가입


  • Login : 메인페이지 오른쪽 상단에 있는 '로그인' 버튼을 통해 로그인을 할 수 있으며 계정 정보를 전역 상태로 관리한다.
  • Register : 메인페이지 오른쪽 상단에 있는 '회원가입' 버튼을 통해 가입할 수 있으며 계정 정보가 데이터베이스에 저장된다.

3. 무한스크롤 기능

  • intersectionObserver API 로 구현
  • 피드섹션 최하단 observe 구역 감지 시 다음 페이지를 렌더링한다.
  • 피드의 끝까지 스크롤하여 다음 페이지로 넘길 수 있다.

4. memo, useMemo, useCallback 을 이용한 렌더링 최적화 적용

5. 캐러셀

펼쳐보기

캐러셀
코드


- 캐러셀 라이브러리를 사용하지 않고 직접 코딩했다.

6. 커스텀 훅을 이용한 모달 사용

펼쳐보기

image


  • 모달 라이브러리를 사용하지 않고 직접 코딩했다.
  • 쓰이는 곳이 많아 커스텀 훅을 만들어 코드를 재사용할 수 있게 되었다.

⏲️ 개발기간

  • 2024.08.28(수) ~ 2024.09.03(수)

👊 Trouble Shooting

1. 로그인 세션관리

  • 기존 접근 방법 : 초기 실행 시에만 세션 관리를 통해 전역상태를 관리했다.
  • 문제 : 초기에만 실행하므로, 다른 페이지에서 새로고침하면 세션이 증발함.
  • 해결방법 : 커스텀 훅을 사용해 다른 페이지에서도 독립적인 세션관리를 통해 로그인 상태를 유지함session

2. 무한스크롤

  • 기존 접근 방법 : 피드 최하단에 observer 감지 = 페이지 추가
  • 문제 : 피드 데이터가 아직 생기기 전에 observer를 감지 / 출력 메시지에 의해 observer 구역이 뷰포트 안밖을 미친듯이 왔다갔다 함.
  • 해결방법 : 로딩 State에 따라 observer가 트리거 되지 않도록 함.observer

3. 수파베이스

  • 기존 접근 방법 :
  • 문제 : 테이블에 publicUrl 값이 null로 들어감.
  • 해결방법 : formData부터 콘솔을 한 단계씩 깊게 입력해보면서 undefine 값이 나오는 부분을 찾았다.publicUrl

❤️ 소감 한 마디

맡은 부분이 너무 어렵고 힘들었는데 포기하지 않도록 잘 이끌어주시고, 모르는 부분 설명도 계속해서 해주셔서 고맙습니다. 끝까지 해낸 사실이 참으로 뿌듯합니다.
끝자락에 팀원 한 분이 캠프를 하차하셨지만 이번 팀원들 진짜 불평, 불만 하나 없이 끝까지 역할 분담해서 발표까지 완벽하게 마칠 수 있었다.


🧠 KPT 회고

Keep - 현재 만족하고 있는 부분

  • 분업이 잘 된다.
  • 조원을 반긴다.(아침인사, 오전 스크럼 때 기분 체크)
  • 불평불만이 없다.
  • 팀원들한테 시간을 아끼지 않는다.
  • 튜터님께 질문하기 전에 팀원과 함께 해결을 시도해본다.
    → 튜터님께 갈 때에도 다함께 가서 조언구함

Problem - 불편하게 느끼는 부분

ㄴ '불편'이라는 글자가 불편하게 느껴질 정도로 없었는데 최대한 생각해본 게 이 정도..?

  • 다들 잠을 안 주무신다……
  • 오전 스크럼 내용은 잘 기억이 나는데 저녁 스크럼 내용 기억이 잘 안난다.

Try - Problem에 대한 해결책, 당장 실행 가능한 것

  • 새벽 1시 전엔 잠자기… 3시..불가… 다음날 너무 힘듦….
  • 오전/오후 상관없이 스크럼 할 때 간단하게라도 기록 남기기

👨🏻‍🏫 튜터님 피드백

profile
24.07.15 프론트엔드 개발 첫 걸음

2개의 댓글

comment-user-thumbnail
2024년 9월 4일

깔끔 한 포스트 잘 봤수영 !!! 잠을 안주신다 ...라니ㅣ . . .

답글 달기
comment-user-thumbnail
2024년 9월 4일

짧은기간 동안 좋은 경험이 되셨으면 좋겠습니다.

답글 달기