Skip to content

Latest commit

ย 

History

47 Commits

Folders and files

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

Repository files navigation

๐Ÿƒ ํ…Œ์ด๋ธ”ํƒ‘ ์˜จ๋ผ์ธ

๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ๋ชจ์—ฌ ํ•จ๊ป˜ ์ฆ๊ธฐ๋Š” ์‹ค์‹œ๊ฐ„ ๋ณด๋“œ๊ฒŒ์ž„ ์„œ๋น„์Šค

๐Ÿ”— ๋ฐฐํฌ ๋งํฌ : tabletop-online-ppzz.onrender.com


๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿ“… ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

2026.08.05 ~ ์šด์˜์ค‘

๐ŸŽฏ ์„œ๋น„์Šค ๋ชฉ์ 

ํ‰์†Œ ์นด๋“œ๊ฒŒ์ž„์„ ์ฆ๊ฒจ ํ–ˆ์ง€๋งŒ, ์นด๋“œ๊ฒŒ์ž„์€ ์‚ฌ๋žŒ์ด ํ•œ์ž๋ฆฌ์— ๋ชจ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์˜จ๋ผ์ธ ์„œ๋น„์Šค๋“ค์€ ์›ํ•˜๋Š” ๊ฒŒ์ž„์ด ์—†๊ฑฐ๋‚˜, ํ™”๋ฉด ๊ตฌ์„ฑ๊ณผ ์กฐ์ž‘ ํ๋ฆ„์ด ๋ถˆํŽธํ•ด ์˜ค๋ž˜ ๋ถ™์žก๊ณ  ์žˆ๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒ๊ฐ์—์„œ ์‹œ์ž‘๋œ ํ…Œ์ด๋ธ”ํƒ‘ ์˜จ๋ผ์ธ์€ ๊ฐ€๋ณ๊ฒŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘์†ํ•ด ๋ฐ”๋กœ ํ•จ๊ป˜ ๊ฒŒ์ž„์„ ์ฆ๊ธฐ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ๋งŒ๋“  ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์˜คํ”„๋ผ์ธ์—์„œ ๋งˆ์ฃผ ์•‰์•„ ํ•˜๋˜ ๊ฒฝํ—˜์„ ์˜ฎ๊ฒจ์˜ค๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด์—ˆ๊ธฐ์—, ํ™”๋ฉด ์•ˆ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜์‘๊ณผ ๋ชฐ์ž…๊ฐ์„ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.


๐Ÿ“‹ ์ฃผ์š” ๊ธฐ๋Šฅ

1. ํšŒ์›๊ฐ€์ž… ์—†๋Š” ๊ฒŒ์ŠคํŠธ ์ž…์žฅ

  • ์ฒซ ๋ฐฉ๋ฌธ ์‹œ ์ต๋ช… ๊ฒŒ์ŠคํŠธ id๋ฅผ ์ฟ ํ‚ค๋กœ ๋ฐœ๊ธ‰๋ฐ›์•„, ๋กœ๊ทธ์ธ ์ ˆ์ฐจ ์—†์ด ๋ฐ”๋กœ ์ž…์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฉ์— ๋“ค์–ด๊ฐˆ ๋•Œ ๋‹‰๋„ค์ž„๋งŒ ์ •ํ•˜๋ฉด ๋˜๊ณ , ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๊ฐ™์€ ์ž๋ฆฌ๋กœ ๋ณต๊ท€ํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ŠคํŠธ ์ž…์žฅ

2. ๋ฐฉ ๋งŒ๋“ค๊ธฐ / ์ฐธ์—ฌํ•˜๊ธฐ

  • ๋กœ๋น„์—์„œ ๊ณต๊ฐœ ๋ฐฉ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ  ๋ฐ”๋กœ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๊ณต๊ฐœ ๋ฐฉ์€ ๋ชฉ๋ก์— ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๋ฐฉ ์ฝ”๋“œ๋กœ๋งŒ ์ž…์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฉ์žฅ์€ ๊ฒŒ์ž„ ์ข…๋ฅ˜ยท์ตœ๋Œ€ ์ธ์›ยท๊ณต๊ฐœ ์—ฌ๋ถ€๋ฅผ ๋Œ€๊ธฐ ์ค‘์— ์–ธ์ œ๋“  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ ๋งŒ๋“ค๊ธฐ

3. ์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ๊ฒŒ์ž„

๊ฒŒ์ž„ ์ƒํƒœ ์„ค๋ช…
๐ŸŽฒ ์•ผ์ฐŒ ์„œ๋น„์Šค ์ค‘ ์ฃผ์‚ฌ์œ„ 5๊ฐœ๋ฅผ ๊ตด๋ ค 13๊ฐœ ์ ์ˆ˜ ํ•ญ๋ชฉ์„ ์ฑ„์šฐ๊ณ  ์ด์ ์„ ๊ฒจ๋ฃน๋‹ˆ๋‹ค.
๐Ÿ‚ก ์‹ฏํ—ค๋“œ ์„œ๋น„์Šค ์ค‘ ๋ณผ ์ˆ˜ ์—†๋Š” ๋ฐ”๋‹ฅํŒจ๋ฅผ ๊น”๊ณ , ์†ํŒจ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๋น„์šฐ๋ฉด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๐ŸƒŸ ์›์นด๋“œ ์„œ๋น„์Šค ์ค‘ ๊ฐ™์€ ๋ฌด๋Šฌยท์ˆซ์ž๋ฅผ ์ด์–ด ๋‚ด๊ณ , ์†ํŒจ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๋น„์šฐ๋ฉด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ€„ ํ›Œ๋ผ ์ค€๋น„ ์ค‘ ์ถ”ํ›„ ์—…๋ฐ์ดํŠธ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ง„ํ–‰ ์ƒํ™ฉ์€ Socket.IO๋กœ ์ฆ‰์‹œ ๋™๊ธฐํ™”๋˜์–ด, ์ƒ๋Œ€์˜ ์ฐจ๋ก€์™€ ํ–‰๋™์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ์†ํŒจ์ฒ˜๋Ÿผ ์‚ฌ๋žŒ๋งˆ๋‹ค ๋ณด์ด๋Š” ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ์ •๋ณด๋Š” ์„œ๋ฒ„๊ฐ€ ์†Œ์ผ“๋ณ„๋กœ ๋”ฐ๋กœ ์กฐ๋ฆฝํ•ด ๋‚ด๋ ค๋ณด๋‚ด, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํŒจ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ์ƒˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด

4. ์นด๋“œยท์ฃผ์‚ฌ์œ„ ์ธํ„ฐ๋ž™์…˜

  • ์นด๋“œ๋ฅผ ๋‚ด๊ณ , ๋จน๊ณ , ๋‚˜๋ˆ ์ฃผ๋Š” ๋ชจ๋“  ์ˆœ๊ฐ„์— ์นด๋“œ๊ฐ€ ์‹ค์ œ๋กœ ๋‚ ์•„๊ฐ€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํšจ๊ณผ์Œ์ด ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ์ƒ๋Œ€๊ฐ€ ๋‚ธ ์นด๋“œ๋Š” ๋’ท๋ฉด์œผ๋กœ ๋‚ ์•„์˜ค๋‹ค ๋”๋ฏธ ์œ„์—์„œ ๋’ค์ง‘ํžˆ๊ณ , ์ฐฉ์ง€ํ•˜๋Š” ์ˆœ๊ฐ„์— ๋งž์ถฐ ๋”๋ฏธ๊ฐ€ ๊ฐฑ์‹ ๋˜์–ด ์นด๋“œ๊ฐ€ ๋ฏธ๋ฆฌ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์†ํŒจ๋Š” ๋žญํฌ์ˆœ์œผ๋กœ ์ž๋™ ์ •๋ ฌ๋˜๋ฉฐ, ์นด๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ฒน์นจ ํญ์„ ๋™์ ์œผ๋กœ ์ค„์—ฌ ํ™”๋ฉด์„ ๋„˜์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์นด๋“œ ์• ๋‹ˆ๋ฉ”์ด์…˜

5. ์‹ค์‹œ๊ฐ„ ๊ฐ์ • ํ‘œํ˜„

  • ํ…์ŠคํŠธ ์ž…๋ ฅ ์—†์ด ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์œผ๋กœ ์ƒ๋Œ€์—๊ฒŒ ๋ฆฌ์•ก์…˜์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  • ํ‘œํ˜„๋งˆ๋‹ค ์˜์ƒยท์ด๋ฏธ์ง€์™€ ํšจ๊ณผ์Œ์ด ์ฐธ๊ฐ€์ž ์นด๋“œ ์œ„์—์„œ ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ์งง์€ ์‹œ๊ฐ„์— ๋ฐ˜๋ณต ์ž…๋ ฅ๋˜๊ธฐ ์‰ฌ์šด ๊ธฐ๋Šฅ์ด๋ผ, ํ‘œํ˜„๋ณ„ ์žฌ์‚ฌ์šฉ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋‘์–ด ์š”์ฒญ ๋นˆ๋„๋ฅผ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ • ํ‘œํ˜„

