Skip to content

급하게 일손이 필요한 자리에 더 많은 시급을 제공해서 아르바이트생을 구할 수 있는 서비스입니다.

Notifications You must be signed in to change notification settings

DDaHeuk/The-julge

Repository files navigation

header

3배 줄께

🔥 프로젝트 소개 : The-Julge

급하게 일손이 필요한 자리에 더 많은 시급을 제공해서 아르바이트생을 구할 수 있는 서비스입니다.


💼 팀원 소개

황지홍
@ClownNero
API 활용한 데이터(GET,POST,PUT) 적용
내 프로필 등록/편집 페이지(데이터 변경 쿼리 자동 업데이트 적용)
내 프로필 정보 상세 페이지(SSR적용)
공통 컴포넌트(테이블 상태, 최근 본 공고)
새로고침 후 정보 유지를 위한 Zustand persist 상태관리
기존 token 저장 방식을 쿠키로 변경 및 적용
middleware.ts로 리다이렉션 리팩토링
레이아웃 쉬프트 개선
박기범
@gibeom0218
레이아웃 적용 (NavBar, Footer)
공고 컴포넌트
가게 등록/편집 페이지
공고 등록/편집 페이지
가게 정보 상세 페이지
공고리스트 페이지(디자인, 검색, 상세 필터)
이미지 최적화 및 성능 개선
가게,공고 등록/편집 로직 효율성 개선
Readme 작성
최희문
@ChoiHeeMoon99
공통 Input,Button,Dropdown 컴포넌트
로그인, 회원가입 페이지
공고 상세 페이지(table 컴포넌트, 공고 상세 내용, 페이지네이션)
공고 리스트 페이지( 페이지네이션, 공고 정렬 )
NavBar ( 알림 기능 )
404페이지 작성

⭐️ 프로젝트 소개

- 프로젝트 기간 : 2024. 07. 12. ~ 2024. 08. 31.

- 프로젝트 설명

사장님

  • 가게 관리

    • 가게를 등록/편집을 할 수 있고 가게 정보를 확인할 수 있습니다.
  • 공고 관리

    • 가게에 대한 공고를 등록/편집할 수 있고 등록한 공고들을 확인할 수 있습니다.
    • 공고를 신청한 신청자 목록을 확인할 수 있습니다.
    • 공고 신청을 거절 혹은 승인할 수 있습니다.

알바님

  • 프로필 관리

    • 내 프로필 정보를 등록/편집할 수 있고 프로필 정보를 확인할 수 있습니다.
  • 공고 관리

    • 선택한 공고에 대한 신청을 할 수 있습니다.
    • 신청한 공고에 대해 취소를 할 수 있습니다.
    • 자신의 공고 신청 내역 상태를 확인할 수 있습니다.
    • 신청한 공고에 대한 거절/승인 알림을 확인할 수 있습니다.
    • 최근에 본 공고 내역을 확인 할 수 있습니다.

공통

  • 공고 확인

    • 주소를 기준으로 맞춤 공고를 확인 할 수 있습니다.
    • 전체 공고를 확인할 수 있습니다.
  • 공고 검색

    • 마감임박순, 시급많은 순, 시간적은 순, 가나다 순으로 공고를 정렬할 수 있습니다.
    • 상세 필터에서 위치, 시작일, 금액 기준으로 공고를 검색을 할 수 있습니다.

⭐️ 프로젝트 구성

Tech Stacks

Languages

Styles

Framework & Libraries

Version Control

Deployment

Collab.


⭐️ 아키텍처

아키텍처


⭐️ Flow-Chart

Flow-Chart


디렉토리 구조

📦src
 ┣ 📂apis
 ┃ ┣ 📂alert
 ┃ ┣ 📂assignNoticeInfo
 ┃ ┣ 📂assignShopInfo
 ┃ ┣ 📂auth
 ┃ ┣ 📂editNoticeInfo
 ┃ ┣ 📂editProfileInfo
 ┃ ┣ 📂editShopInfo
 ┃ ┣ 📂imageUpload
 ┃ ┣ 📂notice
 ┃ ┣ 📂profile
 ┃ ┣ 📂shop
 ┃ ┣ 📂user
 ┣ 📂components
 ┃ ┣ 📂authComponents
 ┃ ┣ 📂commonComponents
 ┃ ┃ ┣ 📂button
 ┃ ┃ ┣ 📂dropdown
 ┃ ┃ ┣ 📂footer
 ┃ ┃ ┣ 📂navigationBar
 ┃ ┃ ┣ 📂pagination
 ┃ ┃ ┣ 📂input
 ┃ ┃ ┣ 📂status
 ┃ ┃ ┣ 📂applicationList
 ┃ ┃ ┗ 📂hourlypayCalc
 ┃ ┣ 📂editComponents
 ┃ ┣ 📂homeComponents
 ┃ ┣ 📂myInfoComponents
 ┃ ┗ 📂noticeComponents
 ┣ 📂constant
 ┣ 📂hooks
 ┣ 📂provider
 ┣ 📂stores
 ┣ 📂styles
 ┣ 📂utils
 ┗ 📂app
 ┃ ┣ 📂(auth)
 ┃ ┃ ┣ 📂signin
 ┃ ┃ ┣ 📂signup
 ┃ ┃ ┗ 📜loading.tsx
 ┃ ┣ 📂(contents)
 ┃ ┃ ┣ 📂assignmyshop
 ┃ ┃ ┣ 📂assignnotice
 ┃ ┃ ┣ 📂editmyshop
 ┃ ┃ ┣ ┗ 📂[shopId]
 ┃ ┃ ┣ 📂editnotice
 ┃ ┃ ┣ ┗ 📂[shopId]
 ┃ ┃ ┣ ┗ ┗ 📂[noticeId]
 ┃ ┃ ┣ 📂myprofile
 ┃ ┃ ┣ ┗ 📂[userId]
 ┃ ┃ ┣ ┗ ┗ 📂assignmyprofile
 ┃ ┃ ┣ 📂myshop
 ┃ ┃ ┣ ┗ 📂[shopId]
 ┃ ┃ ┣ ┗ ┗ 📂notices
 ┃ ┃ ┣ ┗ ┗ ┗ 📂[noticesId]
 ┃ ┃ ┣ 📂noticelist
 ┃ ┃ ┣ 📂shop
 ┃ ┃ ┣ ┗ 📂[shopId]
 ┃ ┃ ┣ ┗ ┗ 📂notice
 ┃ ┃ ┣ ┗ ┗ ┗ 📂[noticeId]
 ┃ ┃ ┣ 📜layout.tsx
 ┃ ┃ ┗ 📜page.tsx
 ┃ ┣ 📜globals.css
 ┃ ┣ 📜layout.tsx
 ┃ ┗ 📜page.tsx

화면 구성

비로그인

로그인

회원가입

메인화면 (공고 리스트)

공고 상세


로그인 (사장님)

가게 정보 등록

가게 정보 편집

공고 등록

공고 편집

가게 정보 상세

공고 상세


로그인 (알바님)

내 프로필 등록

내 프로필 편집

내 프로필 상세

공고 상세


Trouble Shooting

⚠️ 새로고침 시 props로 받은 id가 undefined가 떠서 빈 데이터가 나타나는 이슈 (가게 편집,공고 편집)

✅ 페이지를 이동하기 전 컴포넌트에서 가게 데이터를 사용하고 있어 Link태그에 query로 데이터들을 전달해줌.

⚠️ querykey를 특정하지 않아 데이터가 제대로 fetch를 하지않는 이슈

✅ querykey를 특정하지 않아 기존의 캐싱된 데이터가 참조하게 됨. -> 고유한 querykey를 만들기 위해 userId를 추가함.

⚠️ 가게 정보 상세 페이지 (/myshop/{shopId}) 에서 임의로 shopId를 지웠을 때 가게 정보가 안뜨고 등록이 안된 상태의 페이지가 뜨는 이슈

✅ 쿠키로 로그인하거나 가게를 등록했을 때 shopId를 저장해주고 (/myshop) 페이지에서 쿠키 값을 가져와서 만약 있다면 (/myshop/{shopId})로 리다이렉션 되게끔 해줌.

⚠️ 무한스크롤 구현 시 서버 컴포넌트에서 prefetchQuery 사용해서 prefetch를 할때 오류가 떴었다.

✅ prefetchQuery는 단일 페이지의 데이터를 로드할때 사용하는 것이고 페이지네이션이나 무한스크롤에 특화된 prefetchInfiniteQuery을 사용하여 useInfiniteQuery와 함께 사용함으로써 여러 페이지의 데이터를 미리 로드하였음.

⚠️ 클라이언트 컴포넌트에서 useSearchParams()를 사용하였는데 빌드과정에서 useSearchParams에서 Suspense 경계가 누락되었다는 것을 발견함.

✅ 이 오류는 SSR 환경에서 CSR이 일어날 경우에 발생하는 오류로써 Suspense 컴포넌트를 사용하여 CSR과 SSR 사이의 경계를 만듦으로써 감싸진 컴포넌트가 렌더링되기 전에 필요한 데이터를 비동기적으로 로드할 수 있는 시간을 제공하도록 함.

About

급하게 일손이 필요한 자리에 더 많은 시급을 제공해서 아르바이트생을 구할 수 있는 서비스입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages