Skip to content

Commit

Permalink
Docs: Resolve the conflit in Readme.md #48
Browse files Browse the repository at this point in the history
  • Loading branch information
hojoonSong committed Nov 1, 2023
2 parents 187053c + 43d2270 commit 04b07e3
Showing 1 changed file with 118 additions and 19 deletions.
137 changes: 118 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,29 @@ Get Your Feeds는 소셜 미디어 통합 Feed 서비스입니다.

## 🌟 팀원 및 역할 소개

| 고미종 | 추연규 | 이명석 | 송호준 | 이상운 |
| :-------------------------------: | :---------------------------------: | :--------------: | :-----------: | :----------------: |
| 게시물 상세 조회 <br> 게시물 공유 | 게시물 목록 조회 <br> 게시물 좋아요 | 게시물 통계 조회 | jwt 토큰 인증 | 유저 비즈니스 로직 |
| 고미종 | 추연규 | 이명석 | 송호준 | 이상운 |
| :-------------------------------: | :--------------------------------------------------: | :--------------: | :-----------: | :----------------: |
| 게시물 상세 조회 <br> 게시물 공유 | 게시물 생성 <br> 게시물 목록 조회 <br> 게시물 좋아요 | 게시물 통계 조회 | jwt 토큰 인증 | 유저 비즈니스 로직 |

<br>

## 🛠️ Document 구조

### 1️⃣ 게시글(Article)
### 1️⃣ 게시물(Article)


| 필드 | 속성 | 설명 | 예시 값 |
| ----------- | --------------- | ----------------------------------------------------------------------------------------- | --------- |
| content_id | 문자열 | 이는 포스트가 속한 SNS에서 관리하는 고유 인식 값입니다. | |
| type | 문자열 (열거형) | 파일 객체의 유형입니다. 가능한 값은 "facebook", "twitter", "instagram", "threads" 입니다. | "twitter" |
| title | 문자열 | 포스트 제목입니다. | |
| content | 문자열 | 이는 포스트의 내용이며 이미지, 비디오 등을 제외한 텍스트만 포함됩니다. | |
| hashtags | 아무 값 | 여러 개의 해시태그가 있으므로 미래 검색을 고려하여 설계해 주십시오. | |
| view_count | 숫자 | 조회수입니다. | 100 |
| like_count | 숫자 | 좋아요 수입니다. | 10 |
| share_count | 숫자 | 공유 수입니다. | 0 |
| updated_at | 날짜 및 시간 | 포스트를 편집할 때 자동으로 기록됩니다. | |
| created_at | 날짜 및 시간 | 포스트를 생성할 때 자동으로 기록됩니다. | |
| contentId | string(UUID) | 이는 포스트가 속한 SNS에서 관리하는 고유 인식 값입니다. | |
| type | enum | 파일 객체의 유형입니다. 가능한 값은 "facebook", "twitter", "instagram", "threads" 입니다. | 'twitter' |
| title | string | 포스트 제목입니다. | 'hello, danishop!' |
| content | string | 이는 포스트의 내용이며 이미지, 비디오 등을 제외한 텍스트만 포함됩니다. | 'I visited the danishop' |
| hashtags | string[] | 여러 개의 해시태그가 있으므로 미래 검색을 고려하여 설계해 주십시오. | ['dani', 'danishop'] |
| viewCount | number | 조회수입니다. | 100 |
| likeCount | number | 좋아요 수입니다. | 10 |
| shareCount | number | 공유 수입니다. | 1 |
| updatedAt | Date | 포스트를 편집할 때 자동으로 기록됩니다. | |
| createdAt | Date | 포스트를 생성할 때 자동으로 기록됩니다. | |

<br>

Expand Down Expand Up @@ -160,55 +161,142 @@ project-root

#### 1. 게시물 목록 조회 : Feed에 나타나는 게시물 목록 조회 API

<<<<<<< HEAD
**Endpoint:** `GET /articles`
**Method:** `GET`
**Description:** Fetch a paginated list of articles.
**Query Parameters:** RequestPaginatedQueryDto (pagination parameters)
=======
**Endpoint:** `GET /articles`
**Method:** `GET`
**Description:** Fetch a paginated list of articles.
**Query Parameters:** RequestPaginatedQueryDto (pagination parameters)

- `page`: 게시물의 현재 페이지
- `perPage`: 게시물의 페이지 항목 수
- `type`: SNS type (facebook, twiiter, threads, instagram)
- `hashtag`: 게시물이 가진 해쉬태그 중 하나

