Skip to content

FE14-Part3-Team3/The_julge

Repository files navigation

🧑‍💼 더줄게 프로젝트 👩‍💼

[The-julge]는 매칭 플랫폼의 기본 기능을 중심으로 한 웹 애플리케이션입니다. 조건을 입력해 일자리를 검색하는 기능을 통해 매칭 플랫폼의 핵심 요소를 이해하고 구현 능력을 향상시킵니다. 사용자는 원하는 일자리에 지원하고, 근무 승인을 받는 기능을 통해 매칭 과정에 대한 실습을 할 수 있습니다.

🧑‍💻 팀원

고서영 박원현 이나경 차경훈

📆 프로젝트 기간

2025년 04월 22일 - 2025년 05월 09일

🚀 배포

https://the-julge-team3.netlify.app/

📸 스크린샷

🪪 로그인/ 회원가입

로그인

회원가입

🙋 프로필 등록, 가게 정보 등록, 공고 등록 페이지

가게 등록

프로필 등록

공고 등록

📋 공고 리스트 페이지

로그인 안된 상태

로그인 된 상태

정렬

상세 필터

🗂️ 내 프로필 상세, 가게 정보 상세, 공고 상세

내 프로필

가게 정보 상세

공고 상세- 지원

공고 상세- 내 가게

🛠️ 기술 스택

📢 커뮤니케이션

discord figma notion github

🔧 프론트엔드

javaScript typescript React ReactQuery nextJS TailwindCSS pnpm

설치 및 실행

pnpm run dev

📁 폴더 구조

📦
├─ .github
│  ├─ ISSUE_TEMPLATE
│  │  ├─ etc-template.md
│  │  ├─ 🐞-bug-report-template.md
│  │  └─ 🔍-feature-issue.md
│  └─ pull_request_template.md
├─ .gitignore
├─ .vscode
│  └─ settings.json
├─ README.md
├─ eslint.config.mjs
├─ next.config.ts
├─ package-lock.json
├─ package.json
├─ pnpm-lock.yaml
├─ postcss.config.js
├─ public
│  ├─ assets
│  │  ├─ dummy
│  │  ├─ icons
│  │  │  ├─ chevron
│  │  │  │  ├─ chevron-outline.svg
│  │  │  │  └─ chevron.svg
│  │  │  ├─ map.svg
│  │  │  ├─ notification.svg
│  │  │  └─ search.svg
│  │  └─ images
│  │     ├─ arrow_up.svg
│  │     ├─ arrow_up_gray.svg
│  │     ├─ arrow_up_red_30.svg
│  │     ├─ arrow_up_red_40.svg
│  │     ├─ blur-placeholder.jpg
│  │     ├─ camera.svg
│  │     ├─ check.svg
│  │     ├─ clock.svg
│  │     ├─ clock_gray.svg
│  │     ├─ close.svg
│  │     ├─ delete_red.svg
│  │     ├─ ellipse.svg
│  │     ├─ logo.svg
│  │     ├─ map.svg
│  │     ├─ map_gray.svg
│  │     ├─ notification.svg
│  │     ├─ phone.svg
│  │     ├─ placeholder.png
│  │     ├─ select_arrow.svg
│  │     └─ vector.svg
│  ├─ fonts
│  │  ├─ SpoqaHanSansNeo-Bold.ttf
│  │  ├─ SpoqaHanSansNeo-Bold.woff
│  │  ├─ SpoqaHanSansNeo-Bold.woff2
│  │  ├─ SpoqaHanSansNeo-Regular.ttf
│  │  ├─ SpoqaHanSansNeo-Regular.woff
│  │  └─ SpoqaHanSansNeo-Regular.woff2
│  └─ temp-restaurant.jpg
├─ src
│  ├─ app
│  │  ├─ (auth)
│  │  │  ├─ login
│  │  │  │  └─ page.tsx
│  │  │  └─ signup
│  │  │     ├─ components
│  │  │     │  ├─ MemberTypeRadioInput.tsx
│  │  │     │  └─ RadioButton.tsx
│  │  │     └─ page.tsx
│  │  ├─ (main)
│  │  │  ├─ layout.tsx
│  │  │  ├─ notices
│  │  │  │  ├─ [noticeId]
│  │  │  │  │  └─ page.tsx
│  │  │  │  └─ components
│  │  │  │     ├─ PaginatedNoticeList.tsx
│  │  │  │     └─ RecommendedNotices.tsx
│  │  │  ├─ page.tsx
│  │  │  ├─ profile
│  │  │  │  └─ worker
│  │  │  │     └─ [id]
│  │  │  │        ├─ components
│  │  │  │        │  ├─ ApplicationTable.tsx
│  │  │  │        │  └─ ProfileCard.tsx
│  │  │  │        ├─ page.tsx
│  │  │  │        └─ register
│  │  │  │           └─ page.tsx
│  │  │  └─ shops
│  │  │     ├─ [shopId]
│  │  │     │  ├─ edit
│  │  │     │  │  ├─ components
│  │  │     │  │  │  ├─ ImageUploader.tsx
│  │  │     │  │  │  └─ ShopEditForm.tsx
│  │  │     │  │  ├─ hooks
│  │  │     │  │  │  └─ useShopEdit.ts
│  │  │     │  │  └─ page.tsx
│  │  │     │  ├─ notices
│  │  │     │  │  ├─ [noticeId]
│  │  │     │  │  │  ├─ applications
│  │  │     │  │  │  │  ├─ components
│  │  │     │  │  │  │  │  └─ ApplicationTable.tsx
│  │  │     │  │  │  │  └─ page.tsx
│  │  │     │  │  │  └─ edit
│  │  │     │  │  │     └─ page.tsx
│  │  │     │  │  └─ register-notice
│  │  │     │  │     └─ page.tsx
│  │  │     │  ├─ page.tsx
│  │  │     │  └─ register
│  │  │     │     ├─ components
│  │  │     │     │  ├─ ImageUploader.tsx
│  │  │     │     │  └─ ShopRegisterForm.tsx
│  │  │     │     ├─ hooks
│  │  │     │     │  └─ useShopRegister.ts
│  │  │     │     └─ page.tsx
│  │  │     └─ new
│  │  │        └─ page.tsx
│  │  ├─ dummyApplication.ts
│  │  ├─ globals.css
│  │  ├─ layout.tsx
│  │  └─ providers.tsx
│  ├─ components
│  │  ├─ Button
│  │  │  ├─ Button.tsx
│  │  │  └─ ModalButton.tsx
│  │  ├─ Card
│  │  │  ├─ EmptyCard.tsx
│  │  │  ├─ NoticeRegisterCard.tsx
│  │  │  ├─ RegisterCard.tsx
│  │  │  └─ ShopOverview.tsx
│  │  ├─ FallbackImage
│  │  │  └─ FallbackImage.tsx
│  │  ├─ FilterPanel
│  │  │  └─ FilterPanel.tsx
│  │  ├─ GNB
│  │  │  ├─ GlobalHeader.tsx
│  │  │  ├─ NotificationPanel.tsx
│  │  │  └─ SearchBar.tsx
│  │  ├─ IconText
│  │  │  ├─ IconText.tsx
│  │  │  └─ IconTextList.tsx
│  │  ├─ Input
│  │  │  ├─ Input.tsx
│  │  │  ├─ InputField.tsx
│  │  │  ├─ NoticeSelectInput.tsx
│  │  │  └─ SelectInput.tsx
│  │  ├─ Modal
│  │  │  ├─ AlertModal.tsx
│  │  │  ├─ ApplyModal.tsx
│  │  │  ├─ Modal.tsx
│  │  │  ├─ RegisterModal.tsx
│  │  │  └─ useApplyModal.tsx
│  │  ├─ Notice
│  │  │  ├─ NoticeCard.tsx
│  │  │  ├─ NoticeCardView.tsx
│  │  │  ├─ NoticeList.tsx
│  │  │  └─ PayBadge.tsx
│  │  ├─ Pagination
│  │  │  ├─ ChevronButton.tsx
│  │  │  ├─ PageButton.tsx
│  │  │  └─ Pagination.tsx
│  │  ├─ Section
│  │  │  └─ Section.tsx
│  │  ├─ Shop
│  │  │  └─ ShopInfo.tsx
│  │  ├─ ShopCard
│  │  │  ├─ ShopAction.tsx
│  │  │  ├─ ShopCategory.tsx
│  │  │  ├─ ShopDescription.tsx
│  │  │  ├─ ShopImage.tsx
│  │  │  ├─ ShopInfoCard.tsx
│  │  │  ├─ ShopLocation.tsx
│  │  │  └─ ShopName.tsx
│  │  ├─ ShopItem
│  │  │  ├─ ShopItem.tsx
│  │  │  └─ ShopItemSchemas.tsx
│  │  ├─ ShopNotices
│  │  │  └─ ShopNotices.tsx
│  │  └─ Table
│  │     ├─ StatusButton.tsx
│  │     ├─ Table.tsx
│  │     └─ TableSchemas.tsx
│  ├─ contexts
│  │  └─ AuthContext.tsx
│  ├─ hooks
│  │  ├─ api
│  │  │  ├─ useAlertService.ts
│  │  │  ├─ useApplications.ts
│  │  │  ├─ useAuthentication.ts
│  │  │  ├─ useImageUpload.ts
│  │  │  ├─ useNoticeService.tsx
│  │  │  ├─ useParsedNoticeQuery.tsx
│  │  │  ├─ useShopService.ts
│  │  │  └─ useUserService.ts
│  │  └─ usePagination.ts
│  ├─ lib
│  │  ├─ axios.ts
│  │  ├─ constants
│  │  │  ├─ addressOptions.ts
│  │  │  └─ foodCategory.ts
│  │  ├─ getQueryString.ts
│  │  ├─ imageAssets.ts
│  │  ├─ react-query.ts
│  │  └─ shopApi.ts
│  ├─ mock
│  │  └─ noticeData.ts
│  ├─ styles
│  │  └─ dummy
│  ├─ types
│  │  ├─ ShopTypes.ts
│  │  ├─ api
│  │  │  ├─ application.ts
│  │  │  ├─ notice.ts
│  │  │  ├─ notification.ts
│  │  │  ├─ shop.ts
│  │  │  └─ user.ts
│  │  └─ common.ts
│  └─ utils
│     └─ dummy
├─ tailwind.config.js
└─ tsconfig.json

📁 폴더/파일명 네이밍 컨벤션

대상 규칙 예시
폴더명 파스칼케이스(PascalCase) UserProfile.tsx
함수명/변수명 카멜케이스(carmelCase) userList
환경 변수 대문자 + 스네이크케이스 LOGIN_CONTENT

🌱 브렌치 네이밍 컨벤션

브렌치 종류 네이밍 규칙 예시
기능 개발 feature/{task} feature/component
버그 수정 fix/{bug} fix/component
문서 수정 docs/{readme} docs/readme-file

커밋 타입

태그 의미
feat 새로운 기능 추가
fix 버그 수정
docs 문서 수정
style 포멧팅, 세미콜론 누락 등
refactor 리팩토링
test 테스트 코드 추가
chore 설정, 빌드 변경 등

✉️ PR 컨벤션

  • ✨ [Feat] 프로필 상세 페이지 구현
  • 🐛 [Fix] 공고 필터 오류 수정
  • ♻️ [Refactor] API 훅 리팩토링

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages