Skip to content

Labin97/Transcendence

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Transcendence

๋ชฉ์ฐจ

  1. ๐Ÿ—ฃ๏ธ ํ”„๋กœ์ ํŠธ ์„ค๋ช…
  2. ๐Ÿฆพ ๊ธฐ์ˆ  ์Šคํƒ
  3. ๐Ÿค– ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•
  4. ๐Ÿ–‹๏ธ ๊ธฐ๋Šฅ ์„ค๋ช…
  5. ๐Ÿ“น ์Šคํฌ๋ฆฐ์ƒท
  6. ๐Ÿ”– ์•„ํ‚คํ…์ฒ˜
  7. ๐Ÿ—„๏ธ Team

ํ”„๋กœ์ ํŠธ ์„ค๋ช…

Transcendence ๋Š” ํด๋ž˜์‹ Pong game์„ ์žฌํ•ด์„ํ•œ ์›น์‚ฌ์ดํŠธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋‹๋ผ JavaScript๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋ก ํŠธ์—”๋“œ์™€ Django ๋ฐฑ์—”๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด์–ด ์˜จ๋ผ์ธ ๊ฒŒ์ž„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์Šคํƒ

Figma JavaScript HTML CSS TailwindCSS

Docker_Compose Nginx Python Django PostgreSQL Daphne Gunicorn OAuth Prometheus Grafana Redis Elasticsearch Logstash Kibana

์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

local์—์„œ ๋‹ค์šด ๋ฐ›๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‚ฌ์ „์„ค์ • ํ™•์ธ

ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด ๋ฐ›๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์•„๋ž˜ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

  • Docker
  • Docker Compose

์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ํด๋ก  ๋ ˆํฌ์ง€ํ† ๋ฆฌ

    https://github.com/42Nuts/Transcendence.git
  2. ํŒŒ์ผ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ

    cd Transcendence
  3. env ํŒŒ์ผ ์„ค์ •

    1. ์„œ๋ฒ„ IP์™€ ํฌํŠธ ํ™•์ธ

      SERVER_IP=127.0.0.1 # localhost
      SERVER_PORT=5500 # ์—ด๋ฆฐ ํฌํŠธ ์„ค์ •
      
      # NGINX
      NGINX_HOST=nginx
      NGINX_PORT=5500 # nginx ํฌํŠธ๋„ ๊ฐ™์€ ํฌํŠธ๋กœ ์„ค์ •
    2. 42 client id ๋ฐ 42 client secret ํ‚ค ํ™•์ธ

      1. 42 intra์—์„œ API ํ‚ค ๋ฐœ๊ธ‰ ๋ฐ redirect URI ์„ค์ •

        https://127.0.0.1:5500/42oauth/ (์ง€์ •ํ•œ ์„œ๋ฒ„ IP์™€ ํฌํŠธ๋กœ ์„ค์ •)

      2. 42 client id ๋ฐ 42 client secret ํ‚ค ๋ณ€๊ฒฝ

        FOURTYTWO_CLIENT_ID=${๋ฐœ๊ธ‰๋ฐ›์€ UID}
        FOURTYTWO_CLIENT_SECRET=${๋ฐœ๊ธ‰๋ฐ›์€ SECRET}
  4. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

    1. Docker ์‹คํ–‰

    2. ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ

      make
  5. ๋กœ์ปฌํ˜ธ์ŠคํŠธ ์ ‘์†

ํŒ

๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ์Šค์Šค๋กœ ๋””๋ฒ„๊น…ํ•˜์„ธ์š”.

๊ธฐ๋Šฅ ์„ค๋ช…

  • ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ
    • ์›๊ฒฉ ์ธ์ฆ ๊ตฌํ˜„.
  • ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜
    • ์›๊ฒฉ ํ”Œ๋ ˆ์ด์–ด์™€์˜ ์‹ค์‹œ๊ฐ„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด.
    • ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๋ชจ๋“œ (2์ธ ๋ฐ 4์ธ ๊ฒŒ์ž„).
    • ๋‹คํฌ ๋ชจ๋“œ, ํ…Œ๋งˆ ๋ณ€๊ฒฝ, ์œ ์ € ํ”„๋กœํ•„ ๊ด€๋ฆฌ.
  • DevOps
    • ๋กœ๊ทธ ๊ด€๋ฆฌ ๋ฐ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ์ธํ”„๋ผ ์„ค์ •.

์Šคํฌ๋ฆฐ์ƒท

1 3 8

์•„ํ‚คํ…์ฒ˜

Frontend

Figma JavaScript HTML CSS TailwindCSS

  • Framework/Library: ํ”„๋ก ํŠธ์—”๋“œ๋Š” ๋ฐ”๋‹๋ผ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆํ™”๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•˜์˜€๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
  • Single Page Application (SPA): ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์ด ์—†๋Š” ์›ํ™œํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ปค์Šคํ…€ ๋ผ์šฐํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•œ SPA ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • State Management: Redux ๋˜๋Š” Vuex์™€ ์œ ์‚ฌํ•œ Store ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜์˜€์œผ๋ฉฐ, ํ•ด๋‹น ์ฝ”๋“œ๋Š” frontend/src/store/index.js์— ์œ„์น˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Styling: ๋””์ž์ธ ๋‹จ๊ณ„๋ถ€ํ„ฐ Figma๋ฅผ ํ™œ์šฉํ•ด ์ปดํฌ๋„ŒํŠธํ™”๋œ ๊ตฌ์กฐ๋ฅผ ๊ธฐํšํ–ˆ์œผ๋ฉฐ, Tailwind CSS๋ฅผ ์‚ฌ์šฉํ•ด ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Backend

Docker_Compose Nginx Python Django PostgreSQL Daphne Gunicorn OAuth Prometheus Grafana Redis Elasticsearch Logstash Kibana

  • Framework: Python ๊ธฐ๋ฐ˜ Django ์›น ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ
    • Gunicorn: ๋™๊ธฐ์‹ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” WSGI ์„œ๋ฒ„
    • Daphne: ๋น„๋™๊ธฐ WebSocket ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ASGI ์„œ๋ฒ„
  • Database: PostgreSQL ์‚ฌ์šฉ
  • Authentication: 42๋ฅผ ์‚ฌ์šฉํ•œ OAuth 2.0 ์ธ์ฆ
  • Nginx
    • SSL/TLS: HTTPS ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ๊ตฌํ˜„
    • Reverse Proxy: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ Django ๋ฐฑ์—”๋“œ๋กœ ํ”„๋ก์‹œํ•˜์—ฌ ์ „๋‹ฌ
    • ์ •์  ํŒŒ์ผ ์ œ๊ณต: ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ƒ์„ฑ๋œ ์ตœ์‹  ์ •์  ํŒŒ์ผ(JS, CSS ๋“ฑ)์„ ์ œ๊ณต
  • Docker
    • ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ: ๊ฐ ์„œ๋น„์Šค๋Š” Docker์™€ Docker Compose๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Nginx, Django, PostgreSQL, Redis, Prometheus, Grafana ๋“ฑ ๊ฐ ์„œ๋น„์Šค์˜ ๋…๋ฆฝ์  ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰
    • ์ •์  ํŒŒ์ผ ๊ณต์œ : Docker ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์—ฌ Nginx ์ปจํ…Œ์ด๋„ˆ์™€ ์ •์  ํŒŒ์ผ์„ ๊ณต์œ ํ•ด, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์ตœ์‹  ํŒŒ์ผ ์ œ๊ณต ๊ฐ€๋Šฅ
    • ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ: ๊ฐœ๋ฐœ ์ค‘ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋˜๋„๋ก ํ•˜์—ฌ ๋น ๋ฅธ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • Monitoring & Logging
    • ELK: Elasticsearch, Logstash, Kibana๋กœ ๊ตฌ์„ฑ๋œ ๋กœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธํ”„๋ผ ์„ค์ •
    • Prometheus/Grafana: ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด Prometheus์™€ Grafana๋ฅผ ์‚ฌ์šฉ

Game

  • ์›น์†Œ์ผ“: ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด๋ฅผ ์œ„ํ•œ ์›น์†Œ์ผ“ ๊ธฐ๋ฐ˜ ํ†ต์‹  ๊ตฌํ˜„.

์ธํ”„๋ผ ๊ตฌ์กฐ๋„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-09-06 แ„‹แ…ฉแ„’แ…ฎ 5 41 53

Team

๐Ÿ” leechan02 ๐Ÿ˜Ž GCgang ๐ŸŒž gitubanana ๐Ÿฑ Labin97
Frontend && Design Backend && Devops Backend && Devops Game

Etc.

About

๐Ÿ“ Ping Pong Game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 57.7%
  • Python 25.6%
  • CSS 9.0%
  • Shell 3.9%
  • HTML 2.7%
  • Dockerfile 1.0%
  • Makefile 0.1%