YouTube 구간 기반 반복 학습 앱 (React + Vite).
- 유튜브 영상 구간(시작/끝) 반복 재생 학습
- 사용자 제공 자막 붙여넣기/파일 업로드(SRT, VTT, TXT)
- 자막 줄 클릭 +
Shift+클릭범위 선택 - 선택 문장 저장 후 듣고 따라 말하기(Shadowing) 이동
- SRS 복습(어려움/보통/쉬움) + Anki 스타일 재등장 로직
- 외부 AI 질문 바(ChatGPT/Gemini용 프롬프트 복사/열기)
- React 18 + TypeScript + Vite
- React Router
- SSG 프리렌더링 (SSR 엔트리 + 하이드레이션)
- Tailwind CSS + shadcn/ui
- IndexedDB 우선 저장 + LocalStorage fallback
- YouTube IFrame Player API
- Vercel 프로덕션:
https://orbit-or.vercel.app - 배포 프로젝트:
orbit(orbit.vercel.app점유로 대체 alias 사용)
청취 -> 구간 선택 -> 문장 선택/저장 -> AI 질문 -> Shadowing -> SRS 복습
- YouTube 자막 자동 추출(네트워크/DOM 파싱) 미사용
- 사용자 제공 텍스트만 처리
- 학습 데이터는 로컬 저장 중심
npm install
npm run dev- 기본 개발 서버:
http://localhost:8080
npm run test
npm run build
npm run previewnpm run build는 아래를 순차 실행합니다.build:client->build:ssr->prerender
src/main.tsx: 클라이언트 하이드레이션/CSR 진입점src/entry-server.tsx: SSG용 서버 렌더 엔트리scripts/prerender.mjs: 정적 라우트 HTML 생성 스크립트vercel.json: Vercel 빌드/출력/동적 라우트 rewrite 설정src/pages/Learn.tsx: 학습 화면src/pages/Shadowing.tsx: 녹음/쉐도잉 화면src/pages/Srs.tsx: 복습 화면src/components/learn/TranscriptPanel.tsx: 자막 파싱/선택 UIsrc/components/YouTubePlayer.tsx: 유튜브 플레이어 래퍼src/domain/srsScheduler.ts: SRS 스케줄 계산src/storage/: 저장소 계층