Skip to content
@Joseonpaldo

Joseonpaldo

์กฐ์„ ํŒ”๋„(Joseonpaldo)

๊ฐœ๋ฐœ์ผ์ •: 7/19/2024 ~ 9/18/2024

https://joseonpaldo.site

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

Team

Name Role Github
์ •๋ฏผ์„ Main Game, Frontend
๋ฐฐ๋™์šฐ Login, Backend https://github.com/dongwoobae
์ด๋ณ‘ํ˜„ Lobby, Chat, Frontend https://github.com/LBang98
์ดํ˜„์„ฑ Deployment, Backend https://github.com/themerous
์ •ํ™˜์šฉ Login, Backend http://github.com/marx3042
์ตœ์‹œํ˜„ Minigame(Solo) https://github.com/andychoi0819
ํ—ˆ์Šนํ•„ Minigame(Multi) https://github.com/seungpil-huh

Tech Stack

Frontend

React Next.js TypeScript Axios Socket.IO StompJS Material UI pnpm

Backend

Node.js Express Spring Boot Spring Security OAuth2 OpenID Connect JWT Spring Data JPA Gradle WebSocket Socket.IO StompJS GSON EasyJSON Swagger

DevOps

Docker Naver Cloud GitHub Actions DNS SSL

Databases

MySQL

Tools

Visual Studio Code IntelliJ IDEA DataGrip Trello Notion Google Docs

๋ชฉ์ฐจ

์†Œ๊ฐœ์˜์ƒ

YouTube Video

ERD

์ž‘์—…์ค‘

Schedule

์ž‘์—…์ค‘

Deployment

Servers

์ด๋ฏธ์ง€๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(1)

  • DNS/SSL
    • ๊ฐ€๋น„์•„ ๋„ค์ด๋ฐ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ DNS ๊ตฌ์ถ•
    • ๋„ค์ด๋ฒ„ Certificate Manager๋ฅผ ํ†ตํ•˜์—ฌ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰
  • Load Balancer
    • ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ์˜ Application Loadbalancer๋ฅผ ์‚ฌ์šฉ
    • Path๋ถ„๊ธฐ๋ฅผ ํ†ตํ•˜์—ฌ ์„œ๋น„์Šค๋ณ„๋กœ ๋ถ„๊ธฐ์  ์„ค์ •
      • /api : CRUD๋ฐ ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ๋กœ์ง์„ ์‹คํ–‰
      • /ws : ์ฑ„ํŒ… ๋ฐ ๋ฉ”์ธ๊ฒŒ์ž„์˜ ์›น์†Œ์ผ“ ํ†ต์‹ ์„ ๋‹ด๋‹น
      • /nws : ๋ฏธ๋‹ˆ๊ฒŒ์ž„๋“ค์ด ๊ตฌํ˜„๋œ ์„œ๋ฒ„
      • / : ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€
  • Servers
    • ์ด ๋‘๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์„œ๋ฒ„์—์„œ ๋ณต์ˆ˜์˜ Docker Containerํ™œ์šฉ

CI/CD

์ด๋ฏธ์ง€๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(2)

  • Github Action๋ฅผ ํ™œ์šฉํ•œ CI/CD ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ•
    • CI : Main branch๋กœ push๋˜๋Š” pull request์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉด repository์˜ ๋‚ด์—ญ์„ ํ† ๋Œ€๋กœ build๋ฅผ ์‹คํ–‰. ๋นŒ๋“œ ์„ฑ๊ณต์‹œ Dockerfile์„ ํ† ๋Œ€๋กœ Docker Image๋ฅผ ์ œ์ž‘ํ•˜์—ฌ ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ์˜ Container Reqistry๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ „์†ก
    • CD : ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ CLI๋ฅผ ํ†ตํ•˜์—ฌ ํ˜„ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜ ์‹คํ–‰์„œ๋ฒ„์—์„œ ๋ฐฐํฌ ์„œ๋ฒ„๋กœ์˜ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ ํ›„ ssh ์ ‘์†์„ ํ†ตํ•œ ์›๊ฒฉ ์ ‘์†. ์ดํ›„ ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ Container Registry์—์„œ ์‹ ๊ทœ ์ด๋ฏธ์ง€๋ฅผ pullํ•œ ํ›„ ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ง€ํ•˜๊ณ  ์ƒˆ๋กœ pullํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰. ์ž‘์—… ์™„๋ฃŒ ํ›„ ๋ถˆํ•„์š”ํ•œ ์ด๋ฏธ์ง€ ๋ฒ„์ ผ ์ œ๊ฑฐ ๋ฐ ์„œ๋ฒ„ ์ ‘๊ทผ๊ถŒํ•œ ์ œ๊ฑฐ
  • ์ด 4๊ฐœ์˜ Repository๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ Repository๋ณ„๋กœ ๊ฐ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•
    • JoseonpaldoFront : NextJS 14 ๊ธฐ๋ฐ˜์˜ ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„
    • JoseonpaldoBack : ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐ CRUD๋“ค์ด ์ด๋ฃจ์–ด์ง€๋Š” SpringBoot ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„
    • maingmaews : ๋ฉ”์ธ ๊ฒŒ์ž„์˜ ์›น์†Œ์ผ“ ํ†ต์‹  ๋ฐ ์ฑ„ํŒ…๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Springboot ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„
    • minigamews : ๋ฏธ๋‹ˆ๊ฒŒ์ž„๋“ค์˜ ์›น์†Œ์ผ“ ํ†ต์‹  ๋ฐ SSE๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ExpressJS ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„

Main Application

๋กœ๊ทธ์ธ

์ด๋ฏธ์ง€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(3) ์ด๋ฏธ์ง€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(3)

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

์ด๋ฏธ์ง€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(3)

  • ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค
    • JWT
      • ๋ฐœ๊ธ‰ํ•œ ํ† ํฐ์„ ํ™•์ธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค โ€œJWT Auth Filterโ€๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์ œ์ž‘
      • accessํ† ํฐ์ด ์œ„๋ณ€์กฐ, ๋˜๋Š” ๋งŒ๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰
      • access Token์ด ๋ณ€์กฐ๋˜์ง€ ์•Š๊ณ  ๋งŒ๋ฃŒ๋งŒ ๋˜์—ˆ์„ ๊ฒฝ์šฐ refresh ํ† ํฐ์œผ๋กœ accessToken์„ ์š”์ฒญํ•œ ์ •๋ณด์™€ ํ•จ๊ป˜ ์žฌ๋ฐœ๊ธ‰
      • accessToken๊ณผ refreshToken์ด ํ•จ๊ฒŒ ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ ๋กœ๊ทธ์•„์›ƒ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • CSRF
      • STATELESSํ•œ ๋กœ๊ทธ์ธ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ Spring Security์˜ ๋””ํดํŠธ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€
  • ๋กœ๊ทธ์•„์›ƒ ํ”„๋กœ์„ธ์Šค
    1. ํ† ํฐ๋“ค์˜ ๋งŒ๋ฃŒ ๋˜๋Š” ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ํด๋ฆญ์‹œ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ํ† ํฐ์„ ์‚ญ์ œ
    2. ํ† ํฐ ์‚ญ์ œ์™€ ๋™์‹œ์— ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๋กœ๊ทธ์•„์›ƒ ์š”์ฒญ ์ „๋‹ฌ
    3. ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ์šฉ์ž์˜ ์†Œ์…œ ํ”„๋กœ๋ฐ”์ด๋”๊ฐ€ ์ „๋‹ฌํ•œ accessToken์˜ ๋งŒ๋ฃŒ ์š”์ฒญ
    4. DB์—์„œ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์†Œ์…œ ํ”„๋กœ๋ฐ”์ด๋”๊ฐ€ ์ œ๊ณตํ•œ accessToken์˜ ์ •๋ณด ์‚ญ์ œ

Home

์ด๋ฏธ์ง€ ์„ค๋ช…

  • GameRoom
    • ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฒŒ์ž„๋ฐฉ ํ‘œ์‹œ
    • ์ง„ํ–‰์—ฌ๋ถ€์— ๋”ฐ๋ผ ์กฐ์‚ฌ ๊ฐ€๋Šฅ
    • ๋ฐฉ์žฅ์˜ ์ด๋ฆ„ ๋˜๋Š” ๋ฐฉ์˜ ์ œ๋ชฉ์„ ํ†ตํ•œ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ์ œ๊ณต ์ด๋ฏธ์ง€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„(4)
  • Mypage
    • ํ˜„์žฌ ๋‚˜์˜ ์Šน๋ฅ  ํ™•์ธ ๊ฐ€๋Šฅ
    • ๋‚ด๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ๊ธฐ๋Šฅ ์ œ๊ณต
  • Ranking
    • ์Šน๋ฅ  ๊ธฐ๋ฐ˜์˜ ๋žญํ‚น ํŽ˜์ด์ง€ ์ œ๊ณต
    • ๊ฐ™์€ ์Šน๋ฅ ์ผ์‹œ ํŒ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ์‚ฌ๋žŒ์ด ๋”์šฑ ๋†’์€ ๋žญํ‚น ์†Œ์œ 
    • 2์ธ/4์ธ ๋žญํ‚น์„ ๋”ฐ๋กœ ํ‘œ์‹œ

Lobby

์ด๋ฏธ์ง€ ์„ค๋ช…

  • STOMP ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ WebSocket ๊ธฐ๋ฐ˜์˜ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ตฌํ˜„
  • ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์™€ Pub/Sub ํŒจํ„ด์„ ์ ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌ

์ด๋ฏธ์ง€ ์„ค๋ช…

  • ๊ฒฝ์ฃผ๊ฒŒ์ž„
    • ๊ฒŒ์ž„์˜ ์ˆœ๋ฒˆ์„ ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฒคํŠธ์„ฑ ๊ฒŒ์ž„
    • ์„œ๋ฒ„๋Š” ๋งค๋ฒˆ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋žœ๋ค ์†๋„ ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์†๋„ ๊ฐ’์„ ๋ฐ›์•„ ์ž์‹ ์˜ ์บ๋ฆญํ„ฐ๊ฐ€ ๊ฒฝ์ฃผ ํŠธ๋ž™์—์„œ ํ•ด๋‹น ์†๋„์— ๋งž์ถฐ ์ด๋™ํ•˜๋„๋ก ๋ Œ๋”๋ง

์ด๋ฏธ์ง€ ์„ค๋ช…

  • ์ •๋ณดํ™•์ธ
    • ๋ฐฉ ์•ˆ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์Šน๋ฅ  ๋“ฑ์˜ ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ

์ด๋ฏธ์ง€ ์„ค๋ช…

  • ์นœ๊ตฌ์ดˆ๋Œ€
    • ๋นˆ ์ž๋ฆฌ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์นœ๊ตฌ ์ดˆ๋Œ€ ๊ฐ€๋Šฅ
    • ์นœ๊ตฌ ์ดˆ๋Œ€ ํด๋ฆญ์‹œ ๋‚ด ์นœ๊ตฌ์ฐฝ์—์„œ ์›ํ•˜๋Š” ์นœ๊ตฌ๋ฅผ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค
    • ๋Œ€์ƒ์ž์—๊ฒŒ๋Š” ์ˆ˜๋ฝ/๊ฑฐ์ ˆ ์„ ํƒ์ง€๊ฐ€ ์ฃผ์–ด์ง„ ๋ฉ”์„ธ์ง€ ๋ชจ๋‹ฌ์ด ์ถœ๋ ฅ๋œ๋‹ค

Chatting

์ด๋ฏธ์ง€ ์„ค๋ช…

  • WebSocket ๊ธฐ๋ฐ˜์˜ ์ฑ„ํŒ… ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•
  • Spring WebSocket๊ณผ STOMP๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์ „์†ก ์ง€์—ฐ์„ ์ตœ์†Œํ™”
  • ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์นœ๊ตฌ๋ฅผ ๊ฒŒ์ž„์— ์ดˆ๋Œ€ํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๋ฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ†ต์‹ ์„ ๋„์ž…
  • ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์™€ ์ฆ‰๊ฐ์ ์ธ ์นœ๊ตฌ ์ดˆ๋Œ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ๋ฐœ

Main Game

Mini Game

๋‹ค์–‘ํ•œ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๋ฏธ๋‹ˆ๊ฒŒ์ž„์„ ์ œ๊ณตํ•˜๋Š” ์›น ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„์€ ์„œ๋ฒ„์™€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ†ต์‹ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ๋ช…์˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋™์‹œ์— ์ฆ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์š” ๊ธฐ๋Šฅ

    • ์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด: Socket.io๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ”Œ๋ ˆ์ด์–ด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ์ค‘์•™ํ™”๋œ ๊ฒŒ์ž„ ๋กœ์ง: ๊ฒŒ์ž„ ๋กœ์ง์€ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ณต์ •ํ•œ ๊ฒŒ์ž„ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์–‘ํ•œ ๋ฏธ๋‹ˆ๊ฒŒ์ž„: ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ทœ์น™๊ณผ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง„ ๋„ค ๊ฐœ์˜ ๋ฏธ๋‹ˆ๊ฒŒ์ž„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Singleplay

    ์Šˆํ„ฐ

    • Alien Shooter : ์šฐ์ฃผ์„ ์„ ์ขŒ์šฐ๋กœ ์ด๋™์‹œํ‚ค๋ฉฐ ์™ธ๊ณ„์ธ๊ณผ ํŠน๋ณ„ํ•œ ์ ๋“ค์„ ์ฒ˜์น˜
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ์ขŒ์šฐ ๋ฒ„ํŠผ์„ ํ†ตํ•˜์—ฌ ์ด๋™
        • ์ŠคํŽ˜์ด์Šค ๋ฒ„ํŠผ์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ๊ฒฉ ๋ฐ ์žฌ์žฅ์ „(ํƒ„ํ™˜ 10๋ฐœ)
      • ๊ทœ์น™
        • ์ œํ•œ ์‹œ๊ฐ„ 30์ดˆ
        • ์ ์ด ๋‚˜๋ฅผ ์ง€๋‚ ๋–„๊นŒ์ง€ ๊ฒฉ์ถ” ์‹คํŒจ์‹œ ํŒจ๋ฐฐ
      • ๊ฒŒ์ž„ ๋กœ์ง
        • Alien ์ƒ์„ฑ: ๋งค์ดˆ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์™ธ๊ณ„์ธ์ด ์ƒ์„ฑ๋˜๋ฉฐ ์ตœ๋Œ€ 15๊ฐœ์˜ ์™ธ๊ณ„์ธ์ด ๋™์‹œ์— ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.
        • ์ถฉ๋Œ ๊ฐ์ง€: ํƒ„ํ™˜๊ณผ ์™ธ๊ณ„์ธ ๋˜๋Š” ํŠน๋ณ„ํ•œ ์ ์ด ์ถฉ๋Œํ•  ๋•Œ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ์ ์ค‘๋œ ์™ธ๊ณ„์ธ์€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค

    RPS

    • ๊ฐ€์œ„๋ฐ”์œ„๋ณด : ๊ฐ€์œ„, ๋ฐ”์œ„, ๋ณด ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ปดํ“จํ„ฐ์™€ 3๋ผ์šด๋“œ ๋Œ€๊ฒฐ
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ๊ฐ€์œ„, ๋ฐ”์œ„, ๋ณด ์ค‘ ํ•œ๊ฐ€์ง€๋ฅผ ์„ ํƒ
      • ๊ทœ์น™
        • ๊ฐ ๋ผ์šด๋“œ๋ณ„ ์„ ํƒ์‹œ๊ฐ„ 3์ดˆ
        • ๋ฌด์Šน๋ถ€์‹œ ํ•ด๋‹น ๋ผ์šด๋“œ ์žฌ์‹œ์ž‘
      • ๊ฒŒ์ž„ ๋กœ์ง
        • ํƒ€์ด๋จธ: ๊ฐ ๋ผ์šด๋“œ๋Š” 3์ดˆ ๋‚ด์— ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ํŒจ๋ฐฐ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
        • ์ ์ˆ˜ ๊ณ„์‚ฐ: ํ”Œ๋ ˆ์ด์–ด์™€ ์ปดํ“จํ„ฐ์˜ ์ŠนํŒจ๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋˜๋ฉด ์Šน์ž๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

    ํญํƒ„

    • ํญํƒ„ ํ•ด์ฒด
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ํ”Œ๋ ˆ์ด์–ด๋Š” ๋‘ ๊ฐ€์ง€ ์™€์ด์–ด(๋นจ๊ฐ•, ํŒŒ๋ž‘) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ํญํƒ„์„ ํ•ด์ฒด
      • ๊ฒŒ์ž„ ๋กœ์ง
        • ํ•ด์ฒด ์„ฑ๊ณต/์‹คํŒจ: ์˜ฌ๋ฐ”๋ฅธ ์™€์ด์–ด๋ฅผ ์„ ํƒํ•˜๋ฉด ํญํƒ„์ด ํ•ด์ฒด๋˜๊ณ , ์ž˜๋ชป๋œ ์™€์ด์–ด๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค

    ํ”Œ๋žซํผ

    • ํ”Œ๋žซํผ ๊ฒŒ์ž„ : ์žฅ์• ๋ฌผ๊ณผ ๋กœ์ผ“์„ ํ”ผํ•˜๋ฉด์„œ ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋‚ด์— ๋ชฉํ‘œ์— ๋„๋‹ฌ
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ขŒ์šฐ ์ด๋™
        • ์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•˜์—ฌ ์ ํ”„
        • gํ‚ค๋ฅผ ํ†ตํ•œ ์‚ฌ๋‹ค๋ฆฌ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ
      • ๊ฒŒ์ž„ ๋กœ์ง
        • ์ค‘๋ ฅ ๋ฐ ์ ํ”„: ํ”Œ๋ ˆ์ด์–ด์˜ ์ค‘๋ ฅ๊ณผ ์ ํ”„ ๋กœ์ง์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ”Œ๋žซํผ์— ๋„์ฐฉํ•˜๋ฉด ์ ํ”„ ์ƒํƒœ๊ฐ€ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค
        • ๋กœ์ผ“ ์ƒ์„ฑ ๋ฐ ์ด๋™: 5์ดˆ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋กœ์ผ“์ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋กœ์ผ“์€ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๊ณต๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ๋‚ ์•„์˜ต๋‹ˆ๋‹ค
  • Multiplay

    ๋ฌด๊ถํ™”

    • ๋ฌด๊ถํ™” ๊ฝƒ์ด ํ”ผ์—ˆ์Šต๋‹ˆ๋‹ค : 4์ธ์šฉ ์„œ๋ฐ”์ด๋ฒŒ ๊ฒŒ์ž„์œผ๋กœ, ์ˆ ๋ž˜๊ฐ€ ๋Œ์•„๋ณด๋Š” ํƒ€์ด๋ฐ์„ ํ”ผํ•ด ๊ฒฐ์Šน์„ ์— ๋จผ์ € ๋„์ฐฉํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์Šน๋ฆฌ
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ˆŒ๋Ÿฌ ์•ž์œผ๋กœ ์ „์ง„ํ•ฉ๋‹ˆ๋‹ค.
        • ์ˆ ๋ž˜๊ฐ€ "๋ฌด๊ถํ™” ๊ฝƒ์ด ํ”ผ์—ˆ์Šต๋‹ˆ๋‹ค"๋ฅผ ์™ธ์น  ๋•Œ๋งŒ ์›€์ง์ž…๋‹ˆ๋‹ค.
        • ์ˆ ๋ž˜๊ฐ€ ๋Œ์•„๋ณผ ๋•Œ ์›€์ง์ด๋ฉด ํƒˆ๋ฝํ•ฉ๋‹ˆ๋‹ค.
      • ๊ทœ์น™
        • ์ œํ•œ ์‹œ๊ฐ„์€ 1๋ถ„์ž…๋‹ˆ๋‹ค.
        • ๊ฐ€์žฅ ๋จผ์ € ๊ฒฐ์Šน์„ ์— ๋„์ฐฉํ•œ ํ”Œ๋ ˆ์ด์–ด๋งŒ ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
        • ์‹œ๊ฐ„ ๋‚ด์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ „์› ํƒˆ๋ฝํ•ฉ๋‹ˆ๋‹ค.
        • ์ˆ ๋ž˜์˜ ๋Œ์•„๋ณด๋Š” ํƒ€์ด๋ฐ์€ ๋žœ๋ค์ž…๋‹ˆ๋‹ค.

    ์Šค๋„ค์ดํฌ

    • ์Šค๋„ค์ดํฌ ๊ฒŒ์ž„ : ๋ฑ€์„ ์กฐ์ข…ํ•˜์—ฌ ๊ฐ€์žฅ ์˜ค๋ž˜ ์‚ด์•„๋‚จ๊ฑฐ๋‚˜ ๋†’์€ ์ ์ˆ˜๋ฅผ ์–ป๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์Šน๋ฆฌํ•˜๋Š” 4์ธ์šฉ ์„œ๋ฐ”์ด๋ฒŒ ๊ฒŒ์ž„
      • ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•
        • ๋ฐฉํ–ฅํ‚ค (w,a,s,d) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฑ€์˜ ๋ฐฉํ–ฅ์„ ์กฐ์ข…ํ•ฉ๋‹ˆ๋‹ค.
        • ์ผ๋ฐ˜ ์‚ฌ๊ณผ์™€ ํ™ฉ๊ธˆ ์‚ฌ๊ณผ๋ฅผ ๋จน์–ด ์ ์ˆ˜๋ฅผ ํš๋“ํ•˜๊ณ  ๊ผฌ๋ฆฌ๋ฅผ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
        • ๋‹ค๋ฅธ ๋ฑ€, ์ž์‹ ์˜ ๋ชธํ†ต, ๋ฒฝ์— ๋ถ€๋”ชํžˆ์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ฉ๋‹ˆ๋‹ค.
      • ๊ทœ์น™
        • ์ผ๋ฐ˜ ์‚ฌ๊ณผ: 10์  ํš๋“, ๊ผฌ๋ฆฌ +1 ์ฆ๊ฐ€
        • ํ™ฉ๊ธˆ ์‚ฌ๊ณผ: 50์  ํš๋“, ๊ผฌ๋ฆฌ +5 ์ฆ๊ฐ€
        • ๊ผฌ๋ฆฌ๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก ์กฐ์ž‘ ๋‚œ์ด๋„๊ฐ€ ์ƒ์Šนํ•ฉ๋‹ˆ๋‹ค.
        • ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ƒ์กดํ•˜๊ฑฐ๋‚˜ ์ตœ๊ณ  ์ ์ˆ˜๋ฅผ ํš๋“ํ•˜๋ฉด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

API ๋ช…์„ธ์„œ

์ด๋ฏธ์ง€ ์„ค๋ช…

์ด๋ฏธ์ง€ ์„ค๋ช…

์ด๋ฏธ์ง€ ์„ค๋ช…

  • swagger์™€ spring docs๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑ
  • authorize ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ spring security๋กœ ๋ณดํ˜ธ๋œ ์—”๋“œํฌ์ธํŠธ๋„ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ

Pinned Loading

  1. .github .github Public

Repositories

Showing 5 of 5 repositories
  • .github Public
    Joseonpaldo/.githubโ€™s past year of commit activity
    0 0 0 0 Updated Oct 31, 2024
  • minigame Public
    Joseonpaldo/minigameโ€™s past year of commit activity
    JavaScript 0 1 0 0 Updated Sep 18, 2024
  • Joseonpaldo/joseonpaldo_frontendโ€™s past year of commit activity
    JavaScript 1 MIT 1 0 1 Updated Sep 17, 2024
  • maingamews Public
    Joseonpaldo/maingamewsโ€™s past year of commit activity
    Java 0 1 0 0 Updated Sep 14, 2024
  • Joseonpaldo/joseonpaldo_backendโ€™s past year of commit activity
    Java 1 1 0 0 Updated Sep 13, 2024

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