Skip to content

Latest commit

 

History

History
277 lines (225 loc) · 14.8 KB

README.md

File metadata and controls

277 lines (225 loc) · 14.8 KB

소셜 미디어 통합 Feed 서비스

Table of Contents


개요

유저 계정의 해시태그를 기반으로 여러 SNS에 게시된 게시물 중 유저의 해시태그가 포함된 게시물들을 하나의 서비스에서 확인할 수 있는 통합 Feed 서비스의 API 서버입니다. 유저는 하나의 채널에서 유저(#dani), 또는 브랜드(#danish op) 의 SNS 노출 게시물 및 통계를 확인할 수 있습니다.

  • 유저는 계정(추후 해시태그로 관리), 비밀번호, 이메일로 가입요청을 진행합니다.
  • 가입 요청 시, 이메일로 발송된 코드를 입력하여 가입승인을 받고 서비스 이용이 가능합니다.
  • 서비스 로그인 후, 통합 Feed 메뉴를 통해 서비스를 이용할 수 있습니다.
  • 통합 Feed 에선 인스타그램, 스레드, 페이스북, 트위터 에서 유저의 계정이 태그된 글들을 확인합니다.
  • 또는, 특정 해시태그(1건)를 입력하여, 해당 해시태그가 포함된 게시물들을 확인합니다.
  • 유저는 본인 계정명 또는 특정 해시태그 일자별, 시간별 게시물 갯수 통계를 확인할 수 있습니다.

기술 스택

Stack Version
Runtime v20.x.x
Language v5.1.x
Framework v10.x.x
Database MySQL v8.0.x, TypeORM v0.3.x
Environment npm v10.2.x
etc N/A

Installation

npm install

Running the app

# development
npm run start

# watch mode
npm run start:dev

# production mode
npm run start:prod

API 명세서

도메인 기능명 HTTP Method URL 인증 담당자
User 회원 가입 POST /api/uses/sign-up X 김도연
User 로그인 POST /api/users/sign-in X 김도연
User 사용자 가입 승인 PATCH /api/users/verify-email O 김도연
Posting 게시물 목록 조회 GET /api/postings O 오다은
Posting 게시물 상세 조회 GET /api/postings/{id} O 오다은
Posting 게시물 좋아요 PATCH /api/postings/{id}/like O 주소미
Posting 게시물 공유하기 PATCH /api/postings/{id}/share O 주소미
Statistics 해시태그별 게시물 통계 GET /api/statistics O 김지수

API 상세 문서

API에 대한 자세한 정보와 명세는 아래 링크를 통해 확인할 수 있습니다. 각 엔드포인트에 대한 설명과 예시가 포함되어 있습니다.

Notion

프로젝트 관리

프로젝트 팀 노션 링크

Notion

팀 규칙 &코드 컨벤션

코드의 일관성을 유지하기 위해 특정 코드 컨벤션과 팀 규칙을 따르고 있습니다. 자세한 내용은 아래 노션 링크를 통해 확인할 수 있습니다.

Notion

커밋 메시지 컨벤션

# (gitmoji) <타입> : <제목><이슈번호>

##### 제목은 이슈 번호와 함께 최대 50 글자까지 한 줄로 입력 ############## -> |

# 본문은 위에 작성
######## 본문은 한 줄에 최대 72 글자까지만 입력 ########################### -> |

# --- COMMIT END ---
# <타입> 리스트
#   ✨(:sparkles:) feat    : 기능 (새로운 기능)
#   🐛(:bug:) fix     : 버그 (버그 수정)
#   ♻(:recycle:) refactor : 리팩토링
#   💄(:lipstick:) style   : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
#   📝(:memo:) docs    : 문서 (문서 추가, 수정, 삭제)
#   ✅(:white_check_mark:) test    : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
#   🔨(:hammer:) chore   : 기타 변경사항 (빌드 스크립트 수정 등)
# ------------------
#     제목은 명령문으로
#     제목 끝에 마침표(.) 금지
#     제목과 본문을 한 줄 띄워 분리하기
#     본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
#     본문은 한 줄을 작성하고 . 마침표를 찍어서 분리한다.
# ------------------

브랜치 전략

브랜치 유형 브랜치 이름 설명 사용법
Main Branch main 제품으로 출시될 수 있는 브랜치 사용자에게 배포 가능한 상태만을 관리하며, 배포(release) 이력을 관리합니다.
Develop Branch dev 다음 출시 버전을 개발하는 브랜치 모든 기능이 추가되고 버그가 수정된 후, dev 브랜치를 main으로 병합합니다.
Feature Branch feature/* 새로운 기능 개발 및 버그 수정이 필요할 때마다 dev 브랜치로부터 분기됩니다. 개발이 완료되면 dev 브랜치로 merge 하여 다른 사람들과 공유합니다.

예시

  • Feature 브랜치 명명 규칙: feature/기능요약 (예: feature/login-api)

구현과정(설계 및 의도)

TIL 및 회고


디렉토리 구조

프로젝트 디렉토리 구조
├── README.md
├── database
│   ├── data-source.ts
│   ├── factory
│   │   ├── base-model.factory.ts
│   │   ├── hashtag.factory.ts
│   │   ├── posting.factory.ts
│   │   └── user.factory.ts
│   └── seeds
│       └── seeder.ts
├── dist
│   ├── app.controller.d.ts
│   ├── app.controller.js
│   ├── app.controller.js.map
│   ├── app.module.d.ts
│   ├── app.module.js
│   ├── app.module.js.map
│   ├── app.service.d.ts
│   ├── app.service.js
│   ├── app.service.js.map
│   ├── entities
│   │   ├── base-model.entity.d.ts
│   │   ├── base-model.entity.js
│   │   ├── base-model.entity.js.map
│   │   ├── hashtag.entity.d.ts
│   │   ├── hashtag.entity.js
│   │   ├── hashtag.entity.js.map
│   │   ├── posting-hashtag.entity.d.ts
│   │   ├── posting-hashtag.entity.js
│   │   ├── posting-hashtag.entity.js.map
│   │   ├── posting.entity.d.ts
│   │   ├── posting.entity.js
│   │   ├── posting.entity.js.map
│   │   ├── user.entity.d.ts
│   │   ├── user.entity.js
│   │   └── user.entity.js.map
│   ├── main.d.ts
│   ├── main.js
│   ├── main.js.map
│   ├── postings
│   │   ├── postings.controller.d.ts
│   │   ├── postings.controller.js
│   │   ├── postings.controller.js.map
│   │   ├── postings.module.d.ts
│   │   ├── postings.module.js
│   │   ├── postings.module.js.map
│   │   ├── postings.service.d.ts
│   │   ├── postings.service.js
│   │   └── postings.service.js.map
│   └── tsconfig.build.tsbuildinfo
├── nest-cli.json
├── package-lock.json
├── package.json
├── src
│   ├── app.module.ts
│   ├── auth
│   │   ├── auth.constants.ts
│   │   ├── auth.module.ts
│   │   ├── auth.service.spec.ts
│   │   ├── auth.service.ts
│   │   ├── jwt-auth.guard.ts
│   │   ├── jwt.strategy.ts
│   │   └── local.strategy.ts
│   ├── decorator
│   │   └── is-public.decorator.ts
│   ├── entities
│   │   ├── base-model.entity.ts
│   │   ├── hashtag.entity.ts
│   │   ├── posting-hashtag.entity.ts
│   │   ├── posting.entity.ts
│   │   └── user.entity.ts
│   ├── main.ts
│   ├── postings
│   │   ├── postings.controller.spec.ts
│   │   ├── postings.controller.ts
│   │   ├── postings.module.ts
│   │   ├── postings.service.spec.ts
│   │   └── postings.service.ts
│   ├── statistics
│   │   ├── dto
│   │   │   ├── statistic-query.dto.ts
│   │   │   └── statistic-response.dto.ts
│   │   ├── statistics.controller.spec.ts
│   │   ├── statistics.controller.ts
│   │   ├── statistics.module.ts
│   │   ├── statistics.service.spec.ts
│   │   ├── statistics.service.ts
│   │   └── types
│   │       └── statistics.constants.ts
│   └── users
│       ├── dto
│       │   ├── create-user.dto.ts
│       │   ├── user-request.dto.ts
│       │   └── user-response.dto.ts
│       ├── users.constants.ts
│       ├── users.controller.spec.ts
│       ├── users.controller.ts
│       ├── users.module.ts
│       ├── users.service.spec.ts
│       └── users.service.ts
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json

18 directories, 88 files


Author

김도연
@kimdoyeonn
김지수
@jis-kim
오다은
@ooheunda
주소미
@joosomi
회원 가입
로그인
사용자 가입 승인
해시태그별 게시물 통계 게시물 목록 조회
게시물 상세 조회
게시물 좋아요
게시물 공유하기