Skip to content

Latest commit

ย 

History

242 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Dev Event Web

๐ŸŽ‰ ๊ฐœ๋ฐœ์ž ํ–‰์‚ฌ(์›จ๋น„๋‚˜ยท์ปจํผ๋Ÿฐ์Šคยทํ•ด์ปคํ†คยท๋„คํŠธ์›Œํ‚น)๋ฅผ ํ๋ ˆ์ด์…˜ํ•ด์„œ ํ•œ ๊ณณ์— ๋ชจ์•„ ๋ณด์—ฌ์ฃผ๋Š” ์›น์‚ฌ์ดํŠธ ์ž…๋‹ˆ๋‹ค.

๐Ÿ‘‰ ์›น ๋ฐ”๋กœ๊ฐ€๊ธฐ: 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 --noEmit

๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ

pages/              # 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 ยท #E1E1E8 border)์— ์ •๋ฆฌ.
  • ์ƒˆ ๋ฐ์ดํ„ฐ ํŽ˜์น˜๋Š” lib/hooks/useSWR.tsx ํŒจํ„ด(fallbackData ์ฃผ์ž…) ์‚ฌ์šฉ. ์ปดํฌ๋„ŒํŠธ์—์„œ fetch ์ง์ ‘ ํ˜ธ์ถœ ๊ธˆ์ง€.

๋ฐฐํฌ

# ๋กœ์ปฌ ๋นŒ๋“œ ํ…Œ์ŠคํŠธ
$ pnpm build

# ํ”„๋ฆฌ๋ทฐ ๋ฐฐํฌ
$ vercel build && vercel deploy

# ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ
$ vercel build && vercel deploy --prod

main ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐฐํฌ ๋Œ€์ƒ. ๊ธฐ๋Šฅ ์ž‘์—…์€ feature/* ๋˜๋Š” release/* ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰ํ•˜๊ณ  PR๋กœ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ  ๋ฌธ์„œ

  • CLAUDE.md โ€” ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š” & Claude Code ์ž‘์—… ๊ฐ€์ด๋“œ
  • DESIGN.md โ€” ๋น„์ฃผ์–ผ ๋””์ž์ธ ์‹œ์Šคํ…œ
  • docs/superpowers/ โ€” ์ตœ๊ทผ ์ž‘์—…์˜ ์ŠคํŽ™ยทํ”Œ๋žœ (events card/detail/filter/header ๋ฆฌ๋‰ด์–ผ, calendar view ๋“ฑ)

About

๐ŸŽ‰๐ŸŽˆ Dev Event ์›น์œผ๋กœ ๋งŒ๋‚˜์š”! ๐Ÿ‘‰ dev-event.vercel.app

Resources

Stars

10 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages