Skip to content

INgandle/social-feed-hub

Repository files navigation

소셜 미디어 통합 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
회원 가입
로그인
사용자 가입 승인
해시태그별 게시물 통계 게시물 목록 조회
게시물 상세 조회
게시물 좋아요
게시물 공유하기

About

소셜 미디어 통합 Feed 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published