๐๐ปโโ๏ธ๐๐ปโโ๏ธ ๋ฌ๋์คํ์ด Server Repository ๐๐ปโโ๏ธ๐๐ปโโ๏ธ
-
SOPT 26th APPJAM
-
ํ๋ก์ ํธ ๊ธฐ๊ฐ: 2020.06.27 ~ 2020.07.18
โจ ๊ธฐ์กด ๋ฌ๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ์ ํ์คํ ์ฐจ๋ณํ ์์๋ฅผ ์ ์ฉํ์ต๋๋ค.
- ์ฌ์ฉ์๋ '์ค์๊ฐ ๊ฒฝ์'์ด๋ผ๋ ๊ฒ์ด๋ฏธํผ์ผ์ด์ ์์๋ฅผ ํตํด ์ง๋ฃจํ ๋ฌ๋์ด ์๋, ๊ฒ์์ฒ๋ผ ์ ์พํ ๋ฌ๋์ ์ฆ๊ธธ ์ ์์ต๋๋ค.
โจ "๋ฐ๋ก, ๋ ๊ฐ์ด" ํจ๊ป ํ๋ ๊ฐ์น๋ฅผ ์ถ๊ตฌํ๊ณ ์ ํฉ๋๋ค.
- ์ด๋ค ๋จ์ฒด์ ์์๋์ง ์์๋, ๊ตณ์ด ์น๊ตฌ์ ์ฝ์์ ์ก๊ณ ๋ง๋์ง ์์๋, ์ฌ์ฉ์๋ ์ธ์ ์ด๋์๋ ๋์ ํจ๊ป ๋ธ ์๋๋ฅผ ์ฐพ์ ๊ฐ์ด ๋ฌ๋์ ์ฆ๊ธธ ์ ์์ต๋๋ค.
โจ ํธ๋ ๋ํ ๋์์ธ์ ์์๋ฅผ ํตํด ์๊ฐ์ ์ธ ์ฆ๊ฑฐ์์ ์ป์ ์ ์์ต๋๋ค.
- ํน์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ฉด ํ๋ํ ์ ์๋ ๊ฐ์ฑ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฑ์ง๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๋ฌ๋ ๋ญํน์ ํตํด ์ฌ์ฉ์์ ์ฆ๊ฑฐ์์ ๋๋ชจํ๊ณ ์ ํฉ๋๋ค. ๋, ๋๊ตฌ๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด UX ์์๋ ์ฆ๊ฑฐ์์ ๋ฐฐ๋ก ํฅ์์์ผ ์ค ๊ฑฐ์์.
- ๋ฌ๋๋ชฉํ์๊ฐ, ๋ฌ๋์ ์ฑ๋ณ์ ๋ง๋ ์ฌ๋์ ์ค์๊ฐ์ผ๋ก ๋งค์นญํ๋ค.
- ๋งค์นญ์ด ๋๋ค๋ฉด, ์์ผ ํต์ ์ ํตํด ์๋๋ฐฉ ๋ฌ๋์ ๋๊ฒฐ์ ์์ํ๋ค.
- ๋งค์นญ์ด ๋์ง ์๋๋ค๋ฉด, ๊ณผ๊ฑฐ์ ์์ ๊ณผ ๋๊ฒฐํ๊ฒ ๋๋ค.
- ์ค์ ๋ฌ๋ฆฌ๊ณ ์๋ ๊ฑฐ๋ฆฌ, ์๊ฐ, ํ์ด์ค ๋ฑ์ ์ค์๊ฐ์ผ๋ก ์๋ ค์ค๋ค.
- ์ค์๊ฐ์ผ๋ก ์๋๋ฐฉ์ด ์ด๋ ์ ๋ ๋ฌ๋ ธ๋์ง ๋ณด์ฌ์ค๋ค.
- ์์ฑํผ๋๋ฐฑ์ ํตํด, ํ์ฌ ๋ช ์๊ฐ์ด ๋จ์๋์ง ์๋ ค์ค๋ค.
- ์์ ์ด ๋ฌ๋ ธ๋ ๊ธธ์ ์ขํ, ์ง๋๋ฅผ ํตํด ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ ค์ค๋ค.
- ์ด์ ์ ๋ฌ๋ ธ๋ ๋์ ๋ฌ๋ ๊ธฐ๋ก๋ค์ ๋ณผ ์ ์๋ค.
- ๊ธฐ๋ก์๋ ๊ฑฐ๋ฆฌ, ์๊ฐ, ํ์ด์ค, ์ง๋๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ค๋ค.
- ๊ณผ๊ฑฐ์ ๊ฐ์ด ๋ฐ์๋ ์๋๋ฐฉ์ ์ ๋ณด๋ ์๋ ค์ค๋ค.
- ํ ๋ฌ์ ๊ธฐ์ค์ผ๋ก ํ๋ ๋ฌ๋ ๋ญํน ( ์ด๋ฌ์ ๋ฌ๋, ๋ช ์์ ์ ๋น, ์ก.์.์ธ)
- ๋ฑ์ง ๊ธฐ๋ฅ์ ํตํด ๋ฌ๋์ ํ๋ ๊ฒ์ ์์ด ์ฆ๊ฑฐ์์ ๋๋ผ๋๋ก ์ ๋ํ๋ค.
์๋น์ค ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ
Column | type | ์ค๋ช | PK/FK |
---|---|---|---|
user_idx | INT | ์ฌ์ฉ์์ ์ธ๋ฑ์ค๊ฐ | PK |
nickname | VARCHAR | ์ฌ์ฉ์์ ๋๋ค์ | |
id | VARCHAR | ์ฌ์ฉ์์ ID | |
password | VARCHAR | ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ | |
salt | VARCHAR | ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ Salt | |
gender | INT | ์ฌ์ฉ์์ ์ฑ๋ณ | |
level | INT | ์ฌ์ฉ์์ ๋ ๋ฒจ(์ด๊ธ, ์ค๊ธ, ๊ณ ๊ธ) | |
log_visibility | TINYINT | ์ฌ์ฉ์์ ๋ฌ๋ ๊ธฐ๋ก ์กฐํ ๊ฐ๋ฅ ์ฌ๋ถ(False์ผ ์ ๋ญํน์ ํด๋น ์ ์ ๋นํฌํจ) | |
image | INT | ์ฌ์ฉ์์ ํ๋กํ ์ด๋ฏธ์ง | |
badge | VARCHAR | ์ฌ์ฉ์์ ๋ฐฐ์ง ์์ ์ฌ๋ถ, 12์๋ฆฌ ์ด์ง์๊ฐ. ex) 101011000000: 1, 3, 5, 6๋ฒ ๋ฐฐ์ง ์์ |
๊ฒ์ ์งํ ์ ํด๋น ๊ฒ์์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ
Column | type | ์ค๋ช | PK/FK |
---|---|---|---|
game_idx | INT | ๊ฒ์์ ์ธ๋ฑ์ค๊ฐ | PK |
๊ฒ์ ์ข ๋ฃ ํ ๋ฌ๋์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ
Column | type | ์ค๋ช | PK/FK |
---|---|---|---|
run_idx | INT | ๋ฌ๋์ ์ธ๋ฑ์ค๊ฐ | PK |
user_idx | INT | ๋ฌ๋ ์ฌ์ฉ์์ ์ธ๋ฑ์ค๊ฐ | FK |
game_idx | INT | ๊ฒ์ ์ธ๋ฑ์ค๊ฐ | FK |
distance | INT | ๋ฌ๋ ๊ฑฐ๋ฆฌ(m) | |
time | INT | ๋ฌ๋ ์๊ฐ(์ด) | |
result | INT | ๋ฌ๋ ๊ฒฐ๊ณผ(1: Win, 2: Lose, 3: Escape, 4: nothing, 5: tie) | |
created_time | DATETIME | ๋ฌ๋ ๋ฐ์ดํฐ ์์ฑ์๊ฐ(๋งค์นญ ์๋ฃ ์๊ฐ) | |
end_time | DATETIME | ๋ฌ๋ ๋ฐ์ดํฐ ์๋ฃ์๊ฐ(๋ฌ๋ ์๋ฃ ์๊ฐ) |
running ์ค ์์งํ ์์น ์ขํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ ์ด๋ธ
Column | type | ์ค๋ช | PK/FK |
---|---|---|---|
coordinate_idx | INT | coordinate์ ์ธ๋ฑ์ค๊ฐ(PK) | PK |
run_idx | INT | ๋ฌ๋์ ์ธ๋ฑ์ค๊ฐ | FK |
latitude | DOUBLE | ์๋ | |
longitude | DOUBLE | ๊ฒฝ๋ |
"dependencies": {
"base64url": "^3.0.1",
"clean-css": "^4.2.3",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "^4.17.1",
"express-validation": "^3.0.5",
"helmet": "^3.23.3",
"http-errors": "~1.6.3",
"iconv-lite": "^0.6.2",
"jsonwebtoken": "^8.5.1",
"moment": "^2.27.0",
"moment-timezone": "^0.5.31",
"morgan": "~1.9.1",
"mysql": "^2.18.1",
"nodemailer": "^6.4.10",
"pool": "^0.4.1",
"promise-mysql": "^4.1.3",
"pug": "2.0.0-beta11",
"socket.io": "^2.3.0"
}
๐ฆ์คํ์ง
- DB ์ค๊ณ ๋ฐ ๊ตฌ์ถ
- ์์ผ ํต์
๐ฉ ์ ๊ฐํฌ
- DB ์ค๊ณ ๋ฐ ๊ตฌ์ถ
- ๋ญํน, ๊ธฐ๋ก ๊ด๋ จ API
๐ฆ์ฃผ์ธํ
- DB ์ค๊ณ ๋ฐ ๊ตฌ์ถ
- ์ ์ ๊ด๋ จ API