Skip to content

Latest commit

ย 

History

History
552 lines (409 loc) ยท 45.3 KB

README.md

File metadata and controls

552 lines (409 loc) ยท 45.3 KB

SSAFY MATE

์‹ธํ”ผ ๋ฉ”์ดํŠธ (SSAFY MATE)

NGINX GitHub release (latest by date)

๋ชฉ์ฐจ

  1. ์›น ์„œ๋น„์Šค ์†Œ๊ฐœ
  2. ๋ฒ„์ „ ๊ธฐ๋ก
  3. ๊ธฐ์ˆ  ์Šคํƒ
  4. ์ฃผ์š” ๊ธฐ๋Šฅ
  5. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ๋„
  6. ๋ฐ๋ชจ ์˜์ƒ
  7. ํŠน์ด์‚ฌํ•ญ
  8. ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค ํ†ต๊ณ„
  9. ๊ฐœ๋ฐœ ํŒ€ ์†Œ๊ฐœ
  10. ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋ฐ ์ผ์ •
  11. ์‹คํ–‰ ๋ฐฉ๋ฒ•

๐Ÿ’ ์›น ์„œ๋น„์Šค ์†Œ๊ฐœ

์‹ธํ”ผ ๋ฉ”์ดํŠธ(SSAFY MATE) ๋Š” ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ ๊ต์œก ๊ณผ์ • ์ค‘ 2ํ•™๊ธฐ ํŒ€ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์˜ ํŒ€ ๋นŒ๋”ฉ์„ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์‹ธํ”ผ ๋ฉ”์ดํŠธ๋Š” ํŒ€ ๊ณต๊ณ  ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ํŒ€๋“ค์˜ ์ •๋ณด๋ฅผ ๋น„๊ตํ•˜๊ณ  ๊ฒ€์ƒ‰ ํผ์„ ํ†ตํ•ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ํŠธ๋ž™, ์ง๋ฌด, ๊ธฐ์ˆ  ์Šคํƒ ๋“ฑ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋‚ด๊ฒŒ ๊ผญ ๋งž๋Š” ํŒ€์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ต์œก์ƒ ๊ณต๊ณ  ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด์„œ๋Š” ๊ต์œก์ƒ๋“ค์˜ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธํ•˜๊ณ  ๊ฒ€์ƒ‰ ํผ์„ ํ†ตํ•ด ๋‚˜์˜ ํŒ€์— ํ•„์š”ํ•œ ์ง๋ฌด, ๊ธฐ์ˆ  ์—ญ๋Ÿ‰ ๋“ฑ์„ ๊ฐ–์ถ˜ ๊ต์œก์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํŒ€ ๋˜๋Š” ๊ต์œก์ƒ์„ ์ฐพ์•˜๋‹ค๋ฉด ์‹ธํ”ผ ๋ฉ”์ดํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŒ€ ์ง€์› ๋ฐ ํŒ€ ํ•ฉ๋ฅ˜ ์š”์ฒญ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํŒ€์— ํ•ฉ๋ฅ˜ํ•˜๊ฑฐ๋‚˜ ํŒ€์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


  • '์‹ธํ”ผ ๋ฉ”์ดํŠธ' ๊ฒŒ์ŠคํŠธ ๊ณ„์ • ์ •๋ณด
์•„์ด๋”” ssafymate@gmail.com
๋น„๋ฐ€๋ฒˆํ˜ธ ssafymate123

์„œ๋น„์Šค๋ฅผ ๊ตฌ๊ฒฝํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์ƒ๋‹จ์˜ ๊ณ„์ • ์ •๋ณด๋กœ ๋กœ๊ทธ์ธ ํ›„ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”— ๋ฐฐํฌ๋œ ์›น ์„œ๋น„์Šค๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

๐Ÿ”— ์„œ๋น„์Šค ์†Œ๊ฐœ ์˜์ƒ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

๐Ÿ”— ํ”„๋ก ํŠธ์—”๋“œ ์ €์žฅ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

๐Ÿ”— ๋ฐฑ์—”๋“œ(๋ฉ”์ธ ์„œ๋ฒ„) ์ €์žฅ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

๐Ÿ”— ๋ฐฑ์—”๋“œ(์ฑ„ํŒ… ์„œ๋ฒ„) ์ €์žฅ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

์ƒˆ ์ฐฝ ์—ด๊ธฐ ๋ฐฉ๋ฒ• : CTRL+click (on Windows and Linux) | CMD+click (on MacOS)


๐Ÿ‘ท ๋ฒ„์ „ ๊ธฐ๋ก

๋ฒ„์ „
์—…๋ฐ์ดํŠธ ๋‚ด์šฉ
์—…๋ฐ์ดํŠธ ๋‚ ์งœ
v1.2.10 - ํ‘ธํ„ฐ์˜ ๊นƒํ—ˆ๋ธŒ ๋งํฌ ์ฃผ์†Œ ์ˆ˜์ • 22.04.05.
v1.2.9 - ์ด๋ฉ”์ผ ์ธ์ฆ ์ฝ”๋“œ ๋งŒ๋ฃŒ ์˜ค๋ฅ˜ ์ˆ˜์ • 22.03.30.
v1.2.8 - ํŒ€ ํ•ฉ๋ฅ˜ ์š”์ฒญ ๋‹ค์ด์–ผ์˜ ์˜ต์…˜ ์š”์†Œ ์œ„์น˜ ์˜ค๋ฅ˜ ์ˆ˜์ • 22.03.29.
v1.2.7 - ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”(๋‹ค์ด์–ผ ์ฐฝ ์ง€์—ฐ ๋กœ๋”ฉ ์ ์šฉ) 22.03.20.
v1.2.6 - ์ฑ„ํŒ… ์„œ๋น„์Šค ๋กœ์ง ์ˆ˜์ •
- ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”(Code Splitting ์ ์šฉ)
22.03.17.
v1.2.5 - ํ™ˆ ๋ฐฐ๋„ˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํŒŒ์ผ๋“ค์„ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ๊ต์ฒด
- ํ”„๋กœ์ ํŠธ ํŠธ๋ž™ ์†Œ๊ฐœ ๋ฐฐ๋„ˆ mp4 ํŒŒ์ผ๋“ค์„ webp ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ๊ต์ฒด
- ํŽ˜์ด์ง€ ํ—ค๋”ฉ ์ฒ˜๋ฆฌ ๊ฐœํŽธ
22.03.16.
v1.2.4 - ํ”„๋กœ์ ํŠธ ํŠธ๋ž™ ์†Œ๊ฐœ ๋ฐฐ๋„ˆ gif ํŒŒ์ผ mp4 ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ
- ์„œ๋น„์Šค Description ์ˆ˜์ •
- ์„œ๋น„์Šค ๋กœ๊ณ  ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
22.03.14.
v1.2.3 - ์ฑ„ํŒ… ์„œ๋ฒ„ URL ์ˆ˜์ • 22.03.07.
v1.2.2 - ์ฒซ ํŽ˜์ด์ง€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”
- ํŽ˜์ด์ง€ ํ—ค๋”ฉ ์ฒ˜๋ฆฌ ์ˆ˜์ •
22.03.07.
v1.2.1 - ํ‘ธํ„ฐ ์œ ํŠœ๋ธŒ ์•„์ด์ฝ˜์— ์„œ๋น„์Šค ์†Œ๊ฐœ UCC ์˜์ƒ ๋งํฌ ์—ฐ๊ฒฐ 22.02.20.
v1.2.0 - ๋ฐ›์€ ์ œ์•ˆ ๋ฐ ๋ณด๋‚ธ ์š”์ฒญ ํ•ญ๋ชฉ ์‚ญ์ œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- ์ฑ„ํŒ… ๋ชฉ๋ก ๋ฆฌ์ŠคํŠธ์—์„œ ์„ ํƒ๋œ ์ฑ„ํŒ…๋ฐฉ ํ‘œ์‹œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- ๋ฐ›์€ ์ œ์•ˆ ๋ฐ ๋ณด๋‚ธ ์š”์ฒญ ํŽ˜์ด์ง€ UI ๊ฐœ์„ 
- ๊ธฐ์ˆ  ์Šคํƒ ์„ ํƒ ์˜ต์…˜ ์ถ”๊ฐ€
- ๋ชจ์ง‘ ๋งˆ๊ฐ ํ† ๊ธ€ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฏธ์ดˆ๊ธฐํ™” ์˜ค๋ฅ˜ ์ˆ˜์ •
22.02.17.
v1.1.1 - ์†Œ์ผ“ ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ 22.02.15.
v1.1.0 - ์ฑ„ํŒ… ํŽ˜์ด์ง€ ์‚ฌ์šฉ์ž ์ ‘์† ON/OFF ํ‘œ์‹œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- ํ”„๋กœ์ ํŠธ ํŠธ๋ž™ ์†Œ๊ฐœ ๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€
- ๋ฐ›์€ ์ œ์•ˆ ๋ฐ ๋ณด๋‚ธ ์š”์ฒญ ๋ชฉ๋ก ์‹œ๊ฐ„์ˆœ ์ •๋ ฌ ์ ์šฉ ๋ฐ UI ์ˆ˜์ •
- ํ—ค๋” ๋งˆ์ด ๋ฉ”๋‰ด ์ฐฝ UI ์ˆ˜์ •
- ํŒ€ ์†Œ๊ฐœ, ์ž๊ธฐ์†Œ๊ฐœ ์ž…๋ ฅ ์ฐฝ ์˜คํ† ์‚ฌ์ด์ฆˆ ์˜ค๋ฅ˜ ์ˆ˜์ •
- ๊ธฐ์ˆ  ์Šคํƒ ์ž…๋ ฅ ๋ฐ ์ˆ˜์ • ์‹œ ์—”ํ„ฐํ‚ค ์ธ์‹ ์˜ค๋ฅ˜ ์ˆ˜์ •
22.02.15.
v1.0.6 - ์ฑ„ํŒ… ํŽ˜์ด์ง€ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ CSS ์ค‘์ฒฉ ์˜ค๋ฅ˜ ์ˆ˜์ •
- ์ฑ„ํŒ… ํŽ˜์ด์ง€์˜ ์ƒ๋Œ€๋ฐฉ ํ”„๋กœํ•„ ๋งํฌ UI ๊ฐœ์„ 
- ํ™ˆ ํŽ˜์ด์ง€์˜ ๋ชจ๋ฐ”์ผ ์„œ๋น„์Šค ์†Œ๊ฐœ ๋ถ€๋ถ„ PC, Mobile ์ด๋ฏธ์ง€ ์Šคํƒ€์ผ๋ง ์ˆ˜์ •
- ๊ณต๊ณ  ํŽ˜์ด์ง€ ํ•„ํ„ฐ ์˜ต์…˜ ๋ณ€๊ฒฝ์‹œ ํŽ˜์ด์ง€ ์„ค์ • ๋ฏธ์ดˆ๊ธฐํ™” ์˜ค๋ฅ˜ ์ˆ˜์ •
- ๊ต์œก์ƒ ๊ณต๊ณ  ํŽ˜์ด์ง€ ๊ณต์œ ํ•˜๊ธฐ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ ๋ฒ„ํŠผ UI ์ˆ˜์ •
- ํŒ€ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ • ํ…์ŠคํŠธ ์ž…๋ ฅ ํผ ์ž…๋ ฅ ํ…์ŠคํŠธ ๊ธธ์ด ์ œํ•œ ์ถ”๊ฐ€
22.02.14.
v1.0.5 - ํ—ค๋” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋งํฌ ์˜ค๋ฅ˜ ์ˆ˜์ •
- ๋ชจ๋ฐ”์ผ ์„œ๋น„์Šค ์†Œ๊ฐœ ์ด๋ฏธ์ง€ ์œ„์น˜ ์žฌ์กฐ์ •
22.02.13.
v1.0.4 - ๋ฐ›์€ ์ œ์•ˆ ๋ฐ ๋ณด๋‚ธ ์š”์ฒญ ์•„์ดํ…œ ์ƒํƒœ ๋ฐ•์Šค ๋ฐฐ์น˜ ์˜ค๋ฅ˜ ์ˆ˜์ • ์ˆ˜์ • 22.02.13.
v1.0.3 - ๊ธฐ์ˆ  ์Šคํƒ ์ž…๋ ฅ๋ž€์—์„œ์˜ ๋ฐฑ์ŠคํŽ˜์ด์Šค ์ž…๋ ฅ ์˜ค๋ฅ˜ ์ˆ˜์ • 22.02.13.
v1.0.2 - ํ”„๋กœ์ ํŠธ ํŠธ๋ž™ ์„ ํƒ์„ ๋กœ๊ทธ์ธ ํ›„ ๋ฐ”๋กœ ์‹คํ–‰์œผ๋กœ ๋กœ์ง ์ˆ˜์ •
- ์ฑ„ํŒ… ํŽ˜์ด์ง€ ์ฑ„ํŒ…๋ฐฉ ์„ ํƒ์ด ์—†์„ ์‹œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ •
22.02.12.
v1.0.1 - ํšŒ์›๊ฐ€์ž… 2๋‹จ๊ณ„ ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ ์ˆ˜์ • 22.02.12.
v1.0.0 - ์‹ธํ”ผ ๋ฉ”์ดํŠธ ์„œ๋น„์Šค ์˜คํ”ˆ 22.02.12.

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

Front-end

HTML5 CSS3 TypeScript
HTML5 CSS3 TypeScript
React.js Redux Redux-Saga React-Query
React Redux Redux-Saga React-Query
Socket.io Emotion MUI Mock Service Worker
Socket.io Emotion MUI Mock Service Worker

Back-end

Java Spring-Boot Hibernate MySQL H2
Java Spring-Boot Hibernate MySQL H2
TypeScript Node.js Nest.js Socket.io
TypeScript Node.js Nest.js Socket.io
Postman Swagger redis
Postman Swagger redis

DevOps

NGiNX aws Jenkins docker
NGiNX aws Jenkins docker

๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ

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

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ๋„

์•„ํ‚คํ…์ฒ˜(Architecture)
์•„ํ‚คํ…์ฒ˜(Architecture)
๊ฐœ์ฒด-๊ด€๊ณ„ ๋ชจ๋ธ(ERD)
๊ฐœ์ฒด-๊ด€๊ณ„ ๋ชจ๋ธ(ERD)

๐ŸŽฅ ๋ฐ๋ชจ ์˜์ƒ

๐Ÿ”— ์„œ๋น„์Šค ์†Œ๊ฐœ ์˜์ƒ ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

์ƒˆ ์ฐฝ ์—ด๊ธฐ ๋ฐฉ๋ฒ• : CTRL+click (on Windows and Linux) | CMD+click (on MacOS)


๐Ÿ’ซ ํŠน์ด์‚ฌํ•ญ

๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)

SEO ์ ์ˆ˜
SEO ์ž‘์—… ๋‚ด์—ญ
SEO SCORE - Meta Data ์„ค์ •
- ์ฒด๊ณ„ํ™”๋œ Heading ์ฒ˜๋ฆฌ
- ์‹œ๋ฉ˜ํ‹ฑ ๋งˆํฌ์—… ์‚ฌ์šฉ
- Document title ์„ค์ •
- img ํƒœ๊ทธ์˜ alt ์†์„ฑ ์„ค์ •
- HTTPS ์ ์šฉ

Lighthouse๋ฅผ ํ†ตํ•œ ์ธก์ • ๊ธฐ์ค€

'์‹ธํ”ผ ๋ฉ”์ดํŠธ' ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๋ชจ์Šต

๊ตฌ๊ธ€์— '์‹ธํ”ผ ๋ฉ”์ดํŠธ' ๊ฒ€์ƒ‰ ์‹œ ์ตœ์ƒ๋‹จ์— ์œ„์น˜


Headings Map

ํ™ˆ ํŽ˜์ด์ง€ ํŒ€ ๊ณต๊ณ  ํŽ˜์ด์ง€ ํŒ€ ์ƒ์„ธ ์ •๋ณด ํŽ˜์ด์ง€
ํ™ˆ ํŽ˜์ด์ง€ Headings Map ํŒ€ ๊ณต๊ณ  ํŽ˜์ด์ง€ Headings Map ํŒ€ ์ƒ์„ธ ์ •๋ณด ํŽ˜์ด์ง€ Headings Map

์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”

์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ „ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ›„ (22.03.17. ๊ธฐ์ค€)
์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ „ ๋ถ„์„ ์ด๋ฏธ์ง€ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ›„ ๋ถ„์„ ์ด๋ฏธ์ง€
ํ•ญ๋ชฉ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ „ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ›„
Performance Score 62 88
First Contentful Paint 0.6s 0.5s
Time to Interactive 2.8s 1.3s
Speed Index 3.5s 1.3s
Total Blocking Time 100ms 0ms
Largest Contentful Paint 6.2s 2.2s
Cumulative Layout Shift 0.128 0.001
  • '์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)' ์ ์šฉ
  • ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ตœ์ ํ™”
    • ์ด๋ฏธ์ง€ Meta Data ์ œ๊ฑฐ ๋ฐ ์ตœ์ ํ™”
    • ๋ทฐํฌํŠธ์— ๋”ฐ๋ฅธ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€ ์ œ๊ณต
  • gif ํŒŒ์ผ๋“ค์„ webp, png ํŒŒ์ผ๋“ค๋กœ ๊ต์ฒด
  • ๋ถˆํ•„์š”ํ•œ JS ํŒŒ์ผ ์ œ๊ฑฐ
  • '์ฝ”๋“œ ๋ถ„ํ• (Code Splitting)' ์ ์šฉ

์œ„์˜ ์ž‘์—…๋“ค์„ ํ†ตํ•ด Performance Score 62์  โ†’ 88์ ์œผ๋กœ ๊ฐœ์„ , Speed Index ์†๋„ 3.5์ดˆ โ†’ 1.3์ดˆ๋กœ ๊ฐœ์„ 


๐Ÿ“Š ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค ํ†ต๊ณ„

๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค๋ฅผ ์„ธํŒ…ํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ 2์›” 12์ผ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ์‹ค์„œ๋น„์Šค๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ '์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ' ํŠนํ™” ํŒ€ ํ”„๋กœ์ ํŠธ ํŒ€ ๋นŒ๋”ฉ ๊ธฐ๊ฐ„์ด์—ˆ๋˜ 2์›” 12์ผ๋ถ€ํ„ฐ 2์›” 18์ผ๊นŒ์ง€ ๊ธฐ๊ฐ„์— ์ง‘์ค‘์ ์œผ๋กœ ๊ต์œก์ƒ๋ถ„๋“ค์ด ์ด์šฉํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํ†ต๊ณ„

GA ์‚ฌ์šฉ์ž ํ†ต๊ณ„ ์ด๋ฏธ์ง€

2์›” 12์ผ ~ 2์›” 18์ผ (1์ฃผ์ผ) ๋™์•ˆ ์ตœ๊ณ ์น˜ DAU 357๋ช…, WAU 744๋ช…์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๋ธŒ๋ผ์šฐ์ € ๋ฐ ์šด์˜์ฒด์ œ ํ†ต๊ณ„

๋ธŒ๋ผ์šฐ์ € ํ†ต๊ณ„ ์šด์˜์ฒด์ œ ํ†ต๊ณ„
GA ๋ธŒ๋ผ์šฐ์ € ํ†ต๊ณ„ ์ด๋ฏธ์ง€ GA ๋ธŒ๋ผ์šฐ์ € ํ†ต๊ณ„ ์ด๋ฏธ์ง€

์‚ฌ์šฉ์ž์˜ 70%๊ฐ€ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ด์šฉํ•ด์ฃผ์—ˆ๊ณ , ์ด์™ธ์—๋„ Safari, Edge ๋“ฑ์œผ๋กœ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์˜ 76%๊ฐ€ PC ํ™˜๊ฒฝ์—์„œ, 22%๊ฐ€ Mobile ํ™˜๊ฒฝ์—์„œ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๐Ÿ‘ช ๊ฐœ๋ฐœ ํŒ€ ์†Œ๊ฐœ

์กฐ์›๋นˆ ํ”„๋กœํ•„ ์†์˜๋ฐฐ ํ”„๋กœํ•„ ์ด์ •ํ›ˆ ํ”„๋กœํ•„ ๋ฐ•์ •ํ™˜ ํ”„๋กœํ•„ ์†Œ์ •์€ ํ”„๋กœํ•„ ์ด์—ฌ์ง„ ํ”„๋กœํ•„
์กฐ์›๋นˆ
(Back-end & ํŒ€์žฅ)
์†์˜๋ฐฐ
(Back-end)
์ด์ •ํ›ˆ
(Back-end)
๋ฐ•์ •ํ™˜
(Front-end)
์†Œ์ •์€
(Front-end)
์ด์—ฌ์ง„
(Front-end)


์ด๋ฆ„ ์—ญํ• 
๊ฐœ๋ฐœ ๋‚ด์šฉ
์กฐ์›๋นˆ Back-end
ํŒ€์žฅ
- DB ์„ค๊ณ„
- Spring Data JPA ์„ธํŒ…
ย ย ย ย - ์ฑ„ํŒ… ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ๋กœ๊ทธ์ธ ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
- TypeScript, Nest.js์™€ Socket.io๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌํ˜„
ย ย ย ย - ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ
ย ย ย ย - 1๋Œ€1 ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ตฌํ˜„
- JWT๋ฅผ ์ด์šฉํ•œ ํ† ํฐ ์ƒ์„ฑ ๊ตฌํ˜„
- ์ฑ„ํŒ… ์„œ๋ฒ„ EC2 ๋ฐฐํฌ
- crontab ์ด์šฉํ•œ Linux mysql DB ๋ฐฑ์—… ์Šค์ผ€์ค„๋Ÿฌ ์ž‘๋™
- 'ssafymate.site' ๋„๋ฉ”์ธ ์ ์šฉ
์†์˜๋ฐฐ Back-end - DB ์„ค๊ณ„
- Spring Boot๋กœ RESTful API ์ž‘์„ฑ
ย ย ย ย - ๋กœ๊ทธ์ธ ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํšŒ์›๊ฐ€์ž… ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ์•„์ด๋”” ์ฐพ๊ธฐ ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํšŒ์› ์ •๋ณด ์กฐํšŒ ๋ฐ ์ˆ˜์ • ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
- SMTP Server, Redis๋ฅผ ์ด์šฉํ•œ ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ, JWT๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ ๊ตฌํ˜„
- EC2 ์ธํ”„๋ผ ํ™˜๊ฒฝ ์„ธํŒ…
- ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ EC2 ๋ฐฐํฌ
- Github Action, Jenkins, Docker๋ฅผ ํ™œ์šฉํ•œ CI/CD
- Letsencrypt, Certbot์„ ์ด์šฉํ•œ ์„œ๋น„์Šค SSL ๋ณด์•ˆ ์ ์šฉ
- Nginx ์›น์„œ๋ฒ„ ์ ์šฉ(Load Balancing, Reverse Proxy, Service Redirect ์„ค์ •)
์ด์ •ํ›ˆ Back-end - DB ์„ค๊ณ„
ย ย ย ย - ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
ย ย ย ย - ๊ต์œก์ƒ ์ธ์ฆ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
- ์„œ๋ฒ„์— ๊ธฐ์ˆ  ์Šคํƒ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
- Spring Boot๋กœ RESTful API ์ž‘์„ฑ
ย ย ย ย - ๊ธฐ์ˆ  ์Šคํƒ ์กฐํšŒ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ์ƒ์„ธ๋ณด๊ธฐ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ํƒˆํ‡ด ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ํ•ฉ๋ฅ˜/์ง€์› ์š”์ฒญ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ํ•ฉ๋ฅ˜/์ง€์› ๋ฉ”์„ธ์ง€ ์กฐํšŒ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ํŒ€ ํ•ฉ๋ฅ˜/์ง€์› ์š”์ฒญ ์‘๋‹ต ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ๊ต์œก์ƒ ์ƒ์„ธ๋ณด๊ธฐ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ๊ต์œก์ƒ ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ๊ต์œก์ƒ ํ”„๋กœ์ ํŠธ ํŠธ๋ž™ ์„ ํƒ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ย ย ย ย - ์ฐธ์—ฌ ์ค‘์ธ ํŒ€ ์กฐํšŒ ์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
๋ฐ•์ •ํ™˜ Front-end - '์‹ธํ”ผ ๋ฉ”์ดํŠธ' ์„œ๋น„์Šค ๊ธฐํš
- ์„œ๋น„์Šค ๋ฉ”์ธ ํ™ˆ ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ
- ํŒ€ ๊ณต๊ณ , ๊ต์œก์ƒ ๊ณต๊ณ  ์ •๋ณด ์ œ๊ณต ๋ฐ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ํŒ€ ์ƒ์„ฑ ยท ์ˆ˜์ • ยท ์‚ญ์ œ ยท ํƒˆํ‡ด ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ํŒ€ ํ•ฉ๋ฅ˜ ์š”์ฒญ ๋ฐ ํŒ€ ์ง€์› ์š”์ฒญ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- 404 Not Found ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ
- ํŒ€, ๊ต์œก์ƒ ๊ณต๊ณ  ๋ชฉ๋ก ํŽ˜์ด์ง€, ์ƒ์„ธ ์ •๋ณด ํŽ˜์ด์ง€์˜ Skeleton UI ๊ตฌํ˜„
- 'Redux', 'React-Query'๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ๊ด€๋ฆฌ
- 'Emotion'์„ ์ด์šฉํ•œ CSS-in-JS ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ๋ง ๊ตฌํ˜„
- 'Media Query'์™€ 'React-Responsive'๋ฅผ ์ด์šฉํ•œ ๋ฐ˜์‘ํ˜• ์›น ๊ตฌํ˜„
- ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO) ์ž‘์—…
ย ย ย ย - Meta Data๋“ค์„ ์„ค์ •ํ•˜๊ณ  ์ฒด๊ณ„ํ™”๋œ Heading ์ฒ˜๋ฆฌ ๋ฐ ์‹œ๋ฉ˜ํ‹ฑ ๋งˆํฌ์—… ์‚ฌ์šฉ,
ย ย ย ย - SEO Score 100์  ๋‹ฌ์„ฑ
- ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ž‘์—…
ย ย ย ย - 'Lazy Loading' ์ ์šฉ
ย ย ย ย - ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ตœ์ ํ™” ๋“ฑ์„ ํ†ตํ•ด ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ง„ํ–‰
ย ย ย ย - Performance Score 62์  โ†’ 88์ ์œผ๋กœ ๊ฐœ์„ 
ย ย ย ย - Speed Index ์†๋„ 3.5์ดˆ โ†’ 1.3์ดˆ๋กœ ๊ฐœ์„ 
- 'Mock Service Worker'๋ฅผ ์ด์šฉํ•ด ๋ชฉ์—… API ๊ตฌํ˜„ํ•˜์—ฌ API ํ…Œ์ŠคํŠธ ์ง„ํ–‰
์†Œ์ •์€ Front-end - Emotion์„ ์ด์šฉํ•œ CSS-in-JS ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ๋ง ์ž‘์—…
- Media Query๋ฅผ ์ด์šฉํ•œ ๋ฐ˜์‘ํ˜• UI ์„ค๊ณ„
ย ย ย ย - MUI๋ฅผ ์ด์šฉํ•ด ๋ชจ๋ฐ”์ผ, ํƒœ๋ธ”๋ฆฟ ๋“ฑ์˜ ๋ทฐํฌํŠธ์— ๋”ฐ๋ฅธ ์ฑ„ํŒ… ๋ชฉ๋ก Drawer ์ ์šฉ
- Custom hook์„ ์ด์šฉํ•œ ์ฑ„ํŒ… ์ž…๋ ฅ ์ƒํƒœ ๊ด€๋ฆฌ
- Socket.io๋ฅผ ์ด์šฉํ•œ WebRTC ์ฑ„ํŒ… ๊ตฌํ˜„
ย ย ย ย - 1:1 ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ตฌํ˜„, ๋ฉ”์‹œ์ง€ ์ฃผ๊ณ  ๋ฐ›๊ธฐ
ย ย ย ย - Socket์˜ namespace๋ฅผ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉ์ž๊ฐ€ ํƒ€์ธ์˜ ์ฑ„ํŒ…๋ฐฉ์— ์ ‘์†ํ•˜๋Š” ๊ฒƒ ์ œํ•œ
ย ย ย ย - Socket์œผ๋กœ ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด ์ ‘์† ์ค‘์ธ ์‚ฌ์šฉ์ž์˜ ์˜จ๋ผ์ธ ์ƒํƒœ ๋™๊ธฐํ™”
- SWR์„ ์ด์šฉํ•œ ์ฑ„ํŒ… ๋ชฉ๋ก, ์ฑ„ํŒ… ๋‚ด์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋น„๋™๊ธฐ API ์ฒ˜๋ฆฌ
ย ย ย ย - ์ฑ„ํŒ… ๋‚ด์—ญ ์Šคํฌ๋กค ์ด๋™์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง• API ์ฒ˜๋ฆฌ, ๋ฌดํ•œ ์Šคํฌ๋กค๋ง ๊ตฌํ˜„
- Mock Service Worker๋ฅผ ์ด์šฉํ•ด ๋ชฉ์—… API ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐฑ์—”๋“œ API ์„ค๊ณ„ ์ด์ „ API ํ…Œ์ŠคํŒ… ์ง„ํ–‰
์ด์—ฌ์ง„ Front-end - ํšŒ์›๊ฐ€์ž… ์„œ๋น„์Šค ๊ฐœ๋ฐœ
ย ย ย ย - React-hook-form ์„ ์ด์šฉํ•œ ํšŒ์›๊ฐ€์ž… form ๊ด€๋ฆฌ
ย ย ย ย - ์ด๋ฉ”์ผ ์ธ์ฆ์„ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„
- ๋กœ๊ทธ์ธ
ย ย ย ย - Redux, Redux Saga๋ฅผ ํ†ตํ•œ ํšŒ์› ์ •๋ณด ์ƒํƒœ ๊ด€๋ฆฌ
- ํšŒ์› ์ •๋ณด ์ˆ˜์ • ์„œ๋น„์Šค ๊ฐœ๋ฐœ
ย ย ย ย - React custom hook ์‚ฌ์šฉ
ย ย ย ย - Redux, Redux-Saga๋ฅผ ํ†ตํ•œ ํšŒ์› ์ •๋ณด ์ƒํƒœ ๊ด€๋ฆฌ
- Redux๋ฅผ ํ†ตํ•œ ์ „์—ญ Alert ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ์•„์ด๋””์ฐพ๊ธฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ํ†ต์‹  ์ตœ์†Œํ™”
- Emotion์„ ์ด์šฉํ•œ CSS-in-JS ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ๋ง ์ž‘์—…
- ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ˜์‘ํ˜• ๊ตฌํ˜„
- Mock Service Worker๋ฅผ ์ด์šฉํ•ด ๋ชฉ์—… API ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐฑ์—”๋“œ API ์„ค๊ณ„ ์ด์ „ API ํ…Œ์ŠคํŒ… ์ง„ํ–‰

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

22.01.06. ~ ์šด์˜ ๊ด€๋ฆฌ ์ค‘


๐Ÿ’ป ์‹คํ–‰ ๋ฐฉ๋ฒ•

Client ์‹คํ–‰

  1. ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œ
$ git clone https://github.com/ssafy-mate/ssafy-mate_front-end.git
  1. ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™
$ cd ssafy-mate_front-end
  1. ํ•„์š”ํ•œ node_modules ์„ค์น˜
$ yarn install
  1. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
$ yarn start

Main Server ์‹คํ–‰

  1. ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œ
$ git clone https://github.com/ssafy-mate/ssafy-mate_back-end.git
  1. ํ”„๋กœ์ ํ„ฐ ํด๋” > src > main > resources ์ด๋™
$ cd ssafy-mate_back-end
$ cd src
$ cd main
$ cd resources
  1. ํ”„๋กœ์ ํŠธ ์‹คํ–‰์„ ์œ„ํ•œ yml ํŒŒ์ผ ์ž‘์„ฑ
  • ํ”„๋กœ์ ํŠธ ์ฒซ ๋นŒ๋“œ์‹œ jpa:hibernate:ddl-auto:create ๋กœ ์ž‘์„ฑ
  • ์ดํ›„์—๋Š” jpa:hibernate:ddl-auto:none ์œผ๋กœ ๋ณ€๊ฒฝ
server:
  port: [ํฌํŠธ๋ฒˆํ˜ธ]

spring:
  redis:
    host: [ํ˜ธ์ŠคํŠธ๋ช…]
    port: [ํฌํŠธ๋ฒˆํ˜ธ]

  mail:
    host: smtp.gmail.com
    port: 465
    username: [์ด๋ฉ”์ผ]
    password: [๋น„๋ฐ€๋ฒˆํ˜ธ]
    smtp:
      socketFactory:
        class: javax.net.ssl.SSLSocketFactory
        fallback: 'false'
        port: '465'
      starttls:
        required: 'true'
        enable: 'true'
      port: '465'
      auth: 'true'

  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        format_sql: true
        show_sql: true
    defer-datasource-initialization: true

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: [DB์„ค์ •]
    username: [์‚ฌ์šฉ์ž๋ช…]
    password: [๋น„๋ฐ€๋ฒˆํ˜ธ]

jwt:
  secret: [๋น„๋ฐ€ํ‚ค]
  1. ํ”„๋กœ์ ํŠธ ํด๋” ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ์ด๋™
$ cd ssafy-mate_back-end
  1. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
$ ./gradlew build
  1. ๋นŒ๋“œ ํด๋” ์ด๋™ ํ›„ war ํŒŒ์ผ ์‹คํ–‰
$ cd build
$ java -jar [ํŒŒ์ผ๋ช…].war

Chatting Server ์‹คํ–‰

  1. ์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œ
$ git clone https://github.com/ssafy-mate/ssafy-mate_back-end_with-chatting.git
  1. ํ”„๋กœ์ ํ„ฐ ํด๋” > src > .env ํŒŒ์ผ ์ƒ์„ฑ
DB_USER=[DB ์‚ฌ์šฉ์ž๋ช…]
DB_PASSWORD=[DB ๋น„๋ฐ€๋ฒˆํ˜ธ]
DB_DATABASE=[DB๋ช…]
PORT=[ํฌํŠธ๋ฒˆํ˜ธ]
  1. ํ”„๋กœ์ ํ„ฐ ํด๋” > src > ormconfig.ts ํŒŒ์ผ ์ƒ์„ฑ
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import * as dotenv from 'dotenv';
import { User } from './src/entities/User';
import { ChattingRoom } from './src/entities/ChattingRoom';
import { ChattingHistory } from './src/entities/ChattingHistory';

dotenv.config();

const config: TypeOrmModuleOptions = {
  type: 'mysql',
  host: '[ํ˜ธ์ŠคํŠธ๋ช…]',
  port: 3306,
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  entities: [User, ChattingRoom, ChattingHistory],
  migrations: [__dirname + '/src/migrations/*.ts'],
  cli: { migrationsDir: 'src/migrations' },
  autoLoadEntities: true,
  charset: 'utf8mb4',
  synchronize: false, // ddl-auto ์˜ต์…˜
  logging: true,
  keepConnectionAlive: true,
};

export = config;
  1. ํ”„๋กœ์ ํ„ฐ ํด๋” > src > output > ormconfig.json ํŒŒ์ผ ์ƒ์„ฑ
[
  {
    "name": "default",
    "type": "mysql",
    "host": "[ํ˜ธ์ŠคํŠธ๋ช…]",
    "port": 3306,
    "username": "[DB ์‚ฌ์šฉ์ž๋ช…]",
    "password": "[DB ๋น„๋ฐ€๋ฒˆํ˜ธ]",
    "database": "[DB ๋ช…]",
    "synchronize": false,
    "entities": ["entities/*.js"]
  }
]
  1. ํ”„๋กœ์ ํŠธ ํด๋” ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ์ด๋™
$ cd ssafy-mate_back-end_with-chatting
  1. npm ์„ค์น˜
$ npm install
  1. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
$ npm run build