- ํ๋ก์ ํธ ์๊ฐ
- ๊ธฐ์ ์คํ
- ์ฃผ์ ๊ธฐ๋ฅ
- ์คํ ํ๋ฉด
- ํ๋ก์ ํธ ๊ตฌ์ฑ๋
- ๊ฐ๋ฐ ํ ์๊ฐ
- ๊ฐ๋ฐ ๊ธฐ๊ฐ
์ฌ์ฉ์๊ฐ ์ค๊ณ ๋ฌผํ์ ๋ฑ๋กํ๊ณ , ๊ฒ์๊ธ์ ํตํด ๊ฑฐ๋ํ ์ ์๋ ์ค๊ณ ๊ฑฐ๋ ํน์ฑ์ ๋ฐ์ํ ๊ฒ์ํ ๊ธฐ๋ฐ ์น ํ๋ซํผ
| HTML5 | CSS3 | JavaScript |
| Spring | MySQL | GCP |
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ๊ฒ์๊ธ ๊ด๋ฆฌ | ๊ฒ์๊ธ ์์ฑ, ์์ , ์ญ์ , ์กฐํ ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ ์ง์ ์ด๋ฏธ์ง ํฌํจ ๊ฐ๋ฅ, ์ ํ๋ ๊ฒ์๊ธ์ ์์ฑ์ ๋๋ ๊ด๋ฆฌ์๋ง ์กฐํ ๊ฐ๋ฅ |
| ๋๊ธ ๊ธฐ๋ฅ | ๊ฒ์๊ธ์ ๋๊ธ ์์ฑ, ์์ , ์ญ์ ๊ฐ๋ฅ |
| ์ข์์ ๊ธฐ๋ฅ | ๊ฒ์๊ธ์ ์ข์์ ํ ๊ธ(๋ฑ๋ก/์ทจ์) ๋ฐ ํ์ฌ ์ฌ์ฉ์์ ์ข์์ ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ |
| ๊ฒ์๊ธ ์ ๊ณ | ๊ฒ์๊ธ์ ๋ํ ์ ๊ณ ๊ธฐ๋ฅ ์ ๊ณต (์ฌ์ ํฌํจ), ๊ด๋ฆฌ์ ํ์ด์ง์์ ์ ๊ณ ๋ด์ญ ํ์ธ ๊ฐ๋ฅ |
| ๋ฐ์ฑ๋ฌธ ์ ์ถ ๋ฐ ์น์ธ | ์ ํ๋ ๊ฒ์๊ธ์ ๋ํด ๋ฐ์ฑ๋ฌธ ์ ์ถ ๊ฐ๋ฅ (100์ ์ด์), ๊ด๋ฆฌ์๋ ๋ฐ์ฑ๋ฌธ ์กฐํ ๋ฐ ์น์ธ/๊ฑฐ์ ์ฒ๋ฆฌ |
| ๊ฒ์๊ธ ์ ํ ๊ด๋ฆฌ | ์ ๊ณ ๋์ ์ผ๋ก ์ ํ๋ ๊ฒ์๊ธ ๋ชฉ๋ก์ ๊ด๋ฆฌ์ ํ์ด์ง์์ ํ์ธ ๊ฐ๋ฅ |
| ๋ง์ดํ์ด์ง ๊ด๋ฆฌ | ํ์ฌ ๋ก๊ทธ์ธ ์ฌ์ฉ์์ ์ ๋ณด ์กฐํ ๋ฐ ์ด๋ฆ, ํ๋กํ ์ด๋ฏธ์ง ์์ /์ด๊ธฐํ ๊ฐ๋ฅ |
| ํ์๊ฐ์ ๋ฐ ์ธ์ฆ | ์ฌ์ฉ์ ํ์๊ฐ์ , ๋ก๊ทธ์์, ํ์ฌ ๋ก๊ทธ์ธ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ ๊ฐ๋ฅ |
| ์กฐํ์ ์ถ์ | ๊ฒ์๊ธ์ ์ด๋ํ ๋๋ง๋ค ์กฐํ์ ์ฆ๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ (IP์ฃผ์ ๋น 30์ด์ 1๋ฒ) |
API ๋ชฉ๋ก
| API ์ข ๋ฅ | ๋ฉ์๋ | URL | ์ค๋ช |
|---|---|---|---|
| Admin | GET | /posts/restricted |
์ ๊ณ ๋์ ์ผ๋ก ์ ํ๋ ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ |
| GET | /reports |
์ ์ฒด ์ ๊ณ ๋ด์ญ ์กฐํ | |
| GET | /apologies |
์น์ธ ๋๊ธฐ ์ค์ธ ๋ฐ์ฑ๋ฌธ ๋ชฉ๋ก ์กฐํ | |
| GET | /apologies/{id} |
ํน์ ๋ฐ์ฑ๋ฌธ ์์ธ ์กฐํ | |
| POST | /apologies/{id}/review?accept=... |
๋ฐ์ฑ๋ฌธ ์น์ธ ๋๋ ๊ฑฐ์ ์ฒ๋ฆฌ (accept=true/false) | |
| Comment | POST | /posts/{postId}/comments |
ํน์ ๊ฒ์๊ธ์ ๋๊ธ ์์ฑ |
| PUT | /comments/{commentId} |
๋๊ธ ์์ | |
| DELETE | /comments/{commentId} |
๋๊ธ ์ญ์ | |
| Like | POST | /{postId} |
๊ฒ์๊ธ ์ข์์ ๋๋ ์ข์์ ์ทจ์ (ํ ๊ธ) |
| GET | /{postId} |
ํ์ฌ ๋ก๊ทธ์ธ ์ฌ์ฉ์์ ๊ฒ์๊ธ ์ข์์ ์ฌ๋ถ ์กฐํ | |
| Post | GET | /posts |
์ ์ฒด ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ (ํ์ด์ง ์ง์) |
| GET | /posts/{postId} |
๊ฒ์๊ธ ์์ธ ์กฐํ โป ์ ํ ๊ฒ์๊ธ์ ์์ฑ์ ๋๋ ๊ด๋ฆฌ์๋ง ์ ๊ทผ ๊ฐ๋ฅ |
|
| POST | /posts |
๊ฒ์๊ธ ์์ฑ (์ด๋ฏธ์ง ํฌํจ, multipart/form-data) |
|
| PUT | /posts/{postId} |
๊ฒ์๊ธ ์์ (์ด๋ฏธ์ง ํฌํจ, multipart/form-data) |
|
| DELETE | /posts/{postId} |
๊ฒ์๊ธ ์ญ์ (์์ฑ์๋ง ๊ฐ๋ฅ) | |
| POST | /posts/{postId}/view |
๊ฒ์๊ธ ์กฐํ์ ์ฆ๊ฐ | |
| GET | /posts/search |
๊ฒ์๊ธ ๊ฒ์ ๊ฒ์์ด, ๊ฐ๊ฒฉ ๋ฒ์, ์ํ(enum) ๋ฑ ์กฐ๊ฑด ์ง์ |
|
| Report | POST | /apologies/{postId} |
์ ํ๋ ๊ฒ์๊ธ์ ๋ํ ๋ฐ์ฑ๋ฌธ ์ ์ถ (์ต์ 100์ ์ด์) |
| POST | /reports/{postId} |
ํน์ ๊ฒ์๊ธ์ ๋ํ ์ ๊ณ ๋ฑ๋ก (์ ๊ณ ์ฌ์ ํฌํจ) | |
| Auth | POST | /users/register |
์ฌ์ฉ์ ํ์๊ฐ์ |
| POST | /users/logout |
๋ก๊ทธ์์ (์ธ์ ๋ฌดํจํ) | |
| GET | /users/me |
ํ์ฌ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ | |
| MyPage | GET | /users/mypage |
ํ์ฌ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์ ๋ง์ดํ์ด์ง ์ ๋ณด ์กฐํ |
| PUT | /users/mypage/profile |
์ฌ์ฉ์ ์ด๋ฆ(ํ๋กํ ์ ๋ณด) ๋ณ๊ฒฝ | |
| PUT | /users/mypage/profile-image |
ํ๋กํ ์ด๋ฏธ์ง ์์ (multipart/form-data) |
|
| DELETE | /users/mypage/profile-image/reset |
ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ก ์ด๊ธฐํ |
| ๋ฉ์ธํ๋ฉด | ๊ฒ์๊ธ ๋ชฉ๋ก + ๊ฒ์ ํํฐ ํ๋ฉด |
|---|---|
![]() |
![]() |
| ๊ฒ์๊ธ ์์ฑ ํ๋ฉด | ๊ฒ์๊ธ ์์ธ ์กฐํ ํ๋ฉด |
|---|---|
![]() |
![]() |
| ๋ฐ์ฑ๋ฌธ ์์ฑ ํ๋ฉด | ๊ด๋ฆฌ์ ๋ฐ์ฑ๋ฌธ ์น์ธ ํ๋ฉด |
|---|---|
![]() |
![]() |
| ๋ง์ดํ์ด์ง | ์ ๊ณ ๋ฑ๋ก ํ๋ฉด |
|---|---|
![]() |
![]() |
- SW ์ํคํ ์ฒ
- ERD
|
|
|
|
์ฅํ์ |
์ด๋ณธ๊ท |
| ์ด๋ฆ | ์ญํ | ๊ฐ๋ฐ ๋ด์ฉ |
|---|---|---|
| ์ฅํ์ | Frontend, Backend | - Post/Comment/Admin ๋๋ฉ์ธ ๊ตฌํ - GCS ์ด๋ฏธ์ง ์ ๋ก๋ ๊ตฌํ - ์ข์์ ๋์์ฑ ํด๊ฒฐ - UI ์ค๊ณ |
| ์ด๋ณธ๊ท | Frontend, Backend | - User/Like/Report ๋๋ฉ์ธ ๊ตฌํ - Spring Security - ์กฐํ์ ๊ธฐ๋ฅ(์บ์๋ฉ๋ชจ๋ฆฌ) - UI ์ค๊ณ |
- 2025.05.08 ~2025.05.16(1์ฃผ)










