์๋งค๋ถํฐ ๋คํ์ด๊น์ง, ๊ณต์ฐ ๊ด๋์ ํ๋ฃจ๋ฅผ ๊ด๋ฆฌํ๋ ์ฌ์ธ์ ๋งค๋์ง๋จผํธ ํ๋ซํผ
๊ณต์ฐ ๊ด๋์ ๋จ์ํ 2์๊ฐ์ ๊ฒฝํ์ด ์๋๋๋ค.
ํ์ โ ์๋งค โ ์ด๋ โ ๊ด๋ โ ๋คํ์ด๋ก ์ด์ด์ง๋ ํ๋ฃจ์ ํ๋ก์ฐ๋ฅผ ํ๋์ ํ๋ซํผ ์์์ ๊ด๋ฆฌํฉ๋๋ค.
- ๊ฐ๋ฐ ๊ธฐ๊ฐ: 2025.12.04 ~ 2026.01.13
- ์๋น์ค ๋งํฌ: ๋ด์ฝ๋ถ ๋ฐ๋ก๊ฐ๊ธฐ
- ๋ ํฌ์งํ ๋ฆฌ: Frontend | Backend
์๋ฒ ์ด์์๊ฐ์ 09:00 ~ 18:00์ด๋ฉฐ, ์ด ์๊ฐ ์ธ์๋ ์๋ฒ๊ฐ ๊บผ์ ธ ์์ ์ ์์ต๋๋ค. ์ํด ๋ถํ๋๋ฆฝ๋๋ค.
- ๊ณต์ฐ ์ผ์ ํ์ : ์ํฐ์คํธ/์ฅ์/๋ ์ง ๊ธฐ์ค์ผ๋ก ๊ณต์ฐ์ ํ์ํ๊ณ ๊ด์ฌ ๊ณต์ฐ ์ ์ฅ
- ์๋งค ์คํ ์๋ฆผ : ํฐ์ผํ ์ผ์ ์๋ฆผ ์ค์ ์ผ๋ก ์คํ์ ์ ๋ ๋์น์ง ์์
- ์ธ์ถ ๊ณํ ์๋ฆฝ : ์ด๋ ๋์ , ์์ฌ, ์งํฉ ์ฅ์๊น์ง ๊ณต์ฐ ํ๋ฃจ๋ฅผ ํ๋์ ๊ณํ
- ๋ํ์ ๊ตฌ์ธ ๋ฐ ์กฐ์จ : ํจ๊ป ๊ฐ ๋ํ์ ๋ชจ์ง, ์ผ์ ๊ณต์
ํ๋ก ํธ์๋
| ์ด๋ฆ | ์ญํ | GitHub |
|---|---|---|
| ๋ฐ์์ | ํ์ฅ, Git ์ด๊ด, UI/UX ๋์์ธ, ๊ณต์ฐยท๋ง์ดํ์ด์งยท๊ฒ์ยท์ธ์ถํ๋๋ ํผ๋ธ๋ฆฌ์ฑ ๋ฐ ๊ฐ๋ฐ | @garlatonic |
| ๋ณ์์ฐ | ํ์, ๊ตฌ์ธยท๊ณต์ฐยท๋ง์ดํ์ด์ง ํผ๋ธ๋ฆฌ์ฑ ๋ฐ ๊ฐ๋ฐ | @varYeon |
| ์ ์งํ | ํ์, ์ธ์ฆ/์ธ๊ฐ ๊ตฌํ, ์ค์๊ฐ ์ฑํ ยท๊ณต์ฐ ํ๊ธฐยท์ํฐ์คํธ ํผ๋ธ๋ฆฌ์ฑ ๋ฐ ๊ฐ๋ฐ | @stupilman |
๋ฐฑ์๋
| ์ด๋ฆ | ์ญํ | GitHub |
|---|---|---|
| ์ต๋ณ์ค | PO, ์ธ์ฆ/์ธ๊ฐยทํ์ยท์ปค๋ฎค๋ํฐ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ | @larama-C |
| ๊ฐํ์ค | ํ์ฅ, Git ์ด๊ด, ๊ณต์ฐ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ | @Creamcheesepie |
| ๊น๋ฏผ์ | ํ์, ํ๋๋ ์ผ์ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ, ๋ชจ๋ํฐ๋ง | @kms152000 |
| ๊น์ค์ | ํ์, ํ๋๋ ์ฅ์ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ, E2E ํ ์คํธ | @tobbot16 |
| ์ดํ์ง | ํ์, ์ฑํ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ, CI/CD, AWS ์ธํ๋ผ ๊ด๋ฆฌ | @heygeeji |
| ์ ์ค์ | ํ์, ์ํฐ์คํธยท์์คํ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ | @ys0221 |
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| Framework | Next.js 16 (App Router), React 19 |
| Language | TypeScript 5 (Strict Mode) |
| Styling | Tailwind CSS v4, shadcn/ui (Radix UI) |
| ์ํ ๊ด๋ฆฌ | Zustand v5, TanStack Query v5 |
| ํผ ๊ด๋ฆฌ | React Hook Form v7, Zod v4 |
| ์ค์๊ฐ ํต์ | STOMP.js (WebSocket) |
| ์ง๋ | Kakao Maps SDK |
| ๊ธฐํ | date-fns, Swiper |
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| ์ฝ๋ ํ์ง | ESLint v9, Prettier v3 |
| Git ํ | Husky v9, lint-staged |
| CI/CD | Vercel |
| ๋ธ๋์น ์ ๋ต | GitHub Flow |
- Node.js:
>= 18.0.0 - ํจํค์ง ๋งค๋์ :
npm - ์ถ์ฒ IDE ํ๋ฌ๊ทธ์ธ: ESLint, Prettier, Tailwind CSS IntelliSense
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/prgrms-web-devcourse-final-project/WEB6_7_codecrete_FE.git
cd WEB6_7_codecrete_FE
# 2. ํจํค์ง ์ค์น
npm install
# 3. ํ๊ฒฝ๋ณ์ ์ค์
# ์์ ํ์ผ์ ๋ณต์ฌํ ๋ค .env ์ ๊ฐ์ ์ฑ์์ฃผ์ธ์.
cp .env.example .env
# ๊ฐ ํค ๊ฐ์ ํ ๋
ธ์
/์ฌ๋ ๋ฑ์ ๋ด๋ถ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์
๋ ฅํฉ๋๋ค.
# 4. ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev
โ ๏ธ ์ด ํ๋ก์ ํธ๋ ๋ฐฑ์๋ ์๋ฒ์ ํจ๊ป ์คํํด์ผ ํฉ๋๋ค.
๋ฐฑ์๋ ๋ ํฌ์งํ ๋ฆฌ: WEB6_7_codecrete_BE
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
npm run dev |
๊ฐ๋ฐ ์๋ฒ ์คํ |
npm run build |
ํ๋ก๋์ ๋น๋ |
npm run start |
ํ๋ก๋์ ์๋ฒ ์คํ |
npm run lint |
ESLint ๊ฒ์ฌ |
npm run format |
Prettier ์๋ ํฌ๋งทํ |
src/
โโโ app/ # Next.js App Router (๋ผ์ฐํธ + ํ์ด์ง)
โโโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ (Atomic Design)
โโโ hooks/ # ์ปค์คํ
React Hook
โโโ queries/ # TanStack Query (queryKey ์ ์)
โโโ stores/ # Zustand ์ ์ญ ์ํ ์คํ ์ด
โโโ types/ # TypeScript ๊ณต์ฉ ํ์
์ ์
โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์
โโโ lib/ # ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ (Backend API, zod, shadcn/io ๋ฑ)
โโโ providers/ # Context Provider ๋ชจ์
โโโ constants/ # ์์ ์ ์
โโโ assets/ # ์ด๋ฏธ์ง, ์์ด์ฝ ๋ฑ ์ ์ ํ์ผ
โโโ css/ # ์ ์ญ ์คํ์ผ
โโโ proxy.ts # Next.js API Route Proxy ์ค์
- Context API๋ฅผ ํ์ฉํ์ฌ ๋ง์ดํ์ด์ง ๋ด๋ถ ์บ๋ฆฐ๋์ ํจ๊ณผ์ ์ผ๋ก ๊ณต์ฐ / ์ํฐ์คํธ / ํ๋๋ ์ผ์ ํ์
- Next.js App Router์ ๋์ ๋ผ์ฐํธ ํน์ฑ์ ๊ณ ๋ คํด
prefetch์ ๋ต๊ณผ Streaming ๊ธฐ๋ฐ Suspense๋ฅผ ๋์ - Suspense boundary๋ฅผ ๋ผ์ฐํธ ๋จ์๋ก ๋ถ๋ฆฌํด, ๋ ์ด์์์ ์ฆ์ ๋ ๋๋งํ๊ณ ๋ฐ์ดํฐ ์์ญ๋ง Skeleton UI๋ก ๋๊ธฐํ๋ ๊ตฌ์กฐ๋ก ์ฒด๊ฐ ์ง์ฐ ๊ฐ์
@stomp/stompjs๊ธฐ๋ฐ WebSocket ์ฐ๊ฒฐ๋ก ๋ํ์ ๊ฐ ์ค์๊ฐ ์ํต ๊ตฌํ- ์ฐ๊ฒฐ ์ํ ๊ด๋ฆฌ๋ฅผ Custom Hook(
useStompClient)์ผ๋ก ์บก์ํ
react-kakao-maps-sdk๋ฅผ ํ์ฉํด ๊ณต์ฐ์ฅ ์ฃผ๋ณ ๋์ ๋ฐ ๋ง์ง ์ ๋ณด๋ฅผ ์ง๋ ์์ ์๊ฐํ
react-hook-form+zod์กฐํฉ์ผ๋ก ํ์ ์์ ํ ํผ ์ ํจ์ฑ ๊ฒ์ฌ ๊ตฌํ- ์คํค๋ง ๊ธฐ๋ฐ ๊ฒ์ฆ์ผ๋ก ์๋ฒยทํด๋ผ์ด์ธํธ ๊ณตํต ์ ํจ์ฑ ๋ก์ง ์ผ์ํ
๋ ์์ธํ ๊ฐ๋ฐ ์ปจ๋ฒค์ ๊ณผ PR ์์ฑ ๊ฐ์ด๋๋ผ์ธ์ CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.