Skip to content

42-Tomodachi/pong42

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


Logo

Multiplayer Pong & Chat Web Site

A final Project in 42




Table of Contents
  1. About The Project
  2. Getting Started
  3. Constraint
  4. Member
  5. License

About The Project


둜그인 ν™”λ©΄

pong 42λŠ” Typescript 기반의 React, Nestλ₯Ό μ‚¬μš©ν•΄μ„œ λ§Œλ“  μ±„νŒ… / 핑퐁 μ‚¬μ΄νŠΈμ΄λ‹€.

νŽ˜μ΄μ§€ κ΅¬μ„±μœΌλ‘œλŠ” νšŒμ›κ°€μž…, 메인 λ‘œλΉ„, μ±„νŒ…λ°©(일반, DM), κ²Œμž„λ°©μ΄λ©° μœ μ €μ˜ ν˜„μž¬ μƒνƒœ, μ±„νŒ…, κ²Œμž„λ“± νŠΉμ • μš”μ†Œλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λ°˜μ˜ν–ˆλ‹€.


Signup

졜초 νšŒμ›κ°€μž… 단계

signup
  • 졜초 νšŒμ›κ°€μž…μ‹œ 42APIλ₯Ό 톡해 42cadet인지 확인
  • ν”„λ‘œν•„ μž‘μ„±μ—μ„œ λ‹‰λ„€μž„λ§Œ ν•„μˆ˜ μž…λ ₯으둜 λ°›μŒ. λ”°λ‘œ ν”„λ‘œν•„ 등둝을 ν•˜μ§€ μ•ŠμœΌλ©΄ κΈ°λ³Έ ν”„λ‘œν•„μ΄ 등둝
  • νšŒμ› 등둝이 μ™„λ£Œμ‹œ κΈ°μ‘΄ 전체 μœ μ €λͺ©λ‘μ„ λ³΄λŠ” λͺ¨λ“  μœ μ €λ“€μ˜ λͺ©λ‘μ΄ μƒˆλ‘œμš΄ μœ μ €κ°€ 좔가됨.

(2차인증 ν™œμ„±ν™”μ‹œ) 2차인증

2FA
  • 42 intra에 λ“±λ‘λœ 이메일이 μ•„λ‹ˆμ–΄λ„ 2μ°¨ 인증 정보λ₯Ό 받을 이메일이면 무관
  • 맀번 λ‘œκ·ΈμΈν•  λ•Œλ§ˆλ‹€ μΈμ¦μ½”λ“œλ₯Ό κΈ°μž…ν•΄μ•Όν•˜λ©° λ‘œλΉ„μ— μžˆλŠ” λ‚΄ ν”„λ‘œν•„μ˜ 2μ°¨ 인증 λΉ„ν™œμ„±ν™”λ₯Ό λˆŒλŸ¬μ„œ ν•΄μ œν•  수 있음

Lobby

κ²Œμž„ / μ±„νŒ… λ‘œλΉ„

main lobby
  • κΈ°λ³Έ λ‘œλΉ„λŠ” κ²Œμž„λ°© λͺ©λ‘μ΄ λ³΄μ΄λŠ” κ²Œμž„ λ‘œλΉ„λ‘œ 42 PONG둜고λ₯Ό μž…λ ₯ν•˜λ©΄ κΈ°λ³Έ λ‘œλΉ„λ‘œ μ΄λ™ν•œλ‹€
  • κ²Œμž„ / μ±„νŒ… λ‘œλΉ„ λ‘˜λ‹€ λ””μžμΈ 골격은 동일(λ°© λͺ©λ‘, μœ μ € λͺ©λ‘, λ‚΄ ν”„λ‘œν•„)ν•˜λ‚˜ κ²Œμž„μ€ λž˜λ” κ²Œμž„ μž…μž₯, μ±„νŒ…μ€ 참여쀑인 μ±„νŒ…λ°©λΌλŠ” 고유 κΈ°λŠ₯이 쑴재

λ‚΄ ν”„λ‘œν•„ λ³€κ²½

update my profile
  • κ²Œμž„ νŽ˜μ΄μ§€λΉΌκ³ λŠ” λͺ¨λ“  νŽ˜μ΄μ§€μ—μ„œ λ‘œκ·ΈμΈν•œ μœ μ €μ˜ ν”„λ‘œν•„ 변경이 κ°€λŠ₯
  • λ‚΄ ν”„λ‘œν•„ μˆ˜μ • μ°½μ—μ„œ 확인 λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•ŠλŠ” 이상 λ‹‰λ„€μž„, ν”„λ‘œν•„ 사진이 κ°±μ‹ λ˜μ§„ μ•ŠλŠ”λ‹€.
  • λ˜ν•œ, λ‘˜ 쀑 ν•˜λ‚˜λΌλ„ λ³€κ²½ 사항이 있으면 ν”„λ‘œν•„ 갱신이 λœλ‹€.

μœ μ € μƒνƒœ μ‹€μ‹œκ°„ 반영(둜그인, λ‘œκ·Έμ•„μ›ƒ, κ²Œμž„μ€‘)

apply user state in live
  • 친ꡬ κ΄€κ³„λŠ” νŒ”λ‘œμž‰(Following) κ΄€κ³„λ‘œ ν•œμͺ½μ—μ„œ 친ꡬ μΆ”κ°€μ‹œ ν•΄λ‹Ή μœ μ €μ˜ 친ꡬλͺ©λ‘μ—λ§Œ ν•΄λ‹Ή μœ μ €κ°€ ν™•μΈλœλ‹€.
  • μœ μ €κ°€ 둜그인, λ‘œκ·Έμ•„μ›ƒ, κ²Œμž„μ€‘μ˜ μƒνƒœλ₯Ό μœ μ € λͺ©λ‘μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ 확인 κ°€λŠ₯

κ²Œμž„ μ΄ˆλŒ€ν•˜κΈ° / μ΄ˆλŒ€λ°›κΈ° / κ±°μ ˆν•˜κΈ°

ask game
  • κ²Œμž„ μ΄ˆλŒ€λŠ” μ–΄λŠ νŽ˜μ΄μ§€λ“  μœ μ € λͺ©λ‘μ—μ„œ νŠΉμ • μœ μ €μ˜ ν”„λ‘œν•„ 창을 λ³Ό 수 μžˆλ‹€λ©΄ λŒ€μ „ 신청이 κ°€λŠ₯ν•˜λ‹€. (단, 둜그인 μƒνƒœμΈ μœ μ €μ—κ²Œλ§Œ κ°€λŠ₯)
  • 승인과 λ™μ‹œμ— κ²Œμž„ ν™”λ©΄μœΌλ‘œ μ΄λ™ν•˜κ³ , μΉ΄μš΄νŠΈκ°€ μ‹œμž‘λœλ‹€.

In Chat

κΈ°λ³Έ μ±„νŒ… κΈ°λŠ₯

basic chatting
  • μ±„νŒ…λ°© μž…μž₯, 퇴μž₯, 강퇴 λ“± 전체 μœ μ €κ°€ μ•Œμ•„μ•Όν•  λ‚΄μš©μ€ λΈŒλ‘œλ“œμΊμŠ€νŒ… λ°©μ‹μœΌλ‘œ μ±„νŒ…μ°½ μ•ˆμ— 곡지 λ©”μ„Έμ§€λ‘œ ν‘œκΈ°λœλ‹€.
  • μ±„νŒ…λ°©μ— μž…μž₯ν•œ μ΄ν›„μ˜ μ±„νŒ…λ§Œ λ³Ό 수 μžˆλ‹€.
  • μ±„νŒ… 내역은 DB에 μ €μž₯λœλ‹€.
  • μ°¨λ‹¨ν•œ μœ μ €μ˜ 경우 μ°¨λ‹¨ν•œ μ‹œμ  μ΄ν›„μ˜ μ±„νŒ…μ€ 보이지 μ•ŠλŠ”λ‹€. 차단을 ν•΄μ œν•˜λ©΄ μ΄μ „μ˜ λͺ¨λ“  메세지λ₯Ό λ³Ό 수 μžˆλ‹€.

μ±„νŒ…λ°© λ‚΄ κΆŒν•œμ— λ”°λ₯Έ κΈ°λŠ₯

authority in chat room
  • μ±„νŒ…λ°© λ‚΄ κΆŒν•œμ€ λ°© 주인, κ΄€λ¦¬μž, 일반으둜 λ‚˜λ‰˜λ©° 각 κΆŒν•œμ— 따라 μœ μ € ν”„λ‘œν•„μ„ λ³Ό λ•Œ λ³΄μ—¬μ§€λŠ” ν”„λ‘œν•„ ꡬ성이 λ‹€λ₯΄λ‹€.
  • λ°© κ΄€λ¦¬μžλΌ 해도 λ°© 주인을 강퇴, μŒμ†Œκ±°ν•  μˆ˜λŠ” μ—†λ‹€.
  • 강퇴, μŒμ†Œκ±°μ‹œ 10μ΄ˆκ°„ ν•΄λ‹Ή μœ μ €λŠ” μž¬μž…μž₯, μ±„νŒ… μž…λ ₯이 κΈˆμ§€λœλ‹€.
  • λ°© 주인이 방을 λ‚˜κ°ˆ 경우 ν•΄λ‹Ή μ±„νŒ…λ°©μ€ μ‚­μ œλœλ‹€.

λ°© μ„€μ • λ³€κ²½

update chat room setup
  • λ°© 섀정은 였직 λ°© 주인만 변경이 κ°€λŠ₯ν•˜λ‹€.
  • λ°© λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜λ©΄ μžλ™μœΌλ‘œ λΉ„κ³΅κ°œλ°©μœΌλ‘œ λ³€κ²½λœλ‹€.
  • 곡개방일 λ•Œ μž…μž₯ν•œ μœ μ €λŠ” λΉ„κ³΅κ°œλ°©μœΌλ‘œ λ³€κ²½λ˜μ–΄λ„ λ°© λ‚˜κ°€κΈ°λ₯Ό ν•˜μ§€ μ•ŠλŠ” 이상 μž…μž₯ν•  λ•Œ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•  ν•„μš”κ°€ μ—†λ‹€.

DM 보내기

send dm
  • μ±„νŒ…λ°© μ•ˆμ—μ„œλ§Œμ΄ μ•„λ‹ˆλΌ μœ μ € ν”„λ‘œν•„μ„ λ³Ό 수 μžˆλŠ” μ–΄λ””μ„œλ“  νŠΉμ • μœ μ €μ—κ²Œ DM을 보낼 수 μžˆλ‹€.
  • 참여쀑인 μ±„νŒ…λ°© λͺ©λ‘μ—μ„œ ν™œμ„±ν™” 된 DM방을 확인할 수 μžˆλ‹€.

In Game

일반 κ²Œμž„

start normal game

[ μƒˆ κ²Œμž„ λ§Œλ“€κΈ° 및 κ²Œμž„ μ„€μ • ]

  • λ°© λ§Œλ“€κΈ°λ₯Ό 톡해 κ²Œμž„λ°©μ„ λ§Œλ“€κ³  μƒλŒ€λ°©μ˜ μž…μž₯을 기닀릴 수 μžˆλ‹€.
  • λΉ„λ°€λ²ˆν˜Έλ₯Ό μ„€μ •ν•΄ λͺ¨λ₯΄λŠ” μ‚¬λžŒμ˜ μž…μž₯을 μ œν•œν•  수 μžˆλ‹€.
  • κΈ°λ³Έ κ²Œμž„ λͺ¨λ“œλŠ” 일반 λͺ¨λ“œ, μŠ€ν”Όλ“œ λͺ¨λ“œμ™€ μž₯μ• λ¬Ό λͺ¨λ“œλ₯Ό μ„€μ •ν•  수 μžˆλ‹€.
  • ( λ ˆλ”μ™€ λ“€μ–Ό λ§€μΉ˜μ—μ„œλŠ” 일반λͺ¨λ“œλ‘œλ§Œ ν”Œλ ˆμ΄ν•  수 μžˆλ‹€ )

    [ κ²Œμž„ ν”Œλ ˆμ΄ ]

  • λŒ€μ „ μƒλŒ€κ°€ μž…μž₯ν•˜λ©΄, μ¦‰μ‹œ 5초 μΉ΄μš΄νŠΈλ‹€μš΄ ν›„ κ²Œμž„μ„ μ‹œμž‘ν•œλ‹€.
  • ν‚€λ³΄λ“œμ˜ 쒌우 λ°©ν–₯ν‚€λ₯Ό μ΄μš©ν•΄ νŒ¨λ“€ μœ„μΉ˜λ₯Ό μ‘°μ •ν•  수 μžˆλ‹€.
  • 10점을 λ¨Όμ € λ“μ ν•˜λŠ” μͺ½μ΄ μŠΉλ¦¬ν•˜λŠ” κ·œμΉ™, 쀑간에 접속이 λŠμ–΄μ§€λŠ” μͺ½μ€ λͺ°μˆ˜νŒ¨ μ²˜λ¦¬ν•œλ‹€.

    [ κ΄€μ „ κΈ°λŠ₯ ]

  • λͺ¨λ“  κ²Œμž„μ€ 관전이 κ°€λŠ₯ν•˜λ‹€. κ΄€μ „ν•˜λŠ” 방법은,
    • κ²Œμž„λ°© λͺ©λ‘μ—μ„œ μ‹œμž‘ 카운트 쀑 ν˜Ήμ€, κ²Œμž„ μ‹œμž‘ν•œ 방에 μž…μž₯ ν•˜κ±°λ‚˜,
    • κ²Œμž„ 쀑인 μƒλŒ€μ˜ ν”„λ‘œν•„μ—μ„œ κ΄€μ „ν•˜κΈ° λ²„νŠΌμ„ 이용.
  • κ΄€μ „μžλŠ” λ‹¨μˆœ κ΄€μ „ μ™Έμ˜ μ–΄λ–€ μ‘°μž‘λ„ λΆˆκ°€λŠ₯.

κ²Œμž„ λͺ¨λ“œ μ„€μ •( μ˜ˆμ‹œ: μž₯μ• λ¬Ό λͺ¨λ“œ )

start obstacle game
  • κ²Œμž„ 생성 μ‹œ, κ²Œμž„ λͺ¨λ“œλ₯Ό λ³€κ²½ν•˜λ©΄, μ‹œμž‘ μ‹œ ν•΄λ‹Ή λͺ¨λ“œλ‘œ κ²Œμž„μ΄ 싀행됨.
  • μŠ€ν”Όλ“œ λͺ¨λ“œ: 곡의 이동 속도가 2λ°° 빠름
  • μž₯μ• λ¬Ό λͺ¨λ“œ: 곡이 νŠ•κ²¨λ‚˜λŠ” μž₯애물이 맡에 배치됨

λž˜λ” 맀칭

match ladder game

[ λž˜λ” μ„€λͺ… ]

  • μΌλ°˜κ²Œμž„κ³Ό κ΅¬λΆ„ν•˜μ—¬, μˆœμœ„κ²½μŸμ„ μœ„ν•œ λž˜λ”κ²Œμž„μ΄ λ”°λ‘œ μ‘΄μž¬ν•¨.
  • λž˜λ”κ²Œμž„μ€ ν”Œλ ˆμ΄μ–΄κ°€ 직접 λŒ€μ „μƒλŒ€λ₯Ό μ •ν•  수 μ—†κ³ , μ„œλ²„μ˜ 맀칭 μ‹œμŠ€ν…œμ— λ”°λΌμ„œλ§Œ μƒλŒ€κ°€ 정해짐.
  • λ ˆλ”κ²Œμž„ κ²°κ³ΌλŠ” μΌλ°˜κ²Œμž„κ³Ό κ΅¬λΆ„ν•΄μ„œ μ €μž₯ 됨.
  • ν”Œλ ˆμ΄μ–΄ λ ˆλ²¨μ€ λ ˆλ” μ „μ μœΌλ‘œλ§Œ κ³„μ‚°λœλ‹€.

    [ λž˜λ” 맀칭 κ·œμΉ™ ]

  • λž˜λ” 맀칭은 λ ˆλ²¨μ— 따라 레벨 차이가 적은 ν”Œλ ˆμ΄μ–΄λ₯Ό μš°μ„ μœΌλ‘œ λ§€μΉ­ν•˜λ„λ‘ 함.
  • 맀칭 방식은,
    • μ΅œμ΄ˆμ—λŠ” 레벨 차이가 5 이내인 ν”Œλ ˆμ΄μ–΄λ₯Ό 탐색,
    • 쑰건에 λ§žλŠ” ν”Œλ ˆμ΄μ–΄κ°€ μ—†λ‹€λ©΄, 맀 초 탐색 λ²”μœ„λ₯Ό 2λ°°μ”© λŠ˜μ—¬κ°.
    • 7μ΄ˆλ™μ•ˆ 쑰건에 λ§žλŠ” ν”Œλ ˆμ΄μ–΄λ₯Ό 찾지 λͺ»ν•˜λ©΄, 맀칭 κ°€λŠ₯ν•œ κ°€μž₯ 였래 λŒ€κΈ°ν•œ ν”Œλ ˆμ΄μ–΄μ™€ 맀칭
    • ( 예: 5, 10, 20, 40, 80, 160, INT_MAX)
  • λ”°λΌμ„œ, μ˜ˆμ‹œμ²˜λŸΌ λ¨Όμ € λž˜λ”λ§€μΉ­μ„ μš”μ²­ν•œ κ³  레벨 μœ μ €κ°€ λ§€μΉ­λ˜μ§€ μ•Šκ³ , λ‚˜μ€‘μ— λž˜λ”λ§€μΉ­μ„ μš”μ²­ν•œ μ € 레벨 μœ μ €μ™€ 맀칭이 성사됨.

back to top

Getting Started

Prerequisites

  1. λ³Έ ν”„λ‘œμ νŠΈλŠ” 42 intraλ₯Ό μ΄μš©ν•  수 μžˆλŠ” 42cadet이어야 정상 이용이 κ°€λŠ₯ν•˜λ‹€.

  2. 42API둜 λ°œκΈ‰λ°›μ€ UID, secret key, redirection URL을 μ‚¬μš©ν•΄ 각 μ»¨ν…Œμ΄λ„ˆλ³„ .env에 ν•΄λ‹Ή 값듀을 μž‘μ„±ν•΄μ€˜μ•Ό ν•œλ‹€.

  3. docker, docker-composeκ°€ μ„€μΉ˜λœ ν™˜κ²½μ΄μ–΄μ•Ό ν•œλ‹€.

Installation

  1. clone this project at github
  git clone https://github.com/42-Tomodachi/ft_transcendence
  1. run docker-compose at project root path
  cd ft_transcendence && docker-compose up --build

back to top

Constraint

졜초 λͺ©ν‘œλ‘œ μž‘μ€ κΈ°κ°„(about 45days)μ•ˆμ— μ™„μ„±ν•˜κΈ° μœ„ν•΄ λ†“μΉ˜κ±°λ‚˜ κ°„κ³Όν•œ 섀계, κΈ°λŠ₯λ“€

Frontend

곡톡

    1. μ΅œμ ν™”λ₯Ό κ³ λ €ν•˜μ§€μ•Šκ³  κ΅¬ν˜„ν–ˆκΈ°μ— λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ΄ 많이 λ°œμƒν•œλ‹€.
    2. Next.jsκ°€ μ•„λ‹Œ CRAλ₯Ό μ‚¬μš©
    3. μž¬μ‚¬μš© κ°€λŠ₯ν•œ 뢀뢄이 λ§Žμ§€λ§Œ 고유 μ»΄ν¬λ„ŒνŠΈλ‘œ μ œμž‘(특히 λͺ¨λ‹¬)
    4. 배포용으둜 도컀 파일이 μž‘μ„±λ˜μ–΄ μžˆμ§€ μ•ŠμŒ
    5. 배포λ₯Ό ν•  μ‹œ λ°±μ—”λ“œμ— μ’…μ†λ˜μ–΄ 있음
    6. μœ μ €μ—κ²Œ μ•Œλ €μ€„ λͺ©μ μœΌλ‘œ antd notification을 μ μš©ν•˜λ € ν–ˆμœΌλ‚˜ κΈ°μ‘΄ λ””μžμΈ 변동이 λ°œμƒν•΄ 적용 μ‹€νŒ¨
    7. 일뢀 props νƒ€μž…μ •μ˜μ— interface 미적용
    8. 2μ°¨ ν™œμ„±ν™” ν›„ λ¦¬λ Œλ”λ§ λ λ•Œλ§ˆλ‹€ 2μ°¨ 인증 둜그인 νŽ˜μ΄μ§€λ‘œ λŒμ•„κ°
    8-1. 인증번호λ₯Ό μ œλŒ€λ‘œ κΈ°μž…ν•΄λ„ μ˜€μž‘λ™μ΄ λ°œμƒν•  λ•Œκ°€ 있음
    9. μœ μ €λ¦¬μŠ€νŠΈ 정렬을 ν•œλ²ˆμ— 처리 κ°€λŠ₯(feedback)
    9-1. νŠΉμ • μœ μ €(ν΄λ¦­ν•œ) 정보λ₯Ό μ „μ—­μœΌλ‘œ 관리
    10. λͺ¨λ“  νŽ˜μ΄μ§€μ—μ„œ μ†ŒμΌ“μ„ μ“Έ 것이면 custom hookμ΄λ‚˜ μ „μ—­μ—μ„œ ν•˜λ‚˜μ˜ μ†ŒμΌ“λ§Œ κ΄€λ¦¬ν•˜λŠ”κ±Έ ꢌμž₯(feedback)
    11. κΈ°μ‘΄ APIκΈ°λŠ₯ 쀑 μ†ŒμΌ“μœΌλ‘œ λŒ€μ²΄λœ 것듀을 μ‚­μ œν•˜μ§€ μ•ŠμŒ
    12. jsdocμ‚¬μš©ν•΄ 각 μ»΄ν¬λ„ŒνŠΈ, API등을 λͺ…μ„Έν•  경우 μœ μ§€λ³΄μˆ˜μ— 용이

μ±„νŒ…

    1. μ±„νŒ… 둜그λ₯Ό μ†ŒμΌ“μœΌλ‘œ ν•œκΊΌλ²ˆμ— λ°›μ•„μ„œ 전체 λ¦¬λ Œλ”λ§ ν•΄μ£Όκ³  μžˆλ‹€. (μ΅œμ ν™” ν•„μš”)
    2. if else 뢀뢄이 미흑
    3. κ°•ν‡΄λ‹Ήν–ˆμ„ λ•Œ μœ μ €μ—κ²Œ λ”°λ‘œ λ³΄μ—¬μ£ΌλŠ” notification이 μ—†μŒ

κ²Œμž„

    1. μ„œλ²„μ˜ 톡신 λΆ€ν•˜λ₯Ό 훨씬 쀄여쀄 여지가 μžˆμœΌλ‚˜, μ μš©ν•˜μ§€ μ•ŠμŒ.
    2. λž˜κΉ… 및 μ†Œμ†Œν•œ λ²„κ·Έμš”μ†Œκ°€ μžˆλŠ”λ°, 만쑱슀러운 μˆ˜μ€€κΉŒμ§€ κ°œμ„ ν•˜μ§€ λͺ»ν•¨.
    3. μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€ μ½”λ“œ 길이가 많이 κΈ΄ 상황
    4. μœ μ‚¬ν•œ λ³€μˆ˜κ°„μ˜ μ˜λ―Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμŒ(ex. player1,2 - leftPlayer, rightPlayer)
    5. κ²Œμž„ 둜직의 νŠΉμ • μƒμˆ˜μ˜ μ˜λ―ΈνŒŒμ•…μ΄ 어렀움(λ‹Œμžμ½”λ“œ)

Backend

곡톡

    1. μ„€κ³„λ‹Ήμ‹œ 아킀텍쳐 섀계에 λŒ€ν•΄ 깊이있게 μ•Œμ§€ λͺ»ν•˜μ—¬ NestJsμ—μ„œ μ œκ³΅ν•˜λŠ” 아킀텍쳐λ₯Ό μ΄μš©ν•¨
    2. 개발 기간을 κ³ λ €ν•˜μ—¬ ν…ŒμŠ€νŠΈμ½”λ“œλŠ” MVP μ œμž‘ 이후, λ¦¬νŒ©ν† λ§ 전에 μž‘μ„±ν•˜λŠ” κ²ƒμœΌλ‘œ κ²°μ •
    3. μ΅œμ ν•œ 라이브러리λ₯Ό κ³ λ €ν•˜κ³  μ μš©ν•˜κΈ°λ³΄λ‹€λŠ”, λ‹Ήμž₯ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ” μ΅œμ†Œλ‹¨μœ„μ˜ 라이브러리 및 κΈ°λŠ₯만 μ΄μš©ν•¨.
    4. DB섀계 μ—­μ‹œ μ΅œμ ν•œ κ΅¬μ‘°λ³΄λ‹€λŠ”, ν•„μš”ν•œ μš”μ†Œλ₯Ό ν¬ν•¨μ‹œν‚€λŠ” κ²ƒμ—λ§Œ 집쀑.
    5. μ†ŒμΌ“μ„ μ΄μš©ν•œ μ‹€μ‹œκ°„ 톡신을 μ„œλΉ„μŠ€ λŒ€λΆ€λΆ„μ— μ μš©ν† λ‘ ν•˜λŠ” ν•©μ˜κ°€, 개발이 μ–΄λŠμ •λ„ μ§„ν–‰λœ μ‹œμ μ— μΆ”κ°€λ˜λ©΄μ„œ, ꡬ쑰적으둜 κΉ”λ”ν•˜μ§€ λͺ»ν•œ μš”μ†Œκ°€ λ‹€μˆ˜ λ°œμƒ.
    6. μ΄ˆκΈ°μ— λΉ λ₯Έ κ°œλ°œμ„ μœ„ν•΄, μž¬μ‚¬μš©μ„±μ΄λ‚˜ μ˜μ‘΄μ„± 등에 λŒ€ν•œ κ³ λ € 없이 μ§œμ—¬μ§„ μ½”λ“œκ°€ λ§Žμ•„, 쀑볡 κΈ°λŠ₯ ν˜Ήμ€ μˆœν™˜ μ°Έμ‘° μš”μ†Œκ°€ λ‹€μˆ˜ μ‘΄μž¬ν•¨.

μ±„νŒ…

    1. Aμœ μ €κ°€ Bμœ μ €λ₯Ό 차단 ν›„ 차단 ν•΄μ œν•  경우 μ°¨λ‹¨ν–ˆλ˜ μ‹œκ°„ λ™μ•ˆμ˜ Bμœ μ €μ˜ 메세지가 Aμ—κ²Œ λ³΄μž„. 기획 및 섀계 λ‹Ήμ‹œ μƒκ°ν•˜μ§€ λͺ»ν–ˆμŒ. κΈ°νšμ— 따라 μˆ˜μ • ν•„μš”.
    2. μ†ŒμΌ“ 연결을 νŽ˜μ΄μ§€ μ§„μž…, μ΄νƒˆ κΈ°μ€€μœΌλ‘œ μ—°κ²°, ν•΄μ œν•˜κ³  μžˆμ–΄ μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό 이동할 경우 접속쀑인 μœ μ €λ₯Ό ν‘œμ‹œν•˜λŠ” 뢀뢄이 κΉœλΉ‘μ΄λŠ” ν˜„μƒ λ°œμƒ. λ°±μ—”λ“œμ—μ„œ λ‘œκ·Έμ•„μ›ƒ μ‹œμ—λ§Œ μœ μ €μ˜ μƒνƒœκ°€ λ³€κ²½λ˜λ„λ‘ μˆ˜μ • ν•„μš”.
    3. μ±„νŒ… λ‚΄μš©μ΄λ‚˜, μ‹€μ‹œκ°„μœΌλ‘œ μœ μ € μƒνƒœ 변경을 ν•„μš”ν•œ μœ μ €μ—κ²Œ μ†‘μ‹ ν•˜λŠ” λ“±μ˜, 단기간에 λ§Žμ€ μ€‘λ³΅λœ DB접근이 λ°œμƒν•˜λŠ” 뢀뢄듀이 μžˆλŠ”λ°, redis 등을 μ΄μš©ν•œ DBμΊμ‹±μœΌλ‘œ 훨씬 κΉ”λ”ν•˜κ²Œ μ΅œμ ν™” κ°€λŠ₯ν–ˆλ‹€.
    4. μˆœν™˜μ°Έμ‘°λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ForwardRefν•¨μˆ˜λ₯Ό λ‚¨μš©ν•˜λ©΄μ„œ, μ½”λ“œμ˜ ν•΄λ‹Ή λͺ¨λ“ˆμ„ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μž¬μ‚¬μš©ν•˜κΈ°κ°€ λͺΉμ‹œ μ–΄λ €μ›Œμ‘Œλ‹€.

κ²Œμž„

    1. 졜초 섀계와 λ‹€λ₯΄κ²Œ μΆ”κ°€λœ 뢀뢄듀이 λ§Žμ•„, 이미 μ™„μ„±λœ κΈ°μ‘΄ λͺ¨λ“ˆμ„ μ œλŒ€λ‘œ ν™œμš©ν•˜μ§€ λͺ»ν•˜κ³ , 덧뢙여진 μš”μ†Œκ°€ λ‹€μˆ˜ μžˆλ‹€.
    2. κ²Œμž„ μ „λ°˜μ˜ ν”Œλ‘œμš°κ°€ νƒ„νƒ„ν•œ 섀계 λ³΄λ‹€λŠ”, κ·Έλ•Œ κ·Έλ•Œ λ°œμƒν•˜λŠ” ν•„μš”μ— μ˜μ‘΄ν•˜λ©΄μ„œ κΈ‰μ‘°λœ μš”μ†Œκ°€ 많고, μΆ”ν›„ κΈ°λŠ₯μΆ”κ°€ 및 λ³€κ²½ μ‹œ λ§Žμ€ μˆ˜μ •μ΄ ν•„μš”ν•  수 있음.

back to top

Member

Frontend

dhyeon junselee mosong sgang
dhyeon junselee mosong sgang

Backend

jihokim kankim seungyel
jihokim kankim seungyel

back to top

Resource & Reference

Resource

Convention


License

ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ΌμŠ€λ₯Ό 기반으둜 두고 μžˆμŠ΅λ‹ˆλ‹€.

back to top