๐ ๊ฐ๋ฐ์ ํ์ฌ(์จ๋น๋ยท์ปจํผ๋ฐ์คยทํด์ปคํคยท๋คํธ์ํน)๋ฅผ ํ๋ ์ด์ ํด์ ํ ๊ณณ์ ๋ชจ์ ๋ณด์ฌ์ฃผ๋ ์น์ฌ์ดํธ ์ ๋๋ค.
๐ ์น ๋ฐ๋ก๊ฐ๊ธฐ: https://dev-event.vercel.app/events
- ํ์ฌ ๋ฆฌ์คํธ / ์บ๋ฆฐ๋ ๋์ผ ๋ทฐ โ
/events์์ ์นด๋ ๋ฆฌ์คํธ์ ์๊ฐ ์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๋๋ฅผ ํ ๊ธ. ๋ชจ๋ฐ์ผ์ ์ (dot) ์บ๋ฆฐ๋๋ก ์๋ ์ ํ. - ๋ค์ค ํํฐ โ ์ง๊ตฐยทํ์ฌ ์ ํยท์ง์ญยท๋น์ฉยท๊ฒ์์ดยท๊ธฐ๊ฐ์ ์กฐํฉ. ํํฐ ์ํ๋
EventContext๋ก ๋ฆฌ์คํธ/์บ๋ฆฐ๋ ๋ทฐ ๊ฐ ๊ณต์ . - ๋ถ๋งํฌ(๋ด ํ์ฌ) โ ๋ก๊ทธ์ธ ์ฌ์ฉ์๊ฐ ๊ด์ฌ ํ์ฌ๋ฅผ ์ ์ฅํ๊ณ ์งํ์ค/์ข ๋ฃ ํญ์ผ๋ก ์ถ์ .
- ํ์ฌ ์์ธ ํ์ด์ง โ ์ธ๋ถ API์ ๋งํฌ๋ค์ด ๋ณธ๋ฌธ์
marked๋ก ๋ ๋๋ง. - SSR ์ฐ์ โ ๋ชจ๋ ํ์ด์ง๊ฐ
getServerSideProps๊ธฐ๋ฐ, SWR๋ก ํด๋ผ์ด์ธํธ hydrate ํ revalidate.
- Framework: Next.js 12 (Pages Router) ยท React 17 ยท TypeScript 4.6
- Styling: SCSS Modules ยท Pretendard ยท KTB Tech Blue ๋์์ธ ํ ํฐ (
DESIGN.md์ฐธ๊ณ ) - State: React Context (Auth ยท Event ยท Window ยท Toast)
- Data: SWR + axios, ์ธ๋ถ API (
${BASE_SERVER_URL}/front/v2/...) - Test: Jest 29 + ts-jest + jsdom
- Analytics: Vercel Analytics
- Deploy: Vercel
- Node.js 20.15.1 (
.nvmrc๊ณ ์ ) - pnpm 8+
# ์์กด์ฑ ์ค์น
$ pnpm install
# ๊ฐ๋ฐ ์๋ฒ (http://localhost:5000, 3000 ์๋)
$ pnpm dev
# ๋น๋ / ํ๋ก๋์
์๋น
$ pnpm build
$ pnpm start
# ๋ฆฐํธ
$ pnpm lint
# ํ
์คํธ
$ pnpm test
$ pnpm test:watch
$ pnpm test -- buildCalendarMatrix # ๋จ์ผ ํ์ผ
# ํ์
์ฒดํฌ๋ง
$ npx tsc --noEmitpages/ # Next.js Pages Router ์ง์
์ (SSR)
api/ # auth/์ธ์
์ฉ ์์ ํฌํผ (๋ฐ์ดํฐ ๋ ์ด์ด ์๋)
components/
events/calendar/ # ์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๋ยท์ ์บ๋ฆฐ๋ยท๋ทฐ ํ ๊ธ + ์์ ๋ก์ง + ์ ๋ ํ
์คํธ
myEvent/ # ๋ถ๋งํฌ ํญยท๋ฆฌ์คํธ
common/item/ # ํ์ฌ ์นด๋
layout/ # ๊ณตํต ๋ ์ด์์ ๋ํผ
context/ # AuthProvider ยท EventProvider ยท WindowProvider ยท ToastProvider
lib/
api/ # axios ์ธ์คํด์ค (์ธ์ฆ/๋น์ธ์ฆ)
hooks/useSWR.tsx # ๋ฐ์ดํฐ ํ์น ํ
(fallbackData ํจํด)
utils/ # ๋ ์งยทgTag ๋ฑ ํฌํผ
model/event.ts # ๋๋ฉ์ธ ํ์
styles/ # ๊ธ๋ก๋ฒ SCSSยท๋ณ์ยท๋ฏน์ค์ธยทCSS Module
docs/superpowers/ # ์ต๊ทผ ์์
์ ๋์์ธ ์คํยท๊ตฌํ ํ๋
tsconfig.json์baseUrl: './'๋ก ์ ๋ ๊ฒฝ๋ก import (import { Event } from 'model/event').- SCSS Module ๊ณต์ import๋
@import '~styles/_variables.scss'ํ์(ํธ๋ + ํ์ฅ์ + ์ธ๋์ค์ฝ์ด ๋ชจ๋ ํ์). - ๋์์ธ ํ ํฐ์
DESIGN.md(Pretendard ยท KTB Tech Blue#0043FFยท 12/24px radius ยท#E1E1E8border)์ ์ ๋ฆฌ. - ์ ๋ฐ์ดํฐ ํ์น๋
lib/hooks/useSWR.tsxํจํด(fallbackData์ฃผ์ ) ์ฌ์ฉ. ์ปดํฌ๋ํธ์์fetch์ง์ ํธ์ถ ๊ธ์ง.
# ๋ก์ปฌ ๋น๋ ํ
์คํธ
$ pnpm build
# ํ๋ฆฌ๋ทฐ ๋ฐฐํฌ
$ vercel build && vercel deploy
# ํ๋ก๋์
๋ฐฐํฌ
$ vercel build && vercel deploy --prodmain ๋ธ๋์น๊ฐ ๋ฐฐํฌ ๋์. ๊ธฐ๋ฅ ์์
์ feature/* ๋๋ release/* ๋ธ๋์น์์ ์งํํ๊ณ PR๋ก ๋จธ์งํฉ๋๋ค.