A modern video streaming platform built with Next.js, BullMQ, and DrizzleORM.
- Video upload and processing
- Adaptive streaming with video.js
- Queue-based video processing
- Modern UI with Tailwind CSS and Mantine
- SQLite database with DrizzleORM
- Node.js (Latest LTS version)
- PNPM package manager
- Redis server (for BullMQ)
- FFmpeg (for video processing)
-
Clone the repository
git clone https://github.com/Kamleshpaul/streaming.git cd streaming -
Install dependencies
pnpm install
-
Environment Setup Create a
.envfile in the root directory with the following variables:DATABASE_URL=file:streaming.db REDIS_HOST=localhost REDIS_PORT=6379
-
Database Setup
# Generate database migrations pnpm db:generate # Apply migrations pnpm db:migrate
-
Start Development Server
# This will start both Next.js and the queue processor pnpm devThe application will be available at
http://localhost:3000
pnpm dev- Start development server with queue processorpnpm build- Build the applicationpnpm start- Start production serverpnpm lint- Run ESLintpnpm queue:run- Run queue processor separatelypnpm db:generate- Generate database migrationspnpm db:migrate- Apply database migrationspnpm db:studio- Open Drizzle Studio for database management
/app- Next.js application routes and pages/components- Reusable React components/drizzle- Database schema and migrations/lib- Utility functions and shared code/public- Static assets/server- Server-side code and queue processors
- Frontend: Next.js, React, Tailwind CSS, Mantine UI
- Backend: Node.js, BullMQ
- Database: SQLite with DrizzleORM
- Video Processing: FFmpeg
- Queue System: BullMQ with Redis
The project uses TypeScript for type safety and follows modern React patterns. The video processing is handled through a queue system to ensure reliable processing of uploaded videos.
MIT
