ehgks0000 / share_bookmark

0 stars 0 forks source link

초기 셋팅 #1

Open ehgks0000 opened 11 months ago

ehgks0000 commented 11 months ago

초기 셋팅

스택

  1. NodeJS v18
  2. NestJS with Nestia
  3. Prisma v5
  4. Mysql & Milisearch ( Milisearch만 사용할까..? )
  5. 알라딘 API ( 추후 교체 될수도 있음 )

아키텍처

유저 플로우

  1. 책 조회 -> 앱 -> 백 -> ES에서 Book 조회, 없으면 알라딘 API에서 책 조회 후 Mysql에 Book 저장. -> 책 이름 반환.
  2. 북마크 생성
  3. 북마크 수정
  4. 북마크 삭제
  5. 베스트 셀러 책 조회 -> 앱 -> 백 -> BestSeller 조회 ( Batch Job으로 1일 1회 알라딘 API로 best seller 조회후 저장.)

sql Schema

  1. User
  2. Bookmark
  3. Like
  4. Book
  5. Page
  6. BestSeller

Book 테이블은 ES에 동기화. (log stash를 쓸까 cdc를 할까 미정) meilisync 사용해서 검색엔진에 동기화. https://github.com/long2ice/meilisync

Milisearch Schema

  1. Book
ehgks0000 commented 11 months ago

기획을 기반으로 한 화면단 API 설계

Share Bookmark
ehgks0000 commented 11 months ago

공유 북마크 앱 API 정리

중복 제외 총 18개

1. 메인 페이지

1.1 메인화면
    1.1.1 오늘의 베스트 북마크 조회
        * GET /api/v1/bookmark
    1.1.2 이번달의 북마크 Top 10 조회
        * GET /api/v1/books/best
    1.1.3 책의 북마크 엿보기 ( 1.1.2 페이지 클릭 시 이동)
        * GET /api/v1/bookmark/:id
    1.1.4 내가 최근 읽은 책
        * GET /api/v1/books/recent
    1.1.5 내가 읽은 책의 내 북마크(1.1.4 페이지 클릭 시 이동)
        * GET /api/v1/bookmark/me
    1.1.6 책의 다른 북마크 엿보기
        * GET /api/v1/book/:id/bookmark/public

2. 마이페이지

2.1 마이페이지
    2.1.1 내 정보 조회
        * GET /api/v1/user/me
    2.1.2 반년치(반기) 읽은 책 수 조회
        * GET /api/v1/books/count?year=2023&half=0
    2.1.3 선택한 달의 책 조회
        * GET /api/v1/books/:month
    2.1.4 반년치(반기) 내가 생성한 북마크 수 조회 (2.1.2에 토글버튼 )
        * GET api/v1/bookmark/count?year=2023&half=0
    2.1.5 선택한 달의 북마크 조회
        * GET /api/v1/bookmark/:month
2.2 북마크 생성 페이지
    2.2.1 책 제목 조회
        * GET /api/v1/search?title=책이름
    2.2.2 북마크 생성 페이지 (2.2.1 책 클릭 시)
        * GET /api/v1/books/:id
    2.2.3 북마크 생성
        * POST /api/v1/bookmark

3. 북메뉴 페이지

3.1 도서 검색 페이지
    3.1.1 도서 검색 (2.2.1과 동일)
    3.1.2 내가 좋아하는 작가 책 조회
        * GET /api/v1/books/favoriteAuthor
    3.1.3 이달의 베스트 셀러 (3.1.2에서 동일한 작가의 읽은 책 수가 모두 같거나 1권씩일 경우?)
        * GET /api/v1/books/bestSeller
    3.1.4 책의 남의 북마크 조회 (1.1.3과 동일?)
        * GET /api/v1/book/:id/bookmark/public

4. 그 외

4.1 북마크 좋아요 및 취소
    * POST /api/v1/bookmark/:id/like
    * DELETE /api/v1/bookmark/:id/like
        4.2 로그인 및 회원가입
    4.2.1 카카오 
    * GET /api/v1/auth/login/kakao