Skip to content

๐Ÿ† 2024-2 ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์†Œํ”„ํŠธ์›จ์–ด์บก์Šคํ†ค๋””์ž์ธ_๋Œ€์ƒ ๐Ÿ† ํญ๋ฐœ์ ์ธ ๊ธฐํš์„ ๋•๋Š” ์•„์ด๋””์–ด ์ œ๊ณต ํ”Œ๋žซํผ[๐ŸงฉPuzzle๐Ÿงฉ]

Notifications You must be signed in to change notification settings

rawvv/Puzzle-FE

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

75 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

[๐ŸงฉPuzzle๐Ÿงฉ] ์‹ค์‹œ๊ฐ„์œผ๋กœ ํญ๋ฐœ์ ์ธ ๊ธฐํš์„ ๋•๋Š” ์•„์ด๋””์–ด ์ œ๊ณต ํ”Œ๋žซํผ

image

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • Puzzle์€ ์—์ž์ผ ๋ฐฉ๋ฒ•๋ก , ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐ์— ๊ธฐ๋ฐ˜ํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๊ณตํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•„์ด๋””์–ด๋ฅผ ๊ธฐํšํ•˜๊ณ  ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค.

  • ์œ ์ €๋Š” ๋Œ€์‹œ๋ณด๋“œ์—์„œ ํŒ€์„ ๋งŒ๋“ค๊ณ , ํŒ€์›์„ ์ดˆ๋Œ€ํ•˜์—ฌ ๊ฐ™์ด ํผ์ฆ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹จ๊ณ„๋Š” ์ด 10๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์•„๋ž˜์˜ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ ๋ฉ๋‹ˆ๋‹ค.

  1. ์•„์ด์Šค๋ธŒ๋ ˆ์ดํ‚น : ํŒ€์› ๊ฐ„ ์นœ๋ฐ€๋„๋ฅผ ๋†’์ด๋Š” ๋‹จ๊ณ„

  2. ๋น„์ „์ฐพ๊ธฐ : ํ”„๋กœ์ ํŠธ์˜ ๋‹ค์ง๊ณผ ๋ฐฉํ–ฅ์„ฑ ์„ค์ •

  3. ํ† ๋ก ํ•˜๊ธฐ : ์ž์œ ๋กœ์šด ์•„์ด๋””์–ด ๊ตํ™˜

  4. ์Šคํ”„๋ ˆ๋“œ: ์•„์ด๋””์–ด ํ™•์žฅ ๋ฐ ๋ฐœ์ „

  5. ๋…ผ์˜ํ•˜๊ธฐ : ๊ตฌ์ฒด์ ์ธ ์‹คํ˜„ ๋ฐฉ์•ˆ ํ† ๋ก 

  6. ํŽ˜๋ฅด์†Œ๋‚˜ : ๋ชฉํ‘œ ์‚ฌ์šฉ์ž ์ •์˜

  7. ๋ฌธ์ œ ํ•ด๊ฒฐ : ๊ตฌ์ฒด์ ์ธ ์†”๋ฃจ์…˜ ๋„์ถœ

  8. ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ : ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ์˜ ๊ธฐ๋Šฅ ์ •์˜

  9. ๋ฉ”๋‰ด ํŠธ๋ฆฌ : ์„œ๋น„์Šค ๊ตฌ์กฐ ์„ค๊ณ„

  10. ํ™•์ธํ•˜๊ธฐ : README.md ์ตœ์ข… ๊ฒ€ํ†  ๋ฐ ํ™•์ธ

  • ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ๋Š” ํˆฌํ‘œ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋‹จ๊ณ„๋ฅผ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ฐธ์—ฌ์ž๋“ค์˜ ์ปค์„œ, ํ…์ŠคํŠธ ๋“ฑ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ๋˜๋ฉฐ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ๋‚ด์—๋Š” ํ˜‘์—…์„ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋Š” ๊ณต์œ  ํƒ€์ด๋จธ, ๊ณต์œ  ์Œ์•…, ๊ทธ๋ฃน ์ฑ— ๋“ฑ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์› ๊ตฌ์„ฑ

FE FE
๊น€ํƒœํ˜ธ ๊น€๋Œ€์„ฑ
ํ•œ๋ฆผ๋Œ€ํ•™๊ต ํ•œ๋ฆผ๋Œ€ํ•™๊ต
๋น…๋ฐ์ดํ„ฐ์ „๊ณต 3ํ•™๋…„ ์ฝ˜ํ…์ธ IT์ „๊ณต 4ํ•™๋…„
@low @ไธธๅ†…ๅคงๆˆ

1. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • front : Next.js 14(TypeScript), Liveblocks, Tailwind CSS , Zustand, Framer Motion
  • ๋ฒ„์ „ ๋ฐ ์ด์Šˆ ๊ด€๋ฆฌ : Git & GitHub , GItHub Projects, GitHub Actions (CI/CD)
  • ํ˜‘์—… ๋„๊ตฌ : Notion, Google Drive, Slack
  • ์„œ๋น„์Šค ๋ฐฐํฌ ํ™˜๊ฒฝ : Vercel
  • ๋””์ž์ธ : Figma, Icon8

2. ์ฃผ์š” ๊ฐœ๋ฐœ ๊ธฐ์ˆ ๊ณผ ๋ธŒ๋žœ์น˜ ์ „๋žต

Next 14

  1. ๋ฐฐํฌ์™€ ํ˜ธ์ŠคํŒ…์˜ ํŽธ๋ฆฌ์„ฑ
  • Vercel๊ณผ์˜ ์™„๋ฒฝํ•œ ํ˜ธํ™˜์„ฑ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค
  • ๋ณ„๋„ ์„ค์ • ์—†์ด๋„ HTTPS์™€ CDN์ด ์ž๋™ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์ด ์ž๋™ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค
  1. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR)์˜ ๊ฐ•์ 
  • ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋นจ๋ผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค
  • ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค
  • ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์™€ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค
  1. App Router์˜ ์žฅ์ 
  • ์ง๊ด€์ ์ธ ๋ ˆ์ด์•„์›ƒ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
  • ๋กœ๋”ฉ/์—๋Ÿฌ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค
  • ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ ๊ตฌ๋ถ„์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค

์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Livebloks์™€์˜ ํ˜ธํ™˜์„ฑ์ด ์šฐ์ˆ˜ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์›ํ• ํ•ฉ๋‹ˆ๋‹ค.

Liveblocks

  1. ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๊ธฐ๋Šฅ
  • Presence๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์‚ฌ์šฉ์ž ์ƒํƒœ ๊ด€๋ฆฌ
// ์˜ˆ์‹œ: ์‹ค์‹œ๊ฐ„ ์ปค์„œ ์œ„์น˜ ๊ณต์œ 
const { others } = useOthers();
const { cursor } = useMyPresence();
  • Storage๋ฅผ ํ†ตํ•œ ์˜๊ตฌ์  ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๋™๊ธฐํ™”
  • Broadcast๋ฅผ ํ†ตํ•œ ์ฆ‰๊ฐ์ ์ธ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ
  1. ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์ž๋™ ์ถฉ๋Œ ํ•ด๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ œ๊ณต
  • ๋™์‹œ ํŽธ์ง‘ ์‹œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€
  • ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ๋„ ์ž‘์—… ๊ฐ€๋Šฅํ•œ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์ง€์›
  1. ํ™•์žฅ์„ฑ
  • WebSocket ์—ฐ๊ฒฐ ์ž๋™ ๊ด€๋ฆฌ
  • ๋ฃธ ๊ธฐ๋ฐ˜ ํ˜‘์—… ์‹œ์Šคํ…œ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ
  • ์ปค์Šคํ…€ ๊ถŒํ•œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

Zustand

  1. ๊ฐ„ํŽธํ•œ ์‚ฌ์šฉ์„ฑ
  • Redux๋ณด๋‹ค ์„ค์ •์ด ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค
  • ์ ์€ ์ฝ”๋“œ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
  • TypeScript ์ง€์›์ด ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค
  1. ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์ด ์ ์Šต๋‹ˆ๋‹ค
  • ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งค์šฐ ์ž‘์Šต๋‹ˆ๋‹ค (2KB)
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค
  1. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
  • Liveblocks์™€์˜ ์—ฐ๋™์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค
  • ๋น„๋™๊ธฐ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค
  • ์ƒํƒœ ๋ณ€ํ™” ์ถ”์ ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค

3. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ฐ ์•„ํ‚คํ…์ณ

image

4. ์—ญํ•  ๋ถ„๋‹ด