6. ๊ฒŒ์ž„ ๊ทœ์น™ ์‚ฌ์ด๋“œ๋ฐ”

  • ๋ฐฉ ์•ˆ์—์„œ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์—ด๋ฉด ํ˜„์žฌ ๊ฒŒ์ž„์˜ ๊ทœ์น™์„ ์–ธ์ œ๋“  ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด, ์ฒ˜์Œ ํ•˜๋Š” ์‚ฌ๋žŒ๋„ ๋ฐ”๋กœ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

ํ•ญ๋ชฉ ์‚ฌ์šฉ ๊ธฐ์ˆ 
Framework Next.js React
Language TypeScript
Server Node.js Socket.io
Database PostgreSQL Prisma
Style Tailwind CSS animate.css
Validation Zod
Convention ESLint Prettier Husky
Deploy Render Neon

๐Ÿ—‚๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

โ”œโ”€ server.ts                  # HTTP + Socket.IO ๋ถ€ํŠธ์ŠคํŠธ๋žฉ, ์†Œ์ผ“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
โ”œโ”€ prisma/                    # DB ์Šคํ‚ค๋งˆ์™€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
โ””โ”€ src/
   โ”œโ”€ app/                    # ๋ผ์šฐํŠธ (๋กœ๋น„, ๋ฐฉ, /api/rooms)
   โ”œโ”€ components/
   โ”‚  โ”œโ”€ lobby/               # ๋ฐฉ ๋งŒ๋“ค๊ธฐยท์ฐธ์—ฌ UI
   โ”‚  โ””โ”€ room/                # ๋ฐฉ ๊ณต์šฉ UI + ๊ฒŒ์ž„๋ณ„ ๋ณด๋“œ(yatzyยทshitheadยทonecard)
   โ”œโ”€ hooks/                  # ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ›…
   โ”œโ”€ utils/                  # ์ˆœ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง
   โ”œโ”€ constants/              # ๊ฒŒ์ž„ ๋ชฉ๋ก, ๋ฃฐ๋ถ, ์ ์ˆ˜ํŒ ๋“ฑ ์ •์  ๋ฐ์ดํ„ฐ
   โ”œโ”€ server/                 # ๋ฐฉ ์ƒํƒœ ๊ด€๋ฆฌ, ๊ฒŒ์ž„๋ณ„ ์„œ๋ฒ„ ๋กœ์ง
   โ”‚  โ”œโ”€ roomManager.ts       # ๋ฐฉยทํ”Œ๋ ˆ์ด์–ด ์ธ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ, ์ž…ํ‡ด์žฅยท๋ฐฉ์žฅ ์œ„์ž„
   โ”‚  โ”œโ”€ gameDispatch.ts      # ๊ฒŒ์ž„ ์ข…๋ฅ˜๋ณ„ ๋กœ์ง ์œ„์ž„
   โ”‚  โ””โ”€ yatzy | shithead | onecard/
   โ”œโ”€ lib/                    # Prismaยท์†Œ์ผ“ ํด๋ผ์ด์–ธํŠธ
   โ””โ”€ proxy.ts                # ์ฒซ ๋ฐฉ๋ฌธ์ž ๊ฒŒ์ŠคํŠธ ์ฟ ํ‚ค ๋ฐœ๊ธ‰

์ง„ํ–‰ ์ค‘์ธ ๋ผ์šด๋“œ ์ƒํƒœ(์ฃผ์‚ฌ์œ„, ์†ํŒจ, ์ฐจ๋ก€)๋Š” ์‘๋‹ต ์†๋„๋ฅผ ์œ„ํ•ด ์†Œ์ผ“ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‘๊ณ , DB์—๋Š” ๋ฐฉ ์ •๋ณด์™€ ์ตœ์ข… ๊ฒฐ๊ณผ๋งŒ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

About

๐Ÿƒ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฆ๊ธฐ๋Š” ํด๋ž˜์‹ ํ…Œ์ด๋ธ”ํƒ‘ ๊ฒŒ์ž„ ๐Ÿƒ

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages