2 minute read

์ฝ”๋“œ์ž‡๋ถ€์ŠคํŠธ ๋™์•„๋ฆฌ์˜ ๋งˆ์ง€๋ง‰ ํ™œ๋™์œผ๋กœ ๋ถ€์ŠคํŠธ ๋ฐ๋ชจ๋ฐ์ด์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ <์กฐ๊ฐ์ง‘>์€ ์ถ”์–ต์„ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ด๋‹ค. ์ฝ”๋“œ์ž‡๋ถ€์ŠคํŠธ์—์„œ๋Š” ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””์ž์ธ ์‹œ์•ˆ์„ ์ œ๊ณตํ•ด์คฌ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ œ์‹œ๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•˜์˜€๋‹ค.

๋จผ์ € ํ”„๋กœ์ ํŠธ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ 2025.02.04 ~ 2025.02.22 (2์ฃผ)
ํ”Œ๋žซํผ Web
๊ฐœ๋ฐœ ์ธ์› 7๋ช… (๋ฐฑ์—”๋“œ4 / ํ”„๋ก ํŠธ์—”๋“œ2)
๋‹ด๋‹น ์—ญํ•  - ๋ฐฑ์—”๋“œ โ€ข ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์› ๊ด€๋ฆฌ (๊ธฐ์—ฌ๋„ 100%)
โ€ข ๋งˆ์ดํŽ˜์ด์ง€ ์›น์„œ๋ฒ„ ๊ตฌํ˜„ (๊ธฐ์—ฌ๋„ 100%)
โ€ข ์„œ๋น„์Šค ๊ธฐํš ๋ฐ ๋ฐฉํ–ฅ์„ฑ ์„ค์ • (๊ธฐ์—ฌ๋„ 80%)
๐Ÿ”’๊ฐœ๋ฐœ ํ™˜๊ฒฝ
๐Ÿš€ Stacks HTML, CSS(SCSS), JavaScript, React.js, Node.js
๐Ÿ›  Tools Figma, Git
๐Ÿ‘ฅย Collaboration GitHub, Notion, Discord, Slack

๋ณธ๊ฒฉ์ ์ธ ํ”„๋กœ์ ํŠธ ์ž‘์—…์— ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํŒ€์›๋“ค๊ณผ ํ”„๋กœ์ ํŠธ ์ž‘์—… ์ผ์ •๊ณผ ๊ทœ์น™์„ ์กฐ์œจํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ์†Œํ†ต ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.


์›นํŽ˜์ด์ง€ ๋””์ž์ธ ์ˆ˜์ •

๊ธฐ์กด์— ์ฝ”๋“œ์ž‡์—์„œ ์ œ๊ณตํ–ˆ๋˜ ๋””์ž์ธ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘์— ๋ช‡ ๊ฐ€์ง€ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์€ ๋””์ž์ธ์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋””์ž์ธํ–ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


API ๋ช…์„ธ์„œ

๊ทธ๋ฃน ๋ฐ ๊ฒŒ์‹œ๊ธ€ 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%)
โ€ข ๋Œ“๊ธ€ ์ž‘์„ฑ/์ˆ˜์ •/์‚ญ์ œ ํŽ˜์ด์ง€ (๊ธฐ์—ฌ๋„ 100%)
โ€ข ๋ฉ”์ธํŽ˜์ด์ง€ (๊ธฐ์—ฌ๋„ 70%)
โ€ข ๋งˆ์ดํŽ˜์ด์ง€ (๊ธฐ์—ฌ๋„ 60%)


ERD ๋‹ค์ด์–ด๊ทธ๋žจ


์ˆ˜์ƒ


ํšŒ๊ณ 

API ํ‚ค ์„ค์ •๊ณผ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ โ€˜์„œ๋ฒ„ ํ…Œ์ŠคํŠธโ€™๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ์—ฌ๋Ÿฌ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋กœ์ปฌ๊ณผ ๋ฐฐํฌ ์„œ๋ฒ„ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋‹ค์†Œ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Prisma์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ์—์„œ๋„ ๋ณต์žกํ•œ ์ƒํ™ฉ์„ ๊ฒช์—ˆ๋‹ค. ์ง์ ‘ SQL ๋ช…๋ น์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด์„œ Prisma ์Šคํ‚ค๋งˆ์™€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํŒ€์›๋“ค๊ณผ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค migration ๊ณผ์ •์—์„œ ์ถฉ๋Œ์ด ์ƒ๋‹ค.

๋”ฐ๋ผ์„œ ๋จผ์ € .env ํŒŒ์ผ์„ ํ†ตํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , Postman์„ ํ™œ์šฉํ•ด์„œ ๊ฐ๊ฐ์˜ API ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณค๋‹ค.

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

์ง์ ‘ SQL ๋ช…๋ น์–ด๋กœ DB๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ์Šคํ‚ค๋งˆ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Prisma์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค. ์šฐ์„  ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ๊ณ , ๊ทธ ํ›„์—๋Š” ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์ค„์—ฌ๋‚˜๊ฐ”๋‹ค.