Skip to content

laetipark/feed-moa

 
 

Repository files navigation

save

❤️ 피드모아(FeedMoa)

#️⃣ 프로젝트 소개

해시태그를 기반으로 인스타그램, 페이스북, 트위터, 스레드 등 복수의 SNS에 게시된 게시물을 하나의 서비스에서 확인할 수 있는 통합 Feed 서비스입니다.


🛠️ 기술 스택

     
   


🏷️ 목차

  1. ⚙️ 환경 설정 및 실행
  2. 💿 데이터베이스 모델링
  3. 🌏 API 명세
  4. 📑 구현 내용
  5. 👋 팀원 소개

⚙️ 환경 설정 및 실행

데이터베이스 스키마를 생성합니다.

CREATE DATABASE `wanted`
    DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

서버 및 데이터베이스 연결을 위한 환경 변수를 설정합니다.

PORT=
DB_PORT=
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=
JWT_SECRET=
GATEWAY_DOMAIN=

데이터베이스 스키마 생성 후, 스크립트 파일 실행으로 초기 설정합니다.

> sh start.sh # 리눅스 스크립트 파일 실행
> ./start.bat # 윈도우 스크립트 파일 실행

💿 데이터베이스 모델링

  • 게시물 ↔️ 해시태그 1:N
    • 사용자는 게시물을 소유하지 않는다.
    • 게시물은 0개 이상의 해시태그를 가진다.
    • 하나의 게시물이 여러 개의 해시태그를 등록할 수 있습니다. ERD

🌏 API 명세

GitHub Wiki로 이동! 🏃🏻‍💨


📑 구현 내용

사용자

사용자 회원 가입
  • 사용자 정보에 대한 입력값의 유효성을 검사한다.
    • 계정명 중복 여부 확인
    • 이메일 구조를 가지고 있는지 확인
    • 비밀번호
      • 10자 이상 문자열
      • 숫자, 문자, 특수문자 중 두 개 이상 사용
      • 연속된 문자 3번 이상 사용 금지
  • 생성된 사용자에 대한 인증 코드를 DB에 저장한다.
사용자 가입승인
  • 회원가입 후 이메일에서 발급받은 인증코드로 가입 승인한다.
    • 이메일 발송 과정은 생략
사용자 로그인
  • 가입 승인된 사용자로그인 할 수 있다.
  • 계정명비밀번호로 로그인한다.
  • 로그인 후 모든 API 요청에 대해 JWT 유효성을 검증한다.

게시물

게시물 목록 조회
  • 해시태그게시물 목록조회한다.
  • 정렬, 검색, 페이지네이션, SNS별 필터링이 적용된다.
게시물 상세 조회
  • 특정 게시물에 대한 모든 필드를 조회한다.
  • 요청 성공 시 횟수 제한 없이 조회수가 +1 증가한다.
게시물 좋아요
  • 요청 성공 시 횟수 제한 없이 좋아요 횟수가 +1 증가한다.
  • 게시물의 SNS 종류에 따라 좋아요 기능에 대한 외부 API(가상의 URL)를 호출한다.
Type Method Endpoint
facebook POST https://www.facebook.com/likes/<content_id>
twitter POST https://www.twitter.com/likes/<content_id>
instagram POST https://www.instagram.com/likes/<content_id>
threads POST https://www.threads.net/likes/<content_id>

게시물 공유하기

  • 요청 성공 시 횟수 제한 없이 공유 횟수가 +1 증가한다.
  • 게시물의 SNS 종류에 따라 공유 기능에 대한 외부 API(가상의 URL)를 호출한다.
Type Method Endpoint
POST facebook https://www.facebook.com/share/<content_id>
POST twitter https://www.twitter.com/share/<content_id>
POST instagram https://www.instagram.com/share/<content_id>
POST threads https://www.threads.net/share/<content_id>

게시물 통계

  • 사용자의 계정명 또는 특정 해시태그별, 일자별, 시간별통계조회한다.
  • 통계 항목 : 게시물 개수, 조회수, 좋아요 개수, 공유 횟수

👋 팀원 소개

강희수 박동훈 신은수 이드보라 이승원
@kangssu @laetipark @dawwson @sayapin1 @tomeee11

역할

  • 강희수
    • 스켈레톤 프로젝트 생성
      • 프로젝트 구조 생성 및 프레임워크 & 라이브러리 설치
    • 게시물 상세 조회
      • 하나의 게시물에 대한 상세 정보 및 관련 해시태그 조회
    • 게시물 공유하기
      • NestJS에서 제공하는 HttpModule, ConfigModule, CustomPipe 사용
        • HttpModule로 외부 호출 사용
        • CustomPipe로 Enum Type의 특정 값에 대한 유효성 검증
        • 로컬에서는 외부 호출을 통과시키기 위해 ConfigModule로 로컬/데브 환경변수 구분
  • 박동훈
    • Database Migration
      • 스크립트 파일을 통한 데이터베이스 TableSeed 데이터 생성
    • 사용자 회원가입 API 개발
      • 사용자 정보(아이디, 이메일, 비밀번호)에 대한 유효성 검사
      • 가입 승인 절차를 위한 인증코드 발급
  • 신은수
    • 가입 승인 API 개발
      • DB에 저장된 인증 코드 검사
    • 사용자 로그인 API 개발
      • Cookie + JWT 기반 사용자 인증
  • 이드보라
    • 통계 API 개발
      • 해시태그/일자/시간별 게시물 개수, 조회수, 좋아요 개수, 공유 횟수통계 결과 조회
  • 이승원
    • 게시물 목록 조회
      • 전체 게시물 목록 및 관련 해시태그 조회
    • 게시물 좋아요
      • NestJS에서 제공하는 HttpModule 사용

About

[ 피드모아 ] 소셜 미디어 통합 Feed 서비스 RESTful API 서버 ❤️

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.5%
  • Other 1.5%