프로젝트 개요
시네마와 쇼츠 두 축으로 AI 제작 영상을 보는 시청자용 웹을 설계합니다. 이어보기와 오늘의 편성이 놓인 홈, AI 제작방식 필터 탐색, 작품 상세와 플레이어, 세로 쇼츠 피드, 구독·보관함을 한 흐름으로 묶은 동작 프로토타입입니다. 재생 권한 확인과 DRM 라이선스는 연동 인터페이스와 권한 구조 수준으로 제안하고, 앱은 같은 API를 쓰는 React Native 확장 로드맵으로 제안합니다.
작업 범위
- 홈 — 이어보기와 오늘의 편성: 로그인한 시청자가 첫 화면에서 지금 이어보기 중인 회차와 오늘의 편성 섹션, 새 회차 알림을 바로 봅니다. 시네마와 쇼츠 두 축이 같은 화면에 놓이고 포스터 사진이 중심이 됩니다
- 탐색 — AI 제작방식 필터: 장르·분위기 분류와 AI 제작방식·사용 도구 칩을 조합해 작품 목록을 거릅니다. 작품을 누르면 소개·회차·창작자 정보·공개 가능한 AI 제작정보가 담긴 상세 대화상자가 열립니다
- 쇼츠 — 세로 연속 재생 피드: 세로 화면에서 다음 영상으로 넘어가며 좋아요·공유·창작자 팔로우를 누릅니다. 다음 영상을 미리 불러와 끊김 없이 이어지는 흐름을 보여 줍니다
- 내 보관함 — 이어보기·찜·구독: 이어보기·찜·재생목록·시청 이력과 구독 상태를 탭으로 모아 봅니다. 구독 해지와 환불 요청, 무료 이용자의 광고 안내까지 한 화면에서 확인합니다
주요 업무
- 홈 — 이어보기와 오늘의 편성 화면: 시청 이력 API의 재생 위치와 운영자 편성 데이터를 한 화면으로 조합해 이어보기 줄과 편성 섹션을 그립니다
- 탐색 — AI 제작방식 필터 화면: 코드 사전의 표준 코드를 필터 값으로 쓰고, 선택한 칩 조합을 URL 상태와 동기화합니다
- 쇼츠 — 세로 연속 재생 피드 화면: 현재·다음·이전 영상만 메모리에 두는 윈도우 구조와 재생 이벤트 수집을 함께 설계합니다
- 내 보관함 — 이어보기·찜·구독 화면: 구독 상태와 재생 권한 결과를 한 모델로 묶어, 같은 규칙을 플레이어와 보관함이 함께 씁니다




프로젝트 핵심 과제
DRM 라이선스와 앱 인앱 구독은 실기기와 스토어 계정 검증이 필요해
연동 인터페이스와 권한 구조를 먼저 고정하고 단계별로 검증합니다
쇼츠 연속 재생에서 다음 영상 프리로드와 메모리 사용의 균형을 맞추는 윈도우 크기 결정이 필요합니다
연령 등급과 시청 제한 작품이 목록·검색·상세 어디에서도 새지 않
노출 통제를 서버 한 곳에서 처리해야 합니다
이어보기 위치 저장 요청이 잦아 서버 부담이 커질 수 있어
일정 간격 묶음 전송과 마지막 위치 우선 규칙 설계가 필요합니다
핵심 기능 상세
홈 — 이어보기와 오늘의 편성
로그인한 시청자가 첫 화면에서 지금 이어보기 중인 회차와 오늘의 편성 섹션, 새 회차 알림을 바로 봅니다. 시네마와 쇼츠 두 축이 같은 화면에 놓이고 포스터 사진이 중심이 됩니다.
- Express 홈 조합 엔드포인트에서 재생 위치·편성 섹션·새 회차 알림을 한 번에 응답
- Prisma 관계 조회로 시청 이력과 작품·회차를 묶고 연령 등급 조건을 서버에서 필터
- 편성 섹션 순서를 데이터로 받아 화면 구성이 코드 수정 없이 바뀌는 구조 설계
운영자가 정한 편성 순서와 시청자의 이어보기 위치를 한 응답으로 조합해, 첫 화면이 사람마다 다른 실제 장면이 되도록 설계합니다.


