diff --git a/README.md b/README.md index e011ab56..782ca9aa 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,7 @@ -![Sprint 33](https://github.com/user-attachments/assets/2b23184d-90ed-458d-9dc4-dab9579c1e48) - +[![Sprint 33](https://github.com/user-attachments/assets/2b23184d-90ed-458d-9dc4-dab9579c1e48)](https://octodocs.site)
- - - - - - -
![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2024%2Fweb15-OctoDocs&count_bg=%23000000&title_bg=%23000000&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false) [![Group 112 (1)](https://github.com/user-attachments/assets/b7b4387e-ffe9-4469-82b7-c14509282d86)](https://octodocs.site) @@ -17,12 +9,28 @@
-# ๐Ÿ™ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ +

+ ๐Ÿ™ ์˜ฅํ† ๋…์Šค ์†Œ๊ฐœ
+ ๐ŸŒฑ ์ฃผ์ฐจ๋ณ„ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ ์ ์ง„์  ๊ฐœ์„ 
+ ๐Ÿ—บ๏ธ ํ”„๋กœ์ ํŠธ ํƒ€์ž„๋ผ์ธ
+ ๐Ÿ› ๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ
+ ๐Ÿšง ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๊ณผ์ •
+ ๐Ÿงธ ํŒ€์› ์†Œ๊ฐœ
+

+ +

+ +

๐Ÿ™ ์˜ฅํ† ๋…์Šค ์†Œ๊ฐœ

+ +![Group 117 (2)](https://github.com/user-attachments/assets/04e39b34-9483-4896-bd6b-6456c4784eee) + +
### ๐Ÿ•ธ๏ธ ๊ด€๊ณ„ํ˜• ์ง€์‹ ๊ด€๋ฆฌ ํˆด -> ๋ฌธ์„œ๋“ค์„ ์ž‘์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋ฉด์„œ ๋ฌธ์„œ๋“ค ๊ฐ„์˜ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ. +๐ŸŒฑ ๋งˆํฌ๋‹ค์šด, ์ด๋ฏธ์ง€, ์ฝ”๋“œ ๋“ฑ์„ ํ™œ์šฉํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ **๋ฌธ์„œ ์ž‘์„ฑ**์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
+๐ŸŒฑ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๋“ค์„ **์—ฐ๊ฒฐ**ํ•˜๊ณ  **๋ฐฐ์น˜**ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/user-attachments/assets/1ac81d56-a0ce-403c-9e3f-7ba092b6a5b6 @@ -32,68 +40,220 @@ https://github.com/user-attachments/assets/1ac81d56-a0ce-403c-9e3f-7ba092b6a5b6 ### ๐Ÿงธ ์‹ค์‹œ๊ฐ„ ๋™์‹œ ํŽธ์ง‘ ๋ฐ ํ˜‘์—… ๊ธฐ๋Šฅ -> ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๊ณผ ๋™์‹œ ํŽธ์ง‘ ๋ฐ ํ˜‘์—… ๊ฐ€๋Šฅ. +๐ŸŒฑ ์—๋””ํ„ฐ์—์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ **์‹ค์‹œ๊ฐ„ ๋™์‹œ ํŽธ์ง‘**์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
+๐ŸŒฑ ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋“ค๋„ **ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐฐ์น˜**ํ•ด ๋ณด๋ฉฐ ์šฐ๋ฆฌ ํŒ€๋งŒ์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + +https://github.com/user-attachments/assets/86b0dcaf-3640-4836-8b91-207b39b17b05 -https://github.com/user-attachments/assets/ad1f6dc9-50af-46e4-bac4-267b1432b301
### โ›บ๏ธย ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ดˆ๋Œ€ ๊ธฐ๋Šฅ -> ๊ฐœ๋ณ„ ์›Œํฌ ์ŠคํŽ˜์ด์Šค์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค์„ ์ดˆ๋Œ€ํ•ด์„œ ํ•จ๊ป˜ ์ด์šฉ ๊ฐ€๋Šฅ. +๐ŸŒฑ ์šฐ๋ฆฌ ํŒ€๋งŒ์˜ **์›Œํฌ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑ**ํ•˜๊ณ  ํŒ€์›๋“ค์„ **์ดˆ๋Œ€**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+๐ŸŒฑ ์›Œํฌ ์ŠคํŽ˜์ด์Šค์˜ **๊ณต๊ฐœ ๋ฒ”์œ„**๋ฅผ ์„ค์ •ํ•ด์„œ ๋ˆ„๊ตฌ๋‚˜ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„๋„ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + + +https://github.com/user-attachments/assets/0c096e40-bed4-4cee-bb8e-40f72a5d43f2 + + + +



+ +

๐ŸŒฑ ์ฃผ์ฐจ๋ณ„ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ ์ ์ง„์  ๊ฐœ์„ 

+ +
+ +> OctodocsํŒ€์€ **์• ์ž์ผํ•œ ๊ฐœ๋ฐœ**์„ ์ตœ์šฐ์„  ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ , ์ด๋ฅผ ํŒ€์˜ ์ƒ‰๊น”๋กœ ์ž๋ฆฌ์žก๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์ŠคํŠธ์บ ํ”„์•ผ ๋ง๋กœ ์ฃผ์ฐจ๋ณ„๋กœ ๊ณ ์ • ํ…Œ์Šคํ„ฐ๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด **์šด์˜๊ณผ ๊ฐœ๋ฐœ์˜ ๊ฒฝํ—˜**์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ตœ์ ์˜ ํ™˜๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ๋น ๋ฅธ ๋ฐฐํฌ ํ›„ ๋งค์ฃผ ๋‹ค์–‘ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„์˜ค๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๊ฐœ์„ ํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ์ง์ ‘ ํ™•์ธํ•ด๋ณด์„ธ์š”! + +
+ +### 3์ฃผ์ฐจ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ + +โ†’ [๐Ÿ”—ย 3์ฃผ์ฐจ ์ „์ฒด ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๊ธฐ๋ก ๋ณด๋Ÿฌ๊ฐ€๊ธฐ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/3%EF%B8%8F%E2%83%A3-3%EC%A3%BC%EC%B0%A8-%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1-%EB%B0%98%EC%98%81-%EA%B8%B0%EB%A1%9D) + +![image 23](https://github.com/user-attachments/assets/a566ce1e-b2ab-4690-80a0-3189613debc2) + + +๐Ÿ™๐Ÿปย **๋ณด๋“œ๋ž‘, ๋ฌธ์„œ๋…ธ๋“œ์— ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๊ฐ€ ๋‹ฌ๋ž์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”.** + +โ†’ โœ…ย ์บ”๋ฒ„์Šค์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ด๋Š” ์ค‘์ธ ์œ ์ €๋“ค์˜ ์ปค์„œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ์œ ์ €๋Š” ์ž์‹ ์˜ **์ปค์„œ ์ƒ‰๊น”์„ ์ปค์Šคํ…€**ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. [PR ๋งํฌ](https://github.com/boostcampwm-2024/web15-OctoDocs/pull/219) + +
+ +๐Ÿ™๐Ÿป **์—ฐ๊ฒฐ๊ฐ™์€๊ฑฐ ํ•˜๋‹ค๋ณด๋ฉด ๋ณต์žกํ•ด์ง€๋„ค์š”** + +โ†’ โœ… ์—ฃ์ง€๋“ค์ด ์—‰์ผœ๋ณด์ด๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ๊ณ  ์—ฃ์ง€์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ํ•ญ์ƒ **์ตœ๋‹จ ๊ฒฝ๋กœ**๊ฐ€ ๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. [PR ๋งํฌ](https://github.com/boostcampwm-2024/web15-OctoDocs/pull/201)
+๐Ÿ™๐Ÿป **์Šคํฌ๋ฆฐ ๋†’์ด๋ฅผ ์ž‘๊ฒŒ ํ•œ ์ƒํƒœ์—์„œ ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ๋ฒ„ํŠผ UI๋ฅผ ๊ฐ€๋ ค๋ฒ„๋ ค์šฉ** + +โ†’ โœ… ์‚ฌ์ด๋“œ๋ฐ” UI๋ฅผ ์ˆ˜์ •, **์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ**์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. [PR ๋งํฌ](https://github.com/boostcampwm-2024/web15-OctoDocs/pull/228) + +

+ +### 4์ฃผ์ฐจ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ + +โ†’ [๐Ÿ”—ย 4์ฃผ์ฐจ ์ „์ฒด ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๊ธฐ๋ก ๋ณด๋Ÿฌ๊ฐ€๊ธฐ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/4%EF%B8%8F%E2%83%A3-4%EC%A3%BC%EC%B0%A8-%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1-%EB%B0%98%EC%98%81-%EA%B8%B0%EB%A1%9D) -# ๐Ÿ› ๏ธย ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ + +![Group 115 (1)](https://github.com/user-attachments/assets/1da2266f-247a-43ba-9b75-b7e4f7129b30) + +๐Ÿ™๐Ÿป **ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋” ๋‘๊บผ์›Œ์„œ ์—๋””ํ„ฐ๋ž‘ ์•„๋ž˜์˜ ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ์ด ๋” ๊ตฌ๋ถ„์ด ์ž˜ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”! ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!** + +โ†’ โœ… ๋…ธ๋“œ์˜ ์ƒ‰๊น”์„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๊ณตํ†ต์ ์ธ ๋ฌธ์ œ(๋…ธ๋“œ๊ฐ€ ๋ฐฐ๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ๋˜์–ด ๋ณด์˜€์œผ๋ฉด ์ข‹๊ฒ ๋‹ค)๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ณ ย **๋…ธ๋“œ์˜ ์ƒ‰๊น”์„ ์ปค์Šคํ…€**ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.ย [PR ๋งํฌ 1(FE)](https://github.com/boostcampwm-2024/web15-OctoDocs/pull/201)ย [PR ๋งํฌ 2(BE)](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/4%EF%B8%8F%E2%83%A3-4%EC%A3%BC%EC%B0%A8-%EC%82%AC%EC%9A%A9%EC%9E%90-%ED%94%BC%EB%93%9C%EB%B0%B1-%EB%B0%98%EC%98%81-%EA%B8%B0%EB%A1%9D) + +
+ +๐Ÿ™๐Ÿป **favicon์— ๋ฌธ์–ด ๋„ฃ์–ด์ฃผ์„ธ์š” ๋ฌธ์–ด ๊ท€์—ฌ์›Œ์š”...** + +โ†’ โœ… ํ˜„์žฌ ๋ฐฐํฌ๋œ ์‚ฌ์ดํŠธ [**https://octodocs.site**](https://octodocs.site/)๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +
+ +๐Ÿ™๐Ÿป **์‚ฌ์šฉ์ž ํ”„๋กœํ•„ (์ด๋ฆ„ํ•˜๊ณ  ์ƒ‰๊น”) ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ž˜ ๋ˆˆ์— ์•ˆ ๋„์–ด์š”. ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์› ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.** + +โ†’ โœ…ย ํ”„๋กœํ•„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ๋ˆˆ์— ๋„๋Š” ๊ณณ์— ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ํ›„, ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ์˜ ์ปค์„œ๋ฅผ ์ง์ ‘ ๋ณด๊ณ  ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” **์ปค์„œ ํ”„๋ฆฌ๋ทฐ ๊ธฐ๋Šฅ**์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.ย [PR ๋งํฌ](https://github.com/boostcampwm-2024/web15-OctoDocs/pull/274) + +

+ +### 5์ฃผ์ฐจ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ + +![แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-12-03 แ„‹แ…ฉแ„’แ…ฎ 8 09 51 1](https://github.com/user-attachments/assets/74d02bff-e476-425c-8086-a377aa2cb482) + +
+ +๐Ÿšจย **๋ฐ๋ชจ ์ค‘ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์–ด์š”** + +> 5์ฃผ์ฐจ์—๋Š” ๋ฐ๋ชจ ๋ฐœํ‘œ ์ค‘ ์‚ฌ์šฉ์ž์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋ฉด์„œ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋˜ํ•œ **์‹ค์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์˜จ** ์ค‘์š”ํ•œ ํ”ผ๋“œ๋ฐฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์˜€๊ณ  ๋‹ค๋ฅธ ํ”ผ๋“œ๋ฐฑ๋ณด๋‹ค ์„œ๋น„์Šค ๋ณต๊ตฌ๋ฅผ ์ตœ์šฐ์„  ๊ณผ์ œ๋กœ ์‚ผ์•˜์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์„๊นŒ์š”? +> + +โ†’ [๐Ÿ”—ย ์–ด? ๊ธˆ์ง€, ๋ชจ๋‹ˆํ„ฐ ์•ž์— 3๋ช… ์ด์ƒ ์„œ์žˆ๊ธฐ ๊ธˆ์ง€](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/5%EF%B8%8F%E2%83%A3-5%EC%A3%BC%EC%B0%A8-%EB%B2%84%EA%B7%B8-%EA%B8%B0%EB%A1%9D) + +

+ +

๐Ÿ—บ๏ธ ํ”„๋กœ์ ํŠธ ํƒ€์ž„๋ผ์ธ

+ +![Overview-variant (18)](https://github.com/user-attachments/assets/a503f8fe-bab9-4cf3-8d9d-98ff43ab0c3e) + + +

+ + +

๐Ÿ› ๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

### ๐Ÿ–ฅ๏ธย System Architecture -![image (13)](https://github.com/user-attachments/assets/60bfb7a1-3c1a-436d-b961-5a30dc9dba7f) +![image (13)](https://github.com/user-attachments/assets/bee51119-c814-4f57-8cda-60ea4bfdd2dd) +
### ๐Ÿณย Sequence Diagram -
+```mermaid +sequenceDiagram + participant Subscriber as ๊ตฌ๋…์ž + participant OctoDocs as OctoDocs ์›Œํฌ์ŠคํŽ˜์ด์Šค + participant Yjs as yjs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ + participant YSocket as y-socketIO provider + participant WS_Server as websocket server (ysocketio) + participant PageModule as page ๋ชจ๋“ˆ (node ๋ชจ๋“ˆ) + participant Redis as redis + participant Postgres as postgres + %% ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ํ”Œ๋กœ์šฐ + note over Subscriber, YSocket: [์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ํ”Œ๋กœ์šฐ] + Subscriber->>OctoDocs: Y.Doc ์ƒ์„ฑ ์š”์ฒญ + OctoDocs->>Yjs: Y.Doc ์ƒ์„ฑ ์ˆ˜ํ–‰ + Yjs->>YSocket: Y.Doc ๊ณต์œ  ์š”์ฒญ + alt [Y.Doc์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ] + YSocket->>WS_Server: ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ + WS_Server->>PageModule: ๋ฐ์ดํ„ฐ ์กฐํšŒ ์š”์ฒญ + PageModule->>Redis: ๋ฐ์ดํ„ฐ ์กฐํšŒ ์š”์ฒญ + Redis->>PageModule: ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‘๋‹ต + PageModule->>WS_Server: ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‘๋‹ต + WS_Server->>YSocket: Y.Doc์— ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์…‹ํŒ… + YSocket->>Yjs: ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ์™„๋ฃŒ + else [Y.Doc์ด ์กด์žฌํ•  ๋•Œ] + YSocket->>WS_Server: ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ + YSocket->>Yjs: ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ์™„๋ฃŒ + end + %% ํŽ˜์ด์ง€ ์ •๋ณด ๋ณ€๊ฒฝ ํ”Œ๋กœ์šฐ + note over OctoDocs, WS_Server: [ํŽ˜์ด์ง€ ์ •๋ณด ๋ณ€๊ฒฝ ํ”Œ๋กœ์šฐ] + OctoDocs->>Yjs: Y.Doc ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ + Yjs->>YSocket: ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ + YSocket->>WS_Server: ์†Œ์ผ“ ์š”์ฒญ + WS_Server->>PageModule: ์†Œ์ผ“ ์š”์ฒญ + PageModule->>Redis: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ + Redis->>PageModule: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ ์•Œ๋ฆผ + PageModule-->>WS_Server: ์ €์žฅ ์™„๋ฃŒ ์•Œ๋ฆผ + WS_Server-->>YSocket: ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ + YSocket-->>Yjs: ๋ชจ๋“  ์ฐธ์—ฌ์ž๋“ค์—๊ฒŒ Y.Doc ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ + %% ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜์†ํ™” ํ”Œ๋กœ์šฐ + note over Redis, Postgres: [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜์†ํ™” ํ”Œ๋กœ์šฐ] + loop [์Šค์ผ€์ค„๋Ÿฌ] + Redis->>Postgres: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ + Postgres->>Redis: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ ์•Œ๋ฆผ + end +``` + + +

+ +

๐Ÿšง ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๊ณผ์ •

+ +### ๐Ÿ™ ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘ ๊ตฌํ˜„ ๊ณผ์ • + +์‹ค์‹œ๊ฐ„์œผ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ, ์ถฉ๋Œ ์—†์ด ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Octodocs ํŒ€์€ ์ด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€์‹  **YJS**์™€ **Socket.IO**๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ์ „๋žต์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋“ค์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ์„๊นŒ์š”? + +โ†’ [๐Ÿ”— ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘์˜ ๋น„๋ฐ€, ์ง€๊ธˆ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ธฐ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84-%ED%8E%B8%EC%A7%91-%EA%B5%AC%ED%98%84-%EA%B3%BC%EC%A0%95) +
-![image (14)](https://github.com/user-attachments/assets/ea6853d8-398e-4448-ae0a-07bffc653722) +### ๐ŸŒŠ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ณ€๊ฒฝ -
+Octodocs ํŒ€์€ ๊ธฐ์กด RESTful API ๊ธฐ๋ฐ˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  **YDoc ์ค‘์‹ฌ์˜ ๋‹จ์ผ Truth Source**์™€ **์†Œ์ผ“ ๊ธฐ๋ฐ˜ ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„**์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ชจ๋“  ์ƒํƒœ๊ฐ€ YDoc์„ ํ†ตํ•ด ์ผ๊ด€๋˜๊ฒŒ ๊ด€๋ฆฌ๋˜๊ณ , ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„ ๊ฐ„์†Œํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฐฉ์‹์„ ๋ฒ„๋ฆฌ๊ณ  ์ด ๋ณ€ํ™”๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๋˜ํ•œ, ์ค‘๋ณต ๊ด€๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ์ถฉ๋Œ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ **data flow ๋ณ€ํ™”**์˜ ํ•ต์‹ฌ์€ ๋ฌด์—‡์ด์—ˆ์„๊นŒ์š”? -# ๐Ÿ—บ๏ธ ํ”„๋กœ์ ํŠธ ํƒ€์ž„๋ผ์ธ +โ†’ [๐Ÿ”— ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋ชธ์„ ๋งก๊ฒจ๋ณด๊ธฐ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EC%86%8C%EC%BC%93%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EC%83%81%ED%83%9C%EA%B4%80%EB%A6%AC%EC%9D%98-%EB%B3%B5%EC%9E%A1%EC%84%B1%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9D%90%EB%A6%84-%EB%B3%80%EA%B2%BD) -![Overview-variant (18)](https://github.com/user-attachments/assets/a503f8fe-bab9-4cf3-8d9d-98ff43ab0c3e) +
+### ๐Ÿ•ธ๏ธ FE ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๊ฐœ์„  ๊ณผ์ • -# ๐Ÿšง ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๊ณผ์ • +์งง์€ ๊ธฐ๊ฐ„์˜ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฐœ๋ฐœํ–ˆ๋˜ Octodocs ํŒ€์€ ์–ด๋Š ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ์ ์„ ๋งˆ์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด **ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ**์˜ ๋ฌธ์ œ์ ์„ ์–ด๋–ป๊ฒŒ ํŒŒ์•…ํ–ˆ๊ณ , ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ์„  ํ–ˆ์„๊นŒ์š”? -### ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘ ๊ตฌํ˜„ ๊ณผ์ • +โ†’ [๐Ÿ”— FSD, ํž™ํ•˜์ง€๋งŒ ๋ง‰ ๊ฐ–๋‹ค ์“ฐ์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/FE-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B5%AC%EC%A1%B0-%EA%B0%9C%EC%84%A0-%EA%B3%BC%EC%A0%95) -Octodocs ํŒ€์€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ์—๋””ํ„ฐ์™€ ๋…ธ๋“œ ์บ”๋ฒ„์Šค์˜ **์‹ค์‹œ๊ฐ„ ํŽธ์ง‘**์„ ์œ„ํ•ด **CRDT** ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ **YJS**์™€ **SocketIO**๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉ ํ–ˆ์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ ์ค€๋น„ ์ค‘](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki) +
-### ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ณ€๊ฒฝ +### โœจ ๋“œ๋ž˜๊ทธ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์ƒ๊ธฐ๋Š” ์ฟผ๋ฆฌ ์ตœ์ ํ™” -YDoc๊ณผ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ RESTful ๋ฐฉ์‹์œผ๋กœ ์ผ๋ถ€ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋˜ ๊ตฌ์กฐ๋ฅผ, YDoc ์ค‘์‹ฌ์˜ **๋‹จ์ผ truth source**์™€ ์†Œ์ผ“ ๊ธฐ๋ฐ˜ **๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„**์œผ๋กœ ๋‹จ์ˆœํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋ชจ๋“  ์ƒํƒœ๊ฐ€ YDoc์„ ํ†ตํ•ด ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ด€๋ฆฌ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„ ๊ฐ„์†Œํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต ๊ด€๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ์ถฉ๋Œ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ์ด๋Ÿฐ **data flow ๋ณ€ํ™”**์˜ ํ•ต์‹ฌ์€ ๋ฌด์—‡์ด์—ˆ์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ ์ค€๋น„ ์ค‘](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki) +๋…ธํŠธ ์นด๋“œ๋ฅผ **๋“œ๋ž˜๊ทธํ•  ๋•Œ ๋„ˆ๋ฌด ๋งŽ์€ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒ**ํ•ด ์„œ๋ฒ„๊ฐ€ ๋ฉˆ์ถ”๋Š” ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ์บ”๋ฒ„์Šค๋ฅผ ์•„์˜ˆ ์ด์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ์—, ๋ฐ˜๋“œ์‹œ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ณผ์ œ์˜€์Šต๋‹ˆ๋‹ค. Octodocs ํŒ€์€ ์†Œ์ˆ˜์  ๋‹จ์œ„๋กœ ๋ณ€ํ•˜๋Š” ์ขŒํ‘œ๋ฅผ DB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ตœ์ ํ™”๋ฅผ ๋„์ž…ํ–ˆ์„๊นŒ์š”? -### FE ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๊ฐœ์„  ๊ณผ์ • +โ†’ [๐Ÿ”— ์šฐ์ธก์œผ๋กœ 1mm๋งŒ ์˜ฎ๊ฒจ์ฃผ์„ธ์š”](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B4%80%EC%B0%B0%2C-%EC%BF%BC%EB%A6%AC-%EB%B0%9C%EC%83%9D-%EC%B5%9C%EC%A0%81%ED%99%94-%EA%B3%BC%EC%A0%95) -Octodocs ํŒ€์€ ๊ธฐ์กด **ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ**์˜ ๋ฌธ์ œ์ ์„ ์–ด๋–ป๊ฒŒ ํŒŒ์•…ํ–ˆ๊ณ , ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ์„ ์„ ํ–ˆ์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ ์ค€๋น„ ์ค‘](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki) +
-### ๋“œ๋ž˜๊ทธ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์ƒ๊ธฐ๋Š” ์ฟผ๋ฆฌ ์ตœ์ ํ™” +### ๐Ÿงจ Redis๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜ ์ค„์ด๊ธฐ + +์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์„œ๋ฅผ ๋™์‹œ์— ํŽธ์ง‘ํ•˜๋ฉด ๊ต‰์žฅํžˆ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ํƒ€์ดํ•‘์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์„ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๊ธฐ์—๋Š” ๋ถ€ํ•˜๊ฐ€ ๋„ˆ๋ฌด ๋ฐœ์ƒํ–ˆ๊ธฐ์—, Octodocs ํŒ€์€ redis๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ง€์ ์—์„œ redis ๋„์ž…์„ ๊ฒฐ์ •ํ–ˆ๊ณ , ์–ด๋–ป๊ฒŒ redis๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์„๊นŒ์š”? + +โ†’ [๐Ÿ”— Redis ๊ฐ™์€ ๊ฑธ ๋ผ์–น๋‚˜?](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/redis%EB%A5%BC-%ED%86%B5%ED%95%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%BF%BC%EB%A6%AC-%EC%A4%84%EC%9D%B4%EA%B8%B0) + +
-**๋…ธํŠธ ์นด๋“œ๋ฅผ ๋“œ๋ž˜๊ทธ** ํ•  ๋•Œ, ๊ทธ ์œ„์น˜๋ฅผ DB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด **๋„ˆ๋ฌด ๋งŽ์€ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒ**ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด **์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”**ํ•ด์•ผํ•  ํ•„์š”์„ฑ์ด ์ƒ๊ฒผ๋Š”๋ฐ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ ์ค€๋น„ ์ค‘](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki) +### ๐Ÿณ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ๋ฐฐํฌ ํ™˜๊ฒฝ ๋ฐ CI/CD์— ๋Œ€ํ•œ ๊ฐœ์„  ๊ณผ์ • -### redis ์บ์‹ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜ ๊ฐ์†Œ +Octodocs ํŒ€์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ์€ ๋ฌผ๋ก , ์ผ๊ด€๋œ ์ฝ”๋“œ ํ’ˆ์งˆ ์œ ์ง€์™€ ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ ์พŒ์ ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์กฐ์„ฑ์„ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ๋ ˆํฌ์—์„œ ๋ชจ๋…ธ๋ ˆํฌ๋กœ์˜ ์ „ํ™˜, GitHub Actions๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•, Docker์™€ Docker Compose์˜ ๋„์ž…๊นŒ์ง€โ€”์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๋ณ€ํ™”๋ฅผ ๊ฑฐ์ณค์„๊นŒ์š”? -์‹ค์‹œ๊ฐ„ ๋ฌธ์„œ ๋™์‹œ ํŽธ์ง‘์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ต‰์žฅํžˆ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ–ˆ๊ณ , Octodocs ํŒ€์€ redis๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ์™œ redis๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ  ๋˜ redis๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ–ˆ์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/redis%EB%A5%BC-%ED%86%B5%ED%95%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%BF%BC%EB%A6%AC-%EC%A4%84%EC%9D%B4%EA%B8%B0) +โ†’ [๐Ÿ”— ํ™˜๊ฒฝ ๊ฐœ์„ ์˜ ์—ฌ์ • ๋”ฐ๋ผ๊ฐ€๊ธฐ](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD%2C-%EB%B0%B0%ED%8F%AC-%ED%99%98%EA%B2%BD-%EB%B0%8F-CI-CD%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B0%9C%EC%84%A0-%EA%B3%BC%EC%A0%95) -### ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ๋ฐฐํฌ ํ™˜๊ฒฝ ๋ฐ CI/CD์— ๋Œ€ํ•œ ๊ฐœ์„  ๊ณผ์ • +

-Octodocs ํŒ€์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ์€ ๋ฌผ๋ก , ์ผ๊ด€๋œ ์ฝ”๋“œ ํ’ˆ์งˆ ์œ ์ง€์™€ ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ ์พŒ์ ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์กฐ์„ฑ์„ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ๋ ˆํฌ์—์„œ ๋ชจ๋…ธ๋ ˆํฌ๋กœ์˜ ์ „ํ™˜, GitHub Actions๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•, Docker์™€ Docker Compose์˜ ๋„์ž…๊นŒ์ง€โ€”์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๋ณ€ํ™”๋ฅผ ๊ฑฐ์ณค์„๊นŒ์š”? [๐Ÿ”— ๋งํฌ ์ค€๋น„ ์ค‘](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki) +

๐Ÿงธ ํŒ€์› ์†Œ๊ฐœ

-# ๐Ÿงธ ํŒ€์› ์†Œ๊ฐœ | [J032_๊น€๋™์ค€](https://github.com/djk01281) | [J075_๊น€ํ˜„์ค€](https://github.com/Tolerblanc) | [J097_๋ฏผ์„œ์ง„](https://github.com/summersummerwhy) | [J162_์œ ์„ฑ๋ฏผ](https://github.com/ezcolin2) | [J248_์ง„์˜ˆ์›](https://github.com/yewonJin) | |:----------------------------------------:|:------------------------------------------:|:------------------------------------------------:|:----------------------------------------:|:----------------------------------------:| | ์Šคํฌ๋ฆฐ์ƒท 2024-10-29 ์˜คํ›„ 4 | ์Šคํฌ๋ฆฐ์ƒท 2024-10-29 ์˜คํ›„ 11 41 04 | ์Šคํฌ๋ฆฐ์ƒท 2024-10-29 ์˜คํ›„ 11 41 55 | ์Šคํฌ๋ฆฐ์ƒท 2024-10-29 ์˜คํ›„ 11 41 00 | ์Šคํฌ๋ฆฐ์ƒท 2024-10-29 ์˜คํ›„ 11 40 31 |