![logo](/Team-Enigma23/social-media-integration-feed-project/raw/master/src/main/resources/static/img/logo.jpg)
소셜 미디어 Feed 여기 다 MOA! 본 서비스는 유저 계정의 해시태그(”#dani”) 를 기반으로 인스타그램
, 스레드
, 페이스북
, 트위터
등 복수의 SNS에 게시된 게시물 중 유저의 해시태그가 포함된 게시물들을 하나의 서비스에서 확인할 수 있는 통합 Feed 어플리케이션 입니다.
언어 및 프레임워크:
![Static Badge](https://camo.githubusercontent.com/17797c05d6657d917b9f47378e04b3b49f7b89cbed70db051acbcc694379af88/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537072696e675f626f6f742d524553542d477265656e)
데이터베이스 및 테스트:
배포 :
ETC: ![Static Badge](https://camo.githubusercontent.com/63ba04ad8763cb5605340a1e458a6dd32f7d45f95038f0b59b38af0e34924fa8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f534d54502d303339424336)
Install MOA project with gradle
./gradlew bootjar
./gradlew bootrun
To run tests, run the following command
![Static Badge](https://camo.githubusercontent.com/6493322073be1de166ea17d6be311ab5638a41abf6e1e2a243d88feb9dcf7cbf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f546573745f5061737365642d32332f32332d677265656e)
![coverage](/Team-Enigma23/social-media-integration-feed-project/raw/master/src/main/resources/static/img/test.png)
회원가입 - click
Content-Type: application/json
{
"username":"test1234",
"email":"[email protected]",
"password":"1q2w3e4r!",
"hashtag":"test"
}
HTTP/1.1 201
Content-Type: application/json
{
"id": 1,
"username": "test1234",
"email": "[email protected]",
"hashtag": "test"
}
로그인 - click
Content-Type: application/json
{
"username": "tester1234",
"password": "1q2w3e4r!",
}
HTTP/1.1 200
Content-Type: application/json
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MTIzNCIsImV4cCI6MTY5ODc3MjE5OSwiaWF0IjoxNjk4Njg1Nzk5LCJlbWFpbCI6Inlvb2ppbmxlZS5kZXZAZ21haWwuY29tIiwidXNlcklkIjoxLCJhdXRoIjoiUk9MRV9NRU1CRVIifQ.EFjPkcgIjepNwh0qel9H9ZQMbcJ2dZ-fBl9sRuUG5tU"
}
유저 회원가입 승인 - click
Path |
Type |
Description |
id |
Long |
Required. User's ID |
HTTP/1.1 204
Content-Type: application/json
게시물 불러오기 - click
Parameter |
Type |
Description |
hashtag |
String |
|
page |
int |
|
page_count |
int |
|
createdAt |
String |
|
desc |
String |
|
HTTP/1.1 200
Content-Type: application/json
{
"content": [
{
"id": 1,
"contentId": "fb1",
"type": "FACEBOOK",
"title": "페북 피드_1",
"content": "good #dev #java",
"viewCount": 2,
"likeCount": 0,
"shareCount": 3,
"createdAt": "2023-10-31T02:00:30.682465",
"updatedAt": "2023-10-31T02:00:30.682465"
},
//...
],
"pageable": {
"pageNumber": 0,
"pageSize": 5,
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"offset": 0,
"unpaged": false,
"paged": true
},
"last": false,
"totalElements": 20,
"totalPages": 4,
"size": 5,
"number": 0,
"sort": {
"empty": false,
"sorted": true,
"unsorted": false
},
"first": true,
"numberOfElements": 5,
"empty": false
}
게시물 상세 - click
Path |
Type |
Description |
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
{
"id": 0,
"contentId": "string",
"type": "FACEBOOK",
"title": "string",
"content": "string",
"viewCount": 0,
"likeCount": 0,
"shareCount": 0,
"createdAt": "2023-11-02T03:02:34.687Z",
"updatedAt": "2023-11-02T03:02:34.687Z"
}
게시물 좋아요 - click
GET /posts/{postId}/likes
Path |
Type |
Description |
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
게시물 공유 - click
GET /posts/{postId}/shares
Path |
Type |
Description |
id |
Long |
Required. User's ID |
HTTP/1.1 200
Content-Type: application/json
Hot Hashtag 찾기 - click
HTTP/1.1 200
Content-Type: application/json
{
"hashtagName": "#test",
"count": 15
}
통계 - click
Parameter |
Type |
Description |
hashtag |
String |
|
type |
String |
Required.date , hour |
start |
date |
2023-10-01 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
end |
date |
2023-10-25 과 같이 데이트 형식이며 조회 기준 시작일을 의미합니다. |
value |
String |
count, view_count, like_count, share_count |
HTTP/1.1 200
Content-Type: application/json
{
"time": "#test",
"count": 15
}
![Notion](https://camo.githubusercontent.com/d710e8721f48cc12585b978c3fcae786115df6a4f09f00298860abd5d56aad25/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769746875625f70726f6a6563745f2d434c49434b2546302539462539362542312d2532333030303030302e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d476974687562266c6f676f436f6c6f723d7768697465)
![img.png](/Team-Enigma23/social-media-integration-feed-project/raw/master/src/main/resources/static/img/project.png)
- 유저는 ID(
#HashtagId
)를 가지고 있고 자신의 ID와 연관된 SNS 게시글을 조회할 수 있습니다
- 게시글과 해시태그는
N:M
의 관계를 가지고 있습니다.
JWT 유저인증 - click
- JWT를 활용한 유저 인증을 구현했습니다.
- SMTP를 활용해 유저의 이메일에 유저의 인증키를 전송하는 기능을 구현했습니다.
게시물 확인 - click
- 게시물 확인 및 상세, 좋아요, 공유 기능을 구현했습니다.
통계 - click
- 유저, 또는 브랜드 해시태그의 통계를 확인할 수 있습니다.
HOT Hashtag - click
- 최근 3시간 이내에 게시물에서 가장 많이 사용된 해시태그를 조회할 수 있습니다.
RESTful API 설계 - click
- Open API를 활용한 Self-descriptive Message 충족
- "/swagger-ui"에서 해당 내용 확인 가능