탐색 — AI 제작방식 필터
장르·분위기 분류와 AI 제작방식·사용 도구 칩을 조합해 작품 목록을 거릅니다. 작품을 누르면 소개·회차·창작자 정보·공개 가능한 AI 제작정보가 담긴 상세 대화상자가 열립니다.
- 표준 코드 기반 다중 선택 칩과 URL 쿼리 동기화로 필터 상태 공유 구조 설계
- PostgreSQL 조합 조건 쿼리와 키워드 검색을 하나의 목록 API로 통합
- 시리즈·회차 목록과 창작자 채널 이동을 작품 상세 한 화면에 묶는 컴포지션 설계
장르·키워드·AI 제작정보를 조합하는 검색을 표준 코드 필터로 단순화해, 검색엔진 도입 여부를 나중에 결정할 수 있는 구조로 설계합니다.


쇼츠 — 세로 연속 재생 피드
세로 화면에서 다음 영상으로 넘어가며 좋아요·공유·창작자 팔로우를 누릅니다. 다음 영상을 미리 불러와 끊김 없이 이어지는 흐름을 보여 줍니다.
- Intersection Observer로 화면에 들어온 쇼츠만 재생하고 나머지는 일시정지하는 구조
- 다음 영상 1개를 미리 불러오는 프리로드 큐와 hls.js 적응형 화질 전환 설계
- 재생·완주·이탈 이벤트를 배치로 묶어 전송하는 이벤트 수집 모듈 구현
화면에 보이는 영상만 재생하는 윈도우 구조와 이벤트 배치 전송을 결합해, 연속 재생 흐름과 시청 데이터 수집을 같은 모듈에서 처리하도록 설계합니다.


내 보관함 — 이어보기·찜·구독
이어보기·찜·재생목록·시청 이력과 구독 상태를 탭으로 모아 봅니다. 구독 해지와 환불 요청, 무료 이용자의 광고 안내까지 한 화면에서 확인합니다.
- 재생 요청 시 구독·무료·시청 제한을 확인하고 만료 시각이 있는 임시 재생 주소를 발급하는 API 설계
- 정기결제 PG 연동 인터페이스와 구독 상태 머신(시작·갱신·해지·만료·환불) 설계
- DRM 라이선스 발급은 연동 인터페이스와 권한 구조 수준으로 추상화해 서버 계약만 정의
구독 상태 머신과 재생 권한 판정을 한 모듈에 두어, 웹 결제와 후속 앱 인앱 구독이 같은 권한 규칙을 공유하는 구조로 설계합니다.


프로젝트 진행 단계
시청 흐름·권한 규칙 및 데이터 모델링 · 2026.10
홈·탐색·플레이어·보관함 흐름, 재생 권한 규칙, 작품·회차·AI 제작정보 코드 테이블과 시청 이력 스키마 정의
플레이어·쇼츠 피드 구현 · 2026.10
hls.js 적응형 화질 플레이어, 이어보기 위치 저장, 세로 쇼츠 프리로드 큐와 시청 이벤트 수집 구현
구독·보관함·댓글 구현 · 2026.10
정기결제 연동 인터페이스, 구독 상태 머신, 찜·재생목록·댓글·신고 기능 구현
앱 확장 로드맵 정리 · 2026.10
같은 API를 쓰는 React Native 앱 확장 구조와 인앱 구독·푸시 연동 지점 문서화
개발 결과
기술적 주안점
- 운영자가 정한 편성 순서와 시청자의 이어보기 위치를 한 응답으로 조합해, 첫 화면이 사람마다 다른 실제 장면이 되도록 설계합니다
- 장르·키워드·AI 제작정보를 조합하는 검색을 표준 코드 필터로 단순화해, 검색엔진 도입 여부를 나중에 결정할 수 있는 구조로 설계합니다
- 화면에 보이는 영상만 재생하는 윈도우 구조와 이벤트 배치 전송을 결합해, 연속 재생 흐름과 시청 데이터 수집을 같은 모듈에서 처리하도록 설계합니다