[2025 ์๋ฐ๊ธฐ] ๐์กฐ๊ฐ์ง - ๊ธฐ์ต ์ ์ฅ ๋ฐ ๊ณต์ ์๋น์ค ์นํ์ด์ง ์ ์

์ฝ๋์๋ถ์คํธ ๋์๋ฆฌ์ ๋ง์ง๋ง ํ๋์ผ๋ก ๋ถ์คํธ ๋ฐ๋ชจ๋ฐ์ด์ ์ฐธ์ฌํ๊ฒ ๋์๋ค.
์ด๋ฒ ํ๋ก์ ํธ์ <์กฐ๊ฐ์ง>์ ์ถ์ต์ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์๋ ์๋น์ค์ด๋ค.
์ฝ๋์๋ถ์คํธ์์๋ ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๋๋ก ๋์์ธ ์์์ ์ ๊ณตํด์คฌ๋ค.
๋ฐ๋ผ์ ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํ์ฌ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ง์คํ์๋ค.
์กฐ๊ฐ์ง>
๋จผ์ ํ๋ก์ ํธ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
โข ๋ง์ดํ์ด์ง ์น์๋ฒ ๊ตฌํ (๊ธฐ์ฌ๋ 100%)
โข ์๋น์ค ๊ธฐํ ๋ฐ ๋ฐฉํฅ์ฑ ์ค์ (๊ธฐ์ฌ๋ 80%)
๋ณธ๊ฒฉ์ ์ธ ํ๋ก์ ํธ ์์ ์ ๋ค์ด๊ฐ๊ธฐ์ ์์ ํ์๋ค๊ณผ ํ๋ก์ ํธ ์์ ์ผ์ ๊ณผ ๊ท์น์ ์กฐ์จํ๊ณ ์๋์ ๊ฐ์ ์ํต ๋ฐฉ์์ ์ฌ์ฉํ๋ค.






์นํ์ด์ง ๋์์ธ ์์
๊ธฐ์กด์ ์ฝ๋์์์ ์ ๊ณตํ๋ ๋์์ธ๊ณผ ์๊ตฌ์ฌํญ ์ค์ ๋ช ๊ฐ์ง ๋ด์ฉ์ ๋ณ๊ฒฝํ์ฌ ์๋์ ๊ฐ์ ๋์์ธ์ผ๋ก ์๋กญ๊ฒ ๋์์ธํ๋ค.

๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.




API ๋ช ์ธ์
| ์น์ | Method | URL | ๊ธฐ๋ฅ/์ค๋ช |
|---|---|---|---|
| ๊ทธ๋ฃน | POST | /api/groups | ๊ทธ๋ฃน ๋ฑ๋ก |
| ๊ทธ๋ฃน | GET | /api/groups | ๊ทธ๋ฃน ๋ชฉ๋ก ์กฐํ |
| ๊ทธ๋ฃน | PUT | /api/groups/{groupId} | ๊ทธ๋ฃน ์์ |
| ๊ทธ๋ฃน | DELETE | /api/groups/{groupId} | ๊ทธ๋ฃน ์ญ์ |
| ๊ทธ๋ฃน | GET | /api/groups/{groupId} | ๊ทธ๋ฃน ์์ธ ์ ๋ณด ์กฐํ |
| ๊ทธ๋ฃน | POST | /api/groups/{groupId}/verify-password | ๊ทธ๋ฃน ์กฐํ ๊ถํ ํ์ธ |
| ๊ทธ๋ฃน | POST | /api/groups/{groupId}/like | ๊ทธ๋ฃน ๊ณต๊ฐํ๊ธฐ |
| ๊ทธ๋ฃน | GET | /api/groups/{groupId}/is-public | ๊ทธ๋ฃน ๊ณต๊ฐ ์ฌ๋ถ ํ์ธ |
| ๊ฒ์๊ธ | POST | /api/groups/{groupId}/posts | ๊ฒ์๊ธ ๋ฑ๋ก |
| ๊ฒ์๊ธ | GET | /api/groups/{groupId}/posts | ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ |
| ๊ฒ์๊ธ | PUT | /api/posts/{postId} | ๊ฒ์๊ธ ์์ |
| ๊ฒ์๊ธ | DELETE | /api/posts/{postId} | ๊ฒ์๊ธ ์ญ์ |
| ๊ฒ์๊ธ | GET | /api/posts/{postId} | ๊ฒ์๊ธ ์์ธ ์ ๋ณด ์กฐํ |
| ๊ฒ์๊ธ | POST | /api/posts/{postId}/verify-password | ๊ฒ์๊ธ ์กฐํ ๊ถํ ํ์ธ |
| ๊ฒ์๊ธ | POST | /api/posts/{postId}/like | ๊ฒ์๊ธ ๊ณต๊ฐํ๊ธฐ |
| ๊ฒ์๊ธ | GET | /api/posts/{postId}/is-public | ๊ฒ์๊ธ ๊ณต๊ฐ ์ฌ๋ถ ํ์ธ |
| ๋๊ธ | POST | /api/posts/{postId}/comments | ๋๊ธ ๋ฑ๋ก |
| ๋๊ธ | GET | /api/posts/{postId}/comments | ๋๊ธ ๋ชฉ๋ก ์กฐํ |
| ๋๊ธ | PUT | /api/comments/{commentId} | ๋๊ธ ์์ |
| ๋๊ธ | DELETE | /api/comments/{commentId} | ๋๊ธ ์ญ์ |
๐ฟ Userflow
โข ๊ทธ๋ฃน ์์ธ ํ์ด์ง (๊ธฐ์ฌ๋ 100%)
โข ์ถ์ต ์์ธ ํ์ด์ง (๊ธฐ์ฌ๋ 100%)
โข ๊ณต๊ฐ ๊ทธ๋ฃน ๋ชฉ๋ก ํ์ด์ง (๊ธฐ์ฌ๋ 100%)
โข ๋๊ธ ์์ฑ/์์ /์ญ์ ํ์ด์ง (๊ธฐ์ฌ๋ 100%)
โข ๋ฉ์ธํ์ด์ง (๊ธฐ์ฌ๋ 70%)
โข ๋ง์ดํ์ด์ง (๊ธฐ์ฌ๋ 60%)

ERD ๋ค์ด์ด๊ทธ๋จ

์์

ํ๊ณ
API ํค ์ค์ ๊ณผ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ โ์๋ฒ ํ
์คํธโ๋ฅผ ์งํํ๋ ๋ฐ ์ฌ๋ฌ ์ด๋ ค์์ด ์์๋ค. ํนํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๋ก์ปฌ๊ณผ ๋ฐฐํฌ ์๋ฒ ๊ฐ์ ์ฐจ์ด์ ์ ์ดํดํ๋ ๋ฐ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค.
๊ทธ๋ฆฌ๊ณ Prisma์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๊ด๋ฆฌ์์๋ ๋ณต์กํ ์ํฉ์ ๊ฒช์๋ค.
์ง์ SQL ๋ช
๋ น์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปฌ๋ผ์ ์ถ๊ฐํ๊ฒ ๋๋ฉด์ Prisma ์คํค๋ง์ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๊ฐ ์ผ์นํ์ง ์๋๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ก ์ธํด ํ์๋ค๊ณผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค migration ๊ณผ์ ์์ ์ถฉ๋์ด ์๋ค.
๋ฐ๋ผ์ ๋จผ์ .env ํ์ผ์ ํตํด ํ๊ฒฝ ๋ณ์๋ฅผ ๊ด๋ฆฌํ๊ณ , Postman์ ํ์ฉํด์ ๊ฐ๊ฐ์ API ๋ฅผ ๋จ๊ณ๋ณ๋ก ๊ฒ์ฆํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค.
๊ทธ๋ฆฌ๊ณ ํ์๋ค๊ณผ ๊ณ์์ ์ผ๋ก ์ํตํ๋ฉด์, DB ์คํค๋ง ๊ด๋ฆฌ์์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง์ ์ฝ๋ ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ , ํ ์ ์ฒด๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋๋ง๋ค ๊ณต์ง๋ฅผ ํ๋ ๋ฑ ์ํต ํ์๋ฅผ ๋๋ ค๋๊ฐ๋ค.
์ง์ SQL ๋ช
๋ น์ด๋ก DB๋ฅผ ๋ณ๊ฒฝํ๋ฉด์ ๋ฐ์ํ ์คํค๋ง ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Prisma์ ๋ง์ด๊ทธ๋ ์ด์
๋๊ตฌ๋ฅผ ํ์ฉํ๋ค. ์ฐ์ ๋ก์ปฌ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๊ณ , ๊ทธ ํ์๋ ์๋ฒ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์ค์ฌ๋๊ฐ๋ค.