A comprehensive, production-ready YouTube clip extraction and sequencing web application with professional video editing capabilities. Built with modern web technologies and featuring a complete video editor with timeline, real-time collaboration, and mobile-responsive design.
- YouTube URL Parser - Extract videos from YouTube URLs with timestamp support (HH:MM:SS)
- Interactive Timeline Editor - Professional video editing with drag-and-drop clip arrangement
- Frame-Accurate Scrubbing - Precise clip positioning and trimming with snap-to-grid
- Volume Normalization - Professional audio controls with real-time visualization
- Multi-format Export - MP4 and WebM output with customizable quality settings
- Persistent Clip Library - Advanced tagging, search, and filtering functionality
- Fully Responsive Design - Optimized for mobile, tablet, and desktop
- Professional Video Editor - Complete editing interface with timeline and preview
- Dark/Light Mode Toggle - Smooth theme transitions with system preference detection
- Keyboard Shortcuts - Power user controls (Space, arrows, F, M)
- Accessible Components - ARIA compliant with screen reader support
- Modern UI Components - Modal, dropdown, notification, file upload, and waveform systems
- Real-time Collaboration - WebSocket integration for team editing and live updates
- Progress Tracking - Live updates for video processing and export operations
- Advanced File Upload - Chunked uploads with drag-and-drop and validation
- Waveform Visualization - Canvas-based audio editing with interactive controls
- Authentication - Discord OAuth integration with JWT-based session management
- Redux State Management - Professional state management with TypeScript support
- Node.js 18+ and npm, OR
- Docker and Docker Compose
-
Clone or navigate to the project directory
cd your-project-directory -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
If you encounter Docker build issues, first run:
# Generate the required lockfile for Docker builds
./generate-lockfile.shThen proceed with Docker commands:
# Start development environment with hot reload
docker-compose --profile development up frontend-dev
# Access at http://localhost:3000If you encounter MIME type errors or module loading issues:
# Quick fix for development server issues
./fix-dev-server.sh
# Or manually:
# 1. Clear cache and reinstall
rm -rf node_modules package-lock.json .vite
npm install
# 2. Clear browser cache (Ctrl+Shift+R)
# 3. Restart development server
npm run dev# Start development environment with hot reload
docker-compose --profile development up frontend-dev
# Or use the convenience script
./docker-dev.sh# Start complete application stack (frontend + backend + database)
docker-compose up
# Or start only frontend
docker-compose up frontend# Create optimized production build
npm run build
# Preview production build
npm run preview# Build and run with Docker
docker-compose -f docker-compose.yml up --build
# Or build image manually
docker build -t youtube-sequencer .
docker run -p 80:80 youtube-sequencerCreate a .env file in the root directory:
# API Configuration
VITE_API_BASE_URL=http://localhost:3001/api
VITE_WS_BASE_URL=ws://localhost:3001
# Optional: OAuth Configuration
VITE_GOOGLE_CLIENT_ID=your_google_client_id
VITE_GITHUB_CLIENT_ID=your_github_client_id
# Database (for full stack)
DATABASE_URL=postgresql://user:password@localhost:5432/youtube_sequencer
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
DB_PASSWORD=change-this-password-in-productionsrc/
βββ api/ # Backend integration
β βββ client.ts # HTTP client with auth & retry
β βββ auth.ts # Authentication services
β βββ projects.ts # Project management API
β βββ websocket.ts # Real-time communication
β βββ index.ts # API exports
βββ components/ # React components
β βββ ui/ # Reusable UI components
β β βββ Modal.tsx
β β βββ Notification.tsx
β β βββ Waveform.tsx
β β βββ Dropdown.tsx
β β βββ FileUpload.tsx
β βββ ErrorBoundary.tsx
β βββ Layout.tsx
β βββ Sidebar.tsx
β βββ Header.tsx
β βββ VideoPlayer.tsx
β βββ Timeline.tsx
βββ pages/ # Page components
β βββ Dashboard.tsx # Main dashboard with stats
β βββ Projects.tsx # Project management with "New Project" button
β βββ NewProject.tsx # 3-step project creation wizard
β βββ VideoEditor.tsx# Professional video editing interface
β βββ Profile.tsx # User profile with achievements
β βββ Clips.tsx # Clip library with grid/list views
β βββ Settings.tsx # Complete settings with theme control
β βββ Editor.tsx # Legacy editor component
β βββ NotFound.tsx # 404 error page
β βββ Login.tsx # Authentication page
β βββ DiscordCallback.tsx
β βββ Terms.tsx # Terms of service
β βββ Privacy.tsx # Privacy policy
βββ store/ # Redux state management
β βββ slices/ # Feature slices
β β βββ uiSlice.ts # UI state (theme, sidebar)
β β βββ userSlice.ts # User authentication
β β βββ projectSlice.ts # Project data & templates
β β βββ clipSlice.ts # Clip library & processing
β β βββ editorSlice.ts # Video editor state
β βββ index.ts # Store configuration
βββ types/ # TypeScript definitions
β βββ index.ts # Core entity types
β βββ api.ts # API types & responses
βββ utils/ # Utility functions
β βββ format.ts # Time, file size, number formatting
β βββ youtube.ts # YouTube URL parsing
β βββ cn.ts # Class name utilities
βββ hooks/ # Custom React hooks
β βββ redux.ts # Typed Redux hooks
βββ assets/ # Static assets
- π Dashboard (
/) - Overview with statistics, recent projects, and quick actions - π¬ Projects (
/projects) - Project management with search, filtering, and "New Project" button - π New Project (
/new-project) - 3-step project creation wizard with templates - π₯ Video Editor (
/editor/:projectId) - Professional video editing with timeline - π€ Profile (
/profile) - User account with achievements and activity - π΅ Clips (
/clips) - Advanced clip library with grid/list views - βοΈ Settings (
/settings) - Complete settings with theme and preferences
- π Login (
/login) - Discord OAuth authentication - π Terms (
/terms) - Terms of service - π Privacy (
/privacy) - Privacy policy - β Not Found (
/*) - 404 error page
- Paste YouTube URLs in the editor
- Supports timestamps (e.g.,
https://youtu.be/VIDEO_ID?t=120) - Automatic video ID extraction and metadata fetching
- Drag clips on the timeline to rearrange
- Click and drag clip edges to trim
- Use keyboard shortcuts for quick navigation
- Adjust volume levels with the built-in controls
- Choose output format (MP4/WebM)
- Select quality settings
- Monitor export progress in real-time
- Download completed video
Create a .env file in the root directory:
# API Configuration
VITE_API_BASE_URL=http://localhost:3001/api
VITE_WS_BASE_URL=ws://localhost:3001
# Optional: OAuth Configuration
VITE_GOOGLE_CLIENT_ID=your_google_client_id
VITE_GITHUB_CLIENT_ID=your_github_client_idThe frontend expects a backend API with these endpoints:
POST /api/auth/loginPOST /api/auth/registerPOST /api/auth/refreshGET /api/auth/profile
GET /api/projects- List projects with paginationPOST /api/projects- Create projectGET /api/projects/:id- Get project detailsPATCH /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
GET /api/clips- List clips with filtersPOST /api/clips- Create clip from YouTube URLPATCH /api/clips/:id- Update clipDELETE /api/clips/:id- Delete clip
processing_update- Clip processing progressexport_update- Project export progressproject_update- Real-time collaboration
- Primary: Blue tones for interactive elements
- Secondary: Neutral grays for backgrounds and text
- Accent: Yellow/amber for highlights and warnings
- Success/Error: Green and red for status indicators
- Primary Font: Inter (locally hosted)
- Monospace: JetBrains Mono for code elements
- Responsive Scaling: Consistent across all screen sizes
All UI components follow these principles:
- Accessibility First: ARIA labels, keyboard navigation
- Responsive: Mobile-first design approach
- Performance: Optimized rendering and interactions
- Consistent: Unified design language throughout
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run type-check # Run TypeScript type checking
npm run lint # Run ESLintThe project includes:
- TypeScript for type safety
- ESLint for code quality
- Prettier integration (via VSCode)
- Error boundaries for graceful error handling
- Code Splitting: Lazy-loaded routes and components
- Bundle Optimization: Vendor chunking and tree shaking
- Memory Management: Proper cleanup of event listeners and object URLs
- Efficient Rendering: Memoization and conditional rendering
- Asset Optimization: Local fonts and optimized images
Ready to take this from prototype to production? π
This project includes a comprehensive PRODUCTION_README.md with everything you need:
- Technology Stack: Node.js + Express + PostgreSQL + AWS
- Database Schema: 5 core tables with relationships and SQL commands
- API Endpoints: 15+ REST endpoints for full functionality
- Video Processing: FFmpeg commands and pipeline setup
- Upload Service: Chunked uploads up to 10GB with resumable support
- Processing Service: Format conversion, resolution scaling, audio normalization
- Storage Service: AWS S3 + CloudFront CDN integration
- Background Jobs: Celery for video processing tasks
- Authentication: Discord OAuth + JWT tokens with refresh strategy
- Security: Rate limiting, input validation, SQL injection protection
- Real-time: WebSocket integration for live updates and collaboration
- Scaling: Horizontal scaling with load balancers and Redis clustering
- Cost Estimation: $400-3000/month for 1000 users
- Revenue Models: Freemium, subscription, usage-based pricing
- Deployment: Docker + AWS/GCP with CI/CD pipelines
- Monitoring: Sentry, DataDog integration with health checks
π See PRODUCTION_README.md for the complete technical specification!
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the WTFPL (Do What The Fuck You Want To Public License) - see the LICENSE file for details.
The WTFPL is one of the most permissive open-source licenses available, allowing anyone to:
- β Use the code for any purpose
- β Modify the code without restrictions
- β Distribute copies (modified or unmodified)
- β Use commercially without royalties
- β No attribution required
- β No copyleft obligations
You can do whatever the fuck you want with this code! π
- React - UI framework
- TypeScript - Type safety
- Tailwind CSS - Utility-first styling
- Redux Toolkit - State management
- Vite - Build tool and dev server
- Lucide React - Beautiful icons
# Build and run frontend container
docker build -t youtube-sequencer .
docker run -p 80:80 youtube-sequencer
# Or use Docker Compose
docker-compose up frontend# Start development server with hot reload
docker-compose --profile development up frontend-dev
# Access at http://localhost:3000# Start complete application stack
docker-compose up
# Services available:
# - Frontend: http://localhost
# - Backend API: http://localhost:3001
# - PostgreSQL: localhost:5432
# - Redis: localhost:6379# Use production profile with reverse proxy
docker-compose --profile production up
# Or deploy to cloud platforms
# The container is optimized for:
# - AWS ECS/Fargate
# - Google Cloud Run
# - Azure Container Instances
# - DigitalOcean App Platform# Frontend Configuration
VITE_API_BASE_URL=http://your-backend-domain.com/api
VITE_WS_BASE_URL=ws://your-backend-domain.com
# Backend Configuration (for full stack)
DATABASE_URL=postgresql://user:password@postgres:5432/youtube_sequencer
JWT_SECRET=your-production-jwt-secret
REDIS_URL=redis://redis:6379# Build with custom API URL
docker build \
--build-arg VITE_API_BASE_URL=https://api.yourdomain.com/api \
--build-arg VITE_WS_BASE_URL=wss://api.yourdomain.com \
-t youtube-sequencer .- Development: Node.js with hot reload
- Production: Nginx serving static files
- Optimized: Multi-stage build reduces final image size
- Non-root user execution
- Minimal base images (Alpine Linux)
- Security headers in Nginx
- Health checks for all services
- Static asset caching
- Gzip compression
- Optimized bundle splitting
- CDN-ready static files
# Scale frontend containers
docker-compose up --scale frontend=3
# Use load balancer for multiple instances
# Nginx reverse proxy handles distributionAWS ECS:
# task-definition.json
{
"family": "youtube-sequencer",
"containerDefinitions": [{
"name": "frontend",
"image": "your-registry/youtube-sequencer:latest",
"portMappings": [{
"containerPort": 80,
"protocol": "tcp"
}]
}]
}Google Cloud Run:
gcloud run deploy youtube-sequencer \
--image your-registry/youtube-sequencer \
--platform managed \
--allow-unauthenticatedVercel/Netlify:
# For static hosting platforms
npm run build
# Upload dist/ folder to your hosting provider# Check container health
docker ps
docker stats
# View logs
docker-compose logs -f frontend# Update to latest version
docker-compose pull
docker-compose up --build
# Zero-downtime updates
docker-compose up -d --no-deps frontendPort Conflicts:
# Change default ports in docker-compose.yml
ports:
- "8080:80" # Change from 80 to 8080Memory Issues:
# Increase Docker memory limit
# Docker Desktop > Settings > Resources > MemoryBuild Failures:
# Clear Docker cache
docker system prune -a
# Rebuild without cache
docker-compose build --no-cacheCreate nginx.conf for custom server configuration:
# nginx.conf
server {
listen 80;
server_name your-domain.com;
# Custom headers, redirects, etc.
location / {
# Your custom configuration
}
}# Add SSL certificates
docker run -v $(pwd)/ssl:/etc/ssl/certs \
-p 443:443 \
your-registry/youtube-sequencer- Security: Run as non-root user
- Performance: Use multi-stage builds
- Monitoring: Implement health checks
- Updates: Use rolling updates for zero downtime
- Storage: Persistent volumes for databases
- Networking: Use custom networks for service isolation
Built with β€οΈ using modern web technologies and containerization