λ°°ν¬ λ§ν¬ λ°λ‘κ°κΈ°
- π νλ‘μ νΈ κ°μ
- π€ νμ
- π‘ μ£Όμ κΈ°λ₯
- π₯οΈ νλ©΄ UI
- βοΈ κΈ°μ μ€ν & μν€ν μ²
- π κ°λ° 컨벀μ
- β μ€μΉ λ° μ€ν
Important
COTATO Officialμ COde Together, Arrive TOgetherλΌλ λΉμ μ μ€μ²νλ IT μ°ν©λμ리 μ½ν
μ΄ν μ 곡μ νλ«νΌμ
λλ€.
κΈ°μ‘΄ ννμ΄μ§μ νλ μμΉ΄μ΄λΉ λΆμ¬μ λΆνΈν UIλ₯Ό κ°μ νκΈ° μν v2 리λ΄μΌ νλ‘μ νΈμ
λλ€.
μ΄λ² v2 리λ΄μΌ νλ‘μ νΈλ μ¬μ©μ μ€μ¬μ μ€κ³λ₯Ό ν΅ν΄ λμ리μ κ°μΉλ₯Ό λͺ
νν μ λ¬νκ³ μ΄μ ν¨μ¨μ κ·Ήλννλ λ° μ§μ€νμ΅λλ€.
|
κΉμ΄μ° Frontend Leader |
κΉλ―Όμ Frontend Dev |
μν¬μ Frontend Dev |
νμ§λ―Ό Frontend Dev |
- λμ리 λΈλλ©: μ½ν μ΄ν μ μ 체μ±κ³Ό νλ λ΄μμ νλμ νμΈ
- μΈμ μμΉ΄μ΄λΉ: λ§€μ£Ό μ§νλλ κ΅μ‘ μΈμ μλ£μ κΈ°λ‘ λ³΄κ΄
- μΆμ: μΈμ λ³ μΆμ κ΄λ¦¬ λ° μμΉ μ 보 κΈ°λ° μΆμ μ§ν
- CS ν΄μ¦ λ°λ‘κ°κΈ°: λΆμλ€μ κΈ°μ μλ κ°νλ₯Ό μν ν΄μ¦ νμ΄ μμ€ν Mait λ°λ‘κ°κΈ°
- λ§μ΄νμ΄μ§: κ°μΈλ³ μΆμ νν© λ° μλ²μ μ€μκ° μ‘°ν
- μ§μ νλ‘μΈμ€: κ΅¬κΈ νΌμ λ체νλ μ체 μ§μμ μμ± λ° μμμ μ₯ κΈ°λ₯μ μ 곡
- μ΄λλ―Ό λμ보λ μ 곡: μ΄μμ§μ΄ μ§μμλ₯Ό μ¬μ¬νκ³ ν©κ²© μ¬λΆλ₯Ό λλμΌλ‘ κ΄λ¦¬
μ½ν μ΄ν μ λΈλλ©κ³Ό νλ μμΉ΄μ΄λΉμ λ΄λΉνλ λ©μΈ νλ«νΌμ λλ€.
| HOME | ABOUT US | PROJECT |
|---|---|---|
![]() |
![]() |
![]() |
| μ½ν μ΄ν λΉμ λ° λ©μΈ λλ© | λμ리 νμ€ν 리 λ° μκ° | νλ‘μ νΈ ν΅ν© μμΉ΄μ΄λΉ |
| MYPAGE | MYPAGE_ADMIN | MYPAGE_ADMIN |
|---|---|---|
![]() |
![]() |
![]() |
| κ°μΈ νλ ν΅κ³ λ° μ 보 | μ΄μμ§ μ μ© ν΅ν© κ΄λ¦¬ μλν μμ€ν | μ΄μμ§ μ μ© ν΅ν© κ΄λ¦¬ μλν μμ€ν |
μ κ· λΆμ λͺ¨μ§ λ° μ΄μμ§μ ν¨μ¨μ μΈ μ¬μ¬ νλ‘μΈμ€λ₯Ό μ§μν©λλ€.
Tip
κ³ μ±λ₯ λΉλ μμ€ν
κ³Ό νμ
μμ μ±μ λ°νμΌλ‘ ν¨μ¨μ μΈ νμ
νκ²½μ ꡬμΆνμ΅λλ€.
Turborepoμ pnpm workspaceλ₯Ό ν΅ν΄ λ°λ³΅λλ UI μ»΄ν¬λνΈμ μ€μ μ λͺ¨λννμ¬ κ°λ° μμ°μ±μ κ·Ήλννμ΅λλ€.
κΈ°μ‘΄μ ννΈνλ ꡬ쑰μμ λ²μ΄λ, λͺ¨λ
Έλ ν¬λ₯Ό μ΄μ©ν΄ packagesμμ μ μλ νμ€μ appsμμ μλΉνλ μ μν ꡬ쑰λ₯Ό ꡬμΆνμ΅λλ€.
.
βββ π apps
β βββ homepage # 곡μ ννμ΄μ§ (cotato.kr)
β βββ recruit # 리ν¬λ£¨νΈ νμ΄μ§ (recruit.cotato.kr)
β
βββ π¦ packages
βββ ui # λμμΈ μμ€ν
κΈ°λ° κ³΅ν΅ μ»΄ν¬λνΈ
βββ tailwind-config # κ³΅ν΅ ν
λ§ λ° μ€νμΌ κ·κ²©
βββ typescript-config # μ격ν νμ
체ν¬λ₯Ό μν μ μ μ€μ
βββ eslint-config # μΌκ΄λ μ½λ νμ§μ μν λ¦°ν
λ£°
- Workspaces:
pnpmμ ν΅ν ν¨μ¨μ μΈ ν¨ν€μ§ μμ‘΄μ± κ΄λ¦¬ - Build System:
Turborepoλ₯Ό νμ©ν λΉλ μΊμ± λ° νμ΄νλΌμΈ μ΅μ ν - Data Fetching:
React QueryκΈ°λ°μ μλ² μν κ΄λ¦¬ (Apps κ° κ³΅ν΅ Query Key 곡μ ) - Shared UI:
packages/uiλ₯Ό ν΅ν΄ ννμ΄μ§μ 리ν¬λ£¨νΈ μ± κ°μ μΌκ΄λ λμμΈ μμ€ν μ μ§
- Turborepo: κ³ μ±λ₯ λΉλ μμ€ν λ° μΊμ± μ§μμ ν΅ν νμ΄νλΌμΈ μ΅μ ν
- pnpm Workspace: μμ‘΄μ± κ΄λ¦¬ μ΅μ ν λ° λ‘컬 ν¨ν€μ§ κ° ν¨μ¨μ 곡μ
- Next.js: React κΈ°λ° SSR/SSG μ§μ λ° μλ² μ»΄ν¬λνΈ νμ©
- TypeScript: κ°λ ₯ν νμ μμ€ν μ ν΅ν μμ μ μΈ μ½λ μμ±
- Tailwind CSS: μ νΈλ¦¬ν° ν΄λμ€ κΈ°λ°μ λΉ λ₯Έ μ€νμΌλ§ λ° μλ΅ν λμμΈ
- Zustand: κ°λ³κ³ μ§κ΄μ μΈ μ μ μν κ΄λ¦¬
- React Query:
@tanstack/react-queryλ₯Ό μ΄μ©ν μλ² μν μΊμ± λ° κ΄λ¦¬
- ESLint & Prettier: μ½λ νμ§ μ μ§ λ° ν 컨벀μ μλ μ μ©
- Husky: Git hookμ ν΅ν μ»€λ° μ lint/format μλ κ²μ¬
- SVGR: SVGλ₯Ό React μ»΄ν¬λνΈλ‘ λ³ννμ¬ κ΄λ¦¬
- CodeRabbit: AI κΈ°λ° μ½λ 리뷰 λ° μλ νΌλλ°± μμ€ν
λμ
Important
λͺ¨λ νμμ μνν νμ
μ μν΄ μλ λͺ
μλ κ·μΉμ λ°λμ μ€μν©λλ€.
| νμ | λμ | μμ |
|---|---|---|
| PascalCase | μ»΄ν¬λνΈ νμΌ | HomeClient.tsx |
| camelCase | μΌλ° ν¨μ, 컀μ€ν ν , μ€ν μ΄ | formatDate.ts, useClickOutside.tsx, useAuthStore.ts |
| kebab-case | μΌλ° νμΌ(styles, mocks), ν΄λλͺ , μμ΄μ½ | mock-faq.ts, app/, brand-logo.svg |
| π | mutation, query, api, schema, type | useApply.mutation.ts, auth.api.ts, admin.schema.ts |
- μ»΄ν¬λνΈ μ μΈ: νμ΄μ§/λ μ΄μμμ
export default function, μΌλ° μ»΄ν¬λνΈλexport const(Arrow Function) μ¬μ© - μ»΄ν¬λνΈ μμΉ: νΉμ λλ©μΈ μ μ© μ»΄ν¬λνΈλ ν΄λΉ ν΄λ λ΄
_components/μμ κ΄λ¦¬ - κ²½λ‘:
@λ₯Ό μ΄μ©ν μ λκ²½λ‘ μ¬μ©
Format: prefix/scope/μ΄μλ²νΈ-μμ
λ΄μ© (kebab-case μ¬μ©)
- Scope:
recruit,homepage,root(곡ν΅) - μμ:
feat/recruit/1-apply-form,fix/homepage/12-login-error
| λ¨Έλ¦Ώλ§ | μ€λͺ |
|---|---|
| main | μ€μ μλΉμ€ λΈλμΉ |
| develop | λ°°ν¬ μ μμ κΈ°μ€ λΈλμΉ (Default) |
| feat | μλ‘μ΄ κΈ°λ₯ λ¨μ ꡬν |
| fix | λ²κ·Έ μμ λ° μλ¬ ν΄κ²° |
| refactor | κΈ°λ₯ λ³κ²½ μλ μ½λ ꡬ쑰 κ°μ |
| hotfix | μλΉμ€ μ€ κΈ΄κΈ μμ |
Format: prefix(scope): μμ
λ΄μ© (#μ΄μλ²νΈ)
- μμ:
feat(recruit): μ§μμ μ μΆ κΈ°λ₯ ꡬν (#5)
- μ λͺ©κ³Ό λ³Έλ¬Έμ λΉ νμΌλ‘ λΆλ¦¬ν©λλ€.
- λ³Έλ¬Έμλ 'μ΄λ»κ²'λ³΄λ€ '무μμ, μ' λ³κ²½νλμ§ μ€λͺ ν©λλ€.
- μ λͺ© λμ λ§μΉ¨ν(
.)λ κΈμ§νλ©°, 첫 κΈμλ λλ¬Έμλ‘ μμ±ν©λλ€.
- Label:
RecruitμHomepageλΌλ²¨μ μμμΌλ‘ ꡬλΆνμ¬ PRμ μ μ©ν©λλ€. - Milestone: PR μμ± μ ν΄λΉλλ λ§μΌμ€ν€μ λ°λμ μ°κ²°νμ¬ μ§ν μν©μ κ°μνν©λλ€.
Warning
νλ‘μ νΈ μ€ν μ μ λ°λμ μλ νκ²½μ νμΈν΄μ£ΌμΈμ.
νμ νκ²½:
- Node.js 18 μ΄μ
- pnpm (κΆμ₯ ν¨ν€μ§ λ§€λμ )
# νκ²½ νμΈ
node -v
pnpm -v- Repository ν΄λ‘
git clone https://github.com/IT-Cotato/COTATO-FE-v2.git
cd COTATO-FE-v2- μ 체 μμ‘΄μ± μ€μΉ (Rootμμ μ€ν)
pnpm install- μ 체 νλ‘μ νΈ μ€ν
pnpm devNote
- Homepage: http://localhost:3001
- Recruit: http://localhost:3000