>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0
**Response:** `Page<GetArticleResDto>`
<br>

#### 2. 게시물 생성 :
#### 2. 게시물 상세 조회 : 게시물 목록 클릭 시, 사용되는 게시물 상세 내용 조회 API

<<<<<<< HEAD
**Endpoint:** `POST /articles`
**Method:** `POST`
**Description:** Create a new article.
**Request Body:** `CreateArticleDto`
**Response:** The content ID of the created article as a string.
=======
**Endpoint:** `GET /articles/:contentId`
>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0
<br>
**Method:** `GET`

#### 3. 게시물 상세 조회 : 게시물 목록 클릭 시, 사용되는 게시물 상세 내용 조회 API
**Description:** 유저가 게시물을 클릭 시 view_count 가 1 증가하고 게시물의 모든 필드 값을 확인하는데 사용되는 API

<<<<<<< HEAD
**Endpoint:** `GET /articles/likes/:contentId`
**Method:** `GET`
**Description:** Send a like to an article by its content ID.
**Path Parameters:**

- `contentId`: The content ID of the article.
**Response:** The content ID of the liked article as a string.
=======
**Path Parameters:**

- `contentId`: 게시물의 Content ID.

**Response:**

- response status 200, `GetArticleDetailResDto`

| field | 속성 | 설명 | 예시 |
| ---------- | -------- | ------------------------ | ----------------------------------- |
| contentId | string | 해당 게시물 Content ID | |
| title | string | 해당 게시물 제목 | 'NestJS Repository Pattern' |
| type | string | 해당 게시물 SNS 출처 | 'twitter' |
| content | string | 해당 게시물 내용 | 'Separation of dependencies is ...' |
| hashtags | string[] | 해당 게시물의 해시태그들 | ['repository', 'pattern'] |
| viewCount | number | 해당 게시물의 조회수 | 300 |
| likeCount | number | 해당 게시물의 좋아요수 | 30 |
| shareCount | number | 해당 게시물의 공유수 | 10 |

- response status 404 (해당 게시물이 존재하지 않을시)
>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0
<br>

#### 4. 게시물 좋아요 생성 : 게시물 목록 또는 상세에서 게시물 좋아요 클릭 시 사용되는 API
#### 3. 게시물 좋아요 생성 : 게시물 목록 또는 상세에서 게시물 좋아요 클릭 시 사용되는 API

**Endpoint:** `GET /articles/:contentId`
**Method:** `GET`
**Description:** Fetch a specific article using its content ID.
**Path Parameters:**

<<<<<<< HEAD
- `contentId`: The content ID of the article.
**Response:** `GetArticleDetailResDto`
=======
- `contentId`: The content ID of the article.
**Response:** `contentId`
>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0
<br>

#### 5. 게시물 공유 생성 : 게시물 목록 또는 상세에서 공유하기 클릭 시 사용되는 APIGet Paginated Article List
#### 4. 게시물 공유 생성 : 게시물 목록 또는 상세에서 공유하기 클릭 시 사용되는 API

**Endpoint:** `POST /articles/share`
<<<<<<< HEAD
**Method:** `POST`
**Description:** Send a share notification for an article by its content ID.
**Request Body:** `CreateArticleShareDto`
**Response:** None (void).
=======

**Method:** `POST`

**Description:** 각 게시물이 관리되는 SNS 별 특정된 API 를 호출하고 성공할 시 (response status 200) 해당 게시물의 share_count가 1 증가

**Request Body:** `CreateArticleShareDto`

| field | 속성 | 설명 | 예시 |
| --------- | ------ | ---------------------- | ---- |
| contentId | string | 해당 게시물 Content ID | |

**Response:**

- response status 200, None(void)
- response status 404 (해당 게시물이 존재하지 않을시)

<br>

#### 4. 게시물 생성 : 게시물 생성시 사용되는 API

**Endpoint:** `POST /articles`

**Method:** `POST`

**Description:** Request Body에 게시물의 title, type, content, hashtags를 입력하고 요청을 보내면 랜덤으로 조회수, 좋아요수, 공유수를 생성

**Request Body:** `CreateArticleDto`

| field | 속성 | 설명 | 예시 |
| -------- | -------- | ------------------------ | -------------------- |
| title | string | 게시물 제목 | '오늘 TODO list' |
| type | string | 게시물 SNS 종류 | 'facebook' |
| content | string | 게시물 내용 | '- 오늘 운동' |
| hashtags | string[] | 게시물 여러개의 해시태그 | ['#오운완', '#TODO'] |

**Response:** contentId

- response status 200, None(void)
- response status 400 (SNS 타입 잘못 입력 시)
>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0
---

Expand Down Expand Up @@ -311,6 +399,7 @@ project-root

- 개선할 점 : 처음 팀이 구성되고 바로 프로젝트에 들어가다보니 기능 구현을 위한 역할 분담은 되었지만 그외에 많은 것들이 팀장님 어께 위로 얹혀진 것 같아 미안했다 ㅠ. 이제 한 번 프로젝트를 해보았으니 프로젝트를 진행할 때 어떤 역할들이 필요하고 그것들을 각자 잘 분담하면 그 짐을 같이 나눠 짊어질 수 있을 것 같다. 그리고 개인적으로 요구사항 분석을 처음에 제대로 하지 못해, 많은 변경이 생겼다. 처음에는 통계 데이터를 저장할 도큐먼트가 필요 없을 것으로 생각했으나 실제 기능 구현을 위해 요구사항 분석을 해보니 필요했었다. 앞으로 요구사항을 처음에 확실히 분석하고 정리하면 이런 일은 없을 것 같다.

<<<<<<< HEAD
### 상운

- NestJS의 적응 과정 : 처음에는 NestJS의 구조화된 접근 방식이 Express의 자유도에 비해 불편하게 느껴졌다.단순한 개발을 넘어서 구조 자체를 이해하는 데에도 시간이 소요되었다. 그러나 프로젝트 구조에 익숙해지며 NestJS의 장점을 점차 느끼게 되었다. 특히 유지 보수의 관점에서 보면, 지나치게 높은 자유도는 오히려 관리의 어려움을 초래할 수 있다는 것을 깨달았다. 이 과정에서 Guard와 같은 NestJS Enhancers의 중요성에 대해 학습하게 되었다.
Expand All @@ -322,3 +411,13 @@ project-root
- 유저와 인증을 분리해서 개발해본 경험 : 인증은 이번 프로젝트 말고도 다른 프로젝트에서 매번 맡아 진행했고, Oauth2.0, Refresh Token, 세션인증방식 여러가지 해보았다고 자신했던 부분이지만, 정작 이번 프로젝트에서는 소통의 문제로 서로 어려운 길을 가게 되었다. NestJS의 Guard와 Strategy 개념은 나름, 익숙하게 잘 개발했던 것 같다. 다만, 협업하는 개발자와 소통의 부재로, 다른 JWT 전략을 구사하는 등. 이번 기회로, 코드를 개발을 잘하는 것보다 소통하며 개발해야겠다는 생각이 들게 되었던 경험이다.

- MongoDB의 정규화 / 비정규화 모델 : NoSQL로 대부분의 프로젝트를 개발했던 경험이 있지만, 팀원들과 소통할 때 비정규화, 정규화를 이 개념을 어떻게 설명해야할 지 몰라서 찾아보았다. 이 모델링의 개념을 실제로 프로젝트에서 어떤 개념인지 자세하게 모르고 모델링을 했었는데, 이번 기회에 짚고 넘어갈 수 있었다.
=======
### 연규

- 좋았던 점 : MongoDB를 사용해서 쿼리하고 페이지네이션을 해볼 수 있다는 점에서 좋았고,
하나의 API에서 두명이 작업해볼 수 있어서 새로운 경험이였다.

- 알게된 점 : MongoDB에서 쿼리할 때 방법과 nest에서 pagination, query 파라미터 사용 방법에 대해 다시 알게 되었다. git 브랜치로 병합할 때 conflict를 해결하는 방법도 알게 되었다.

- 개선할 점 : 논의하는데 시간이 많이 들어가서 기능을 개발하는데 들어가는 물리적인 시간이 부족했던 것 같다. 효율적인 회의 프로세스로 개선해야할거같고 대화보다는 글이나 그림 정리해서 공유하는 것이 더 빠르게 서로를 이해할 수 있겠다는 생각이 들었다. 희의 전에 그림으로 요구사항을 분석하고 논의하는 것도 중요할 거 같다.
>>>>>>> 43d2270dc7482444d72ee2e6a1842233a9de4ef0

0 comments on commit 04b07e3

Please sign in to comment.