Build your own learning path. StudyTube turns scattered YouTube videos into structured, trackable courses.
- Course Builder — Organize YouTube videos into courses and modules with drag-and-drop reordering
- YouTube Search — Search, import by URL, or import entire playlists directly from the app
- AI Outline Generator — Describe a topic and get a structured course outline with curated videos
- Learning Mode — Watch videos with integrated notes, progress tracking, and auto-complete
- Progress Tracking — Course and module completion percentages derived from lesson state
- Node.js 24+ (LTS)
- pnpm (recommended) or npm
- A YouTube Data API v3 key (get one here)
git clone https://github.com/graciousnm/StudyTube.git
cd StudyTube
pnpm installCopy the example env file and fill in your keys:
cp .env.example .envDATABASE_URL=./data/learning.sqlite
YOUTUBE_API_KEY=your_youtube_api_key_here
OPENROUTER_API_KEY=your_openrouter_api_key_here # optional, for AI outlines
pnpm devOpen http://localhost:3000.
Run pending migrations before starting the app:
pnpm db:migrateTo seed sample data:
pnpm seedIn Docker, migrations run automatically on container start.
docker build -t studytube .
docker run --rm -p 3000:3000 -v studytube-data:/data studytubeThe container applies pending migrations on first start and keeps the SQLite database on the /data volume.
- Framework: Next.js 16 (App Router, Turbopack)
- Database: SQLite via Drizzle ORM
- UI: Tailwind CSS v4
- Testing: Vitest + Playwright
- AI: OpenRouter (Llama 3.3 70B) — optional



