- ๐๋ฐฐํฌ์ฌ์ดํธ : ํํ์จ
- ๐ฅ์์ฐ์์ : ์์ฐ์์
ํํ์จ์ ์ฌ์ฉ์ ๋ง์ถคํ ๋ณต์ง ์ถ์ฒ๊ณผ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฐ ์ ๋ณด ๊ณต์ ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ํ ๋ณต์ง ์ ๋ณด ํ๋ซํผ์
๋๋ค.
์ ๋ณด๊ฐ ๋ถ์ฐ๋์ด ์ ๊ทผ์ด ์ด๋ ค์ด ๋ณต์ง ์๋น์ค๋ฅผ ๋๊ตฌ๋ ์ฝ๊ฒ ํ์ํ๊ณ , ํ์ํ ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ์ ๋ง๋ค๊ณ ์ ํ๋ก์ ํธ๋ฅผ ๊ธฐํํ๊ฒ ๋์์ต๋๋ค.
- ์ฌ์ฉ์์ ์ง์ญ, ๊ด์ฌ ํค์๋, ๊ฐ๊ตฌ ์ํฉ ๋ฑ์ ๊ธฐ๋ฐํ ๋ง์ถคํ ๋ณต์ง ํํ์ ์ถ์ฒํฉ๋๋ค.
- ํํฐ ๊ฒ์, ์๋์์ฑ ๊ฒ์์ด, ์ ๋ ฌ ๊ธฐ๋ฅ ๋ฑ์ ํตํด ์ํ๋ ๋ณต์ง ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์์ต๋๋ค.
- ๊ด์ฌ ์๋ ๋ณต์ง ํํ์ ๋ถ๋งํฌ ๊ธฐ๋ฅ์ ํตํด ์ฝ๊ฒ ์ ์ฅํ๊ณ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ฐ ์ ๋ณด ๊ณต์ ๋ฅผ ์ํ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ง๋ฌธ, ์์ , ์ธ์ฌ ๋ฑ ๊ฒ์ํ ์ ํ๋ณ๋ก ๊ตฌ๋ถ๋์ด ์์ผ๋ฉฐ, ๊ฐ ๊ฒ์๊ธ์๋ ์ด๋ฏธ์ง ์ฒจ๋ถ, ํ๊ทธ, ์ถ์ฒ ๊ธฐ๋ฅ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
- ๋๊ธ, ๋๋๊ธ, ๋ต๋ณ ์ฑํ ๋ฑ ํ๋ฐํ ์ํต์ด ๊ฐ๋ฅํ๋ฉฐ, ์ ๊ณ ๋ฐ ์ญ์ ๊ธฐ๋ฅ๋ ํฌํจ๋์ด ์์ต๋๋ค.
ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2024.01.07 ~ 2024.05.30
| ๊ณ ๋ฒ์ | ์ฅ์ฑ | ์ค์ฑ์ฐ | ๋ฐฑ์น์ |
๊ณ ๋ฒ์(ํ์ฅ) : DB ์ค๊ณ ๋ฐ ๊ด๋ฆฌ, ๋ฐฑ์๋ ๊ตฌํ
์ฅ์ฑ : ๋ฐฑ์๋ ๊ตฌํ
์ค์ฑ์ฐ : UI ์ค๊ณ ๋ฐ ์น ํ๋ก ํธ ๊ตฌํ
๋ฐฑ์น์ : UI ์ค๊ณ ๋ฐ ์น ํ๋ก ํธ ๊ตฌํ
ํ๋ก์ ํธ๋ React ๊ธฐ๋ฐ ํ๋ก ํธ์๋์ Spring Boot ๊ธฐ๋ฐ ๋ฐฑ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ํ๋ฆ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- ์ฌ์ฉ์๋ Netlify์ ๋ฐฐํฌ๋ React ์น์ฌ์ดํธ์ ์ ์ํ์ฌ ๊ฒ์๊ธ ์์ฑ, ๋ณต์ง ์๋น์ค ๊ฒ์ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
- ํ๋ก ํธ๋ Axios(
httpClient)๋ฅผ ํตํด Spring Boot API ์๋ฒ๋ก HTTP ์์ฒญ์ ๋ณด๋ ๋๋ค. - ์์ฒญ์ Nginx๋ฅผ ๊ฑฐ์ณ AWS EC2์ Docker ์ปจํ ์ด๋(Spring Boot)๋ก ์ ๋ฌ๋ฉ๋๋ค.
- ์์ฒญ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฐฑ์๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค:
| ๋ฐ์ดํฐ ์ข ๋ฅ | ์ ์ฅ์/์ฒ๋ฆฌ ๋์ |
|---|---|
| ๊ฒ์๊ธ, ์ฌ์ฉ์ ์ ๋ณด ๋ฑ | ๐ฆ MySQL (AWS RDS) |
| ์ด๋ฏธ์ง, ํ์ผ ๋ฑ ์ ์ ๋ฆฌ์์ค | ๐จ AWS S3 |
| ํค์๋ ๊ธฐ๋ฐ ๊ฒ์ ๋ฐ์ดํฐ | ๐ฉ MongoDB |
| ๋ถ๋งํฌ, ์ธ์ ๋ฑ ์์ ๋ฐ์ดํฐ | ๐ฅ Redis |
- ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ JSON์ผ๋ก ํ๋ก ํธ์ ์๋ต๋๋ฉฐ, React๊ฐ ์ด๋ฅผ ํ๋ฉด์ ๋ ๋๋งํฉ๋๋ค.
๐ค ์ ์ API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/signup |
POST | ํ์๊ฐ์ |
/login |
POST | ๋ก๊ทธ์ธ |
/logout |
POST | ๋ก๊ทธ์์ |
/users/me |
GET | ๋ด ์ ๋ณด ์กฐํ |
/users/me/profile |
PUT | ํ๋กํ ์์ |
/users/me/password |
PUT | ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ |
/users/me |
DELETE | ํ์ ํํด |
/users/check-duplicate |
GET | ์์ด๋/๋๋ค์ ์ค๋ณต ํ์ธ |
/users/{userId} |
GET | ๋ค๋ฅธ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ |
/users/me/bookmarked/posts |
GET | ๋ด๊ฐ ๋ถ๋งํฌํ ๊ฒ์๊ธ ์กฐํ |
/users/me/posts |
GET | ๋ด๊ฐ ์์ฑํ ๊ฒ์๊ธ ์กฐํ |
/users/me/recommended/posts |
GET | ๋ด๊ฐ ์ถ์ฒํ ๊ฒ์๊ธ ์กฐํ |
๐ ๊ฒ์๊ธ/๋๊ธ/๋ต๋ณ API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/posts |
POST | ๊ฒ์๊ธ ์์ฑ |
/posts/type |
GET | ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ |
/posts/{postId} |
GET | ๊ฒ์๊ธ ์์ธ ์กฐํ |
/posts/{postId} |
PUT | ๊ฒ์๊ธ ์์ |
/posts/{postId}/recommend |
POST | ๊ฒ์๊ธ ์ถ์ฒ |
/posts/{postId}/recommend |
DELETE | ๊ฒ์๊ธ ์ถ์ฒ ํด์ |
/posts/{postId}/comments |
POST | ๋๊ธ ์์ฑ |
/posts/{postId}/comments |
GET | ๋๊ธ ๋ชฉ๋ก ์กฐํ |
/posts/{postId}/comments/{commentId} |
DELETE | ๋๊ธ ์ญ์ |
/posts/{postId}/comments/{commentId}/replies |
POST | ๋๋๊ธ ์์ฑ |
/posts/{postId}/comments/{commentId}/replies |
GET | ๋๋๊ธ ๋ชฉ๋ก ์กฐํ |
/posts/{postId}/answers |
POST | ๋ต๋ณ ์์ฑ |
/posts/{postId}/answers |
GET | ๋ต๋ณ ๋ชฉ๋ก ์กฐํ |
/posts/{postId}/answers/{answerId}/select |
PUT | ๋ต๋ณ ์ฑํ |
/posts/{postId}/answers/{answerId} |
DELETE | ๋ต๋ณ ์ญ์ |
/mongo/search/posts |
GET | ๊ฒ์๊ธ ๊ฒ์ |
/mongo/search/posts?searchTerm= |
GET | ํตํฉ ๊ฒ์๊ธ ๊ฒ์ |
๐ก ๋ณต์ง ํํ API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/services |
GET | ๋ณต์ง ํํฐ ๊ฒ์ |
/services/detail/{serviceId} |
GET | ๋ณต์ง ์์ธ ์กฐํ |
/services/{id}/bookmark |
POST | ๋ณต์ง ๋ถ๋งํฌ ์ถ๊ฐ |
/services/{id}/bookmark |
DELETE | ๋ณต์ง ๋ถ๋งํฌ ์ญ์ |
/services/filters |
GET | ๋ณต์ง ํํฐ ํญ๋ชฉ ์กฐํ |
/services/recent |
GET | ์ต๊ทผ ๋ณต์ง ์๋น์ค |
/services/popular |
GET | ์ธ๊ธฐ ๋ณต์ง ์๋น์ค |
/mongo/search/services |
GET | ๋ณต์ง ๊ฒ์ |
/mongo/search/services/autocomplete |
GET | ๋ณต์ง ์๋์์ฑ |
/mongo/services/matched |
GET | ๋ง์ถคํ ๋ณต์ง ์ถ์ฒ |
/interests |
GET | ๊ด์ฌ์ฌ ๋ชฉ๋ก ์กฐํ |
/interests/me |
GET | ๋ด ๊ด์ฌ์ฌ ์กฐํ |
/interests/me |
POST | ๊ด์ฌ์ฌ ์ ์ฅ |
/search/history |
GET | ๊ฒ์ ๊ธฐ๋ก ์กฐํ |
/search/history/{historyId} |
DELETE | ๊ฒ์ ๊ธฐ๋ก ๊ฐ๋ณ ์ญ์ |
/search/history |
DELETE | ๊ฒ์ ๊ธฐ๋ก ์ ์ฒด ์ญ์ |
๐จ ์ ๊ณ API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/users/reports |
POST | ์ฌ์ฉ์ ์ ๊ณ |
/admin/users/reports |
GET | ์ ๊ณ ๋ด์ญ ์ ์ฒด ์กฐํ |
/admin/users/reports/status/{status} |
GET | ์ ๊ณ ์ํ๋ณ ์กฐํ |
/admin/users/reports/{reportId}/resolve |
POST | ์ ๊ณ ์น์ธ ์ฒ๋ฆฌ |
/admin/users/reports/{reportId}/reject |
POST | ์ ๊ณ ๊ฑฐ์ ์ฒ๋ฆฌ |
๐ ๊ด๋ฆฌ์ API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/admin/users |
GET | ์ ์ฒด ํ์ ๋ชฉ๋ก ์กฐํ |
/admin/users/withdrawn |
GET | ํํด ํ์ ๋ชฉ๋ก ์กฐํ |
/admin/users/suspended |
GET | ์ ์ง ํ์ ๋ชฉ๋ก ์กฐํ |
/admin/users/{userId}/suspend |
POST | ํ์ ์ ์ง |
/admin/users/{userId}/unsuspend |
PUT | ํ์ ์ ์ง ํด์ |
๐ค ์ฑ๋ด API ๋ช ์ธ์ ๋ณด๊ธฐ
| API URL | Method | ์ค๋ช |
|---|---|---|
/chatbot |
GET | ์ฑ๋ด ์๋ต ์์ฒญ |