๊น€ํƒœํ˜ธ

  • Puzzle ๋ ˆ์ด์–ด์— ๋งž๋Š” UI/UX ๊ตฌํ˜„
  • ํผ๋ธ”๋ฆฌ์‹ฑ ๊ตฌํ˜„
  • ๊ฐ ๋‹จ๊ณ„ TemplateBox ๊ตฌํ˜„
  • 1,2,3,4,5,6,7 ๋‹จ๊ณ„ ๊ธฐ๋ฏน ๊ตฌํ˜„
    • 1๋‹จ๊ณ„ ์•„์ด์Šค๋ธŒ๋ ˆ์ดํ‚น
    • 2๋‹จ๊ณ„ ๋น„์ „ ์ฐพ๊ธฐ
    • 3๋‹จ๊ณ„ ์ฃผ์ œ ์„ ์ •
    • 4๋‹จ๊ณ„ ์Šคํ”„๋ ˆ๋“œ
    • 5๋‹จ๊ณ„ ํ† ๋ก ํ•˜๊ธฐ
    • 6๋‹จ๊ณ„ ํŽ˜๋ฅด์†Œ๋‚˜
    • 7๋‹จ๊ณ„ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ํ˜ธ์ŠคํŠธ ๊ถŒํ•œ(ํ˜ธ์ŠคํŠธ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜๋Š” ๊ถŒํ•œ) ๋ถ€์—ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Matter.js๋ฅผ ์ด์šฉํ•œ ๋žœ๋”ฉํŽ˜์ด์ง€ ๊ตฌํ˜„
  • Liveblocks broadcast ์ด์šฉํ•œ ํˆฌํ‘œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํ˜„์žฌ ์ง„ํ–‰ ๋‹จ๊ณ„๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํŒ€์›๋“ค๊ณผ ๋‹จ๊ณ„ ๋ ˆ์ด์Šค ์ปจ๋””์…˜์„ ์กฐ์ ˆํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์บ”๋ฒ„์Šค ์ปค์Šคํ…€ ํˆด๋ฐ”(ํฌ์ŠคํŠธ์ž‡, RGB ์ƒ‰์ƒ ์กฐ์ ˆ) ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์‹ค์‹œ๊ฐ„ ์ขŒํ‘œ๋ฅผ ํ†ตํ•œ ์ปค์„œ ๊ตฌํ˜„

๊น€๋Œ€์„ฑ

  • ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„
    • ๋ณด๋“œ CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ํ†ต์‹ 
    • ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํšจ์œจ์„ ์˜ฌ๋ ค์ฃผ๋Š” ํ˜‘์—…๋„๊ตฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์˜ค๋””์˜ค ํ”Œ๋ ˆ์ด์–ด
    • Liveblocks broadCast๋ฅผ ์ด์šฉํ•œ ํƒ€์ด๋จธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • SendBird API๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ฃน์ฝœ ๊ธฐ๋Šฅ
    • ์‹ค์‹œ๊ฐ„ ์‚ฌ์šด๋“œ ๋ธ”๋Ÿญ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • 8,9,10 ๋‹จ๊ณ„ ๊ธฐ๋ฏน ๊ตฌํ˜„
    • 8๋‹จ๊ณ„ ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ
    • 9๋‹จ๊ณ„ ๋ฉ”๋‰ด ํŠธ๋ฆฌ
    • 10๋‹จ๊ณ„ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ
  • RoomToken, JWT Token ์ƒํƒœ ๊ด€๋ฆฌ

5. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

  • ๋นŒ๋“œ ๋ฐ ํ”„๋ ˆ์ž„ ์›Œํฌ ํ˜ธํ™˜์„ฑ ์˜ค๋ฅ˜ (tldraw, liveblocks, Next14)
  • ๊ฐ ๋‹จ๊ณ„ ๊ธฐ๋ฏน ๊ตฌํ˜„
  • UI/UX
  • git ์˜ค๋ฅ˜
  • sendbird ๋งŒ๋ฃŒ๋œ api ์˜ค๋ฅ˜
  • ํˆฌํ‘œ๋ฅผ ํ†ตํ•œ ๋ ˆ์ด์Šค ์ปจ๋””์…˜์„ ์กฐ์ ˆ ํ•ด์•ผํ•˜๋Š” ํŠธ๋Ÿฌ๋ธ”

6. ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋ฐ ๊ด€๋ฆฌ

2024.09.10 ~ 2024.11.27

About

๐Ÿ† 2024-2 ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์†Œํ”„ํŠธ์›จ์–ด์บก์Šคํ†ค๋””์ž์ธ_๋Œ€์ƒ ๐Ÿ† ํญ๋ฐœ์ ์ธ ๊ธฐํš์„ ๋•๋Š” ์•„์ด๋””์–ด ์ œ๊ณต ํ”Œ๋žซํผ[๐ŸงฉPuzzle๐Ÿงฉ]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.6%
  • Other 0.4%