A beautiful, modern desktop application for managing your Cloudflare Stream video content with ease. Built with React, TypeScript, and Electron.
- Upload Videos: Drag & drop or browse to upload videos to Cloudflare Stream
- Video Library: Browse and manage all your uploaded videos
- Video Preview: Stream videos directly in the app with detailed metadata
- Download Videos: Enable and download videos for offline use
- Video Details: View comprehensive information including resolution, duration, file size, and streaming URLs
- Watermark Manager: Upload and manage custom watermarks
- Apply Watermarks: Apply watermarks to videos during upload
- Watermark Preview: Preview watermarks before applying
- Usage Statistics: View total videos, ready videos, watermarks, and storage used
- Real-time Updates: Automatic refresh of statistics and video status
- Status Monitoring: Track video processing status (queued, processing, ready, error)
- Offline Detection: Intelligent offline/online detection
- Graceful Degradation: Clear messaging when features require internet connectivity
- Auto-reconnect: Automatic data refresh when connection is restored
- Secure Credentials: Safely store Cloudflare API credentials locally
- Account Management: Easy setup and management of Cloudflare Stream API access
- Settings Persistence: All configurations saved locally for convenience
- About Page: Detailed system specifications and application information
- Technology Stack: View all technologies and versions used in the app
- Electron Integration: Native desktop features and system integration
- Node.js 18+
- npm or pnpm
- Cloudflare Account with Stream API access
-
Clone the repository
git clone https://github.com/qya/cloudflare-stream-manager.git cd cloudflare-stream-manager
-
Install dependencies
npm install
-
Start development server
npm run electron:dev
-
Get your API credentials:
- Go to Cloudflare Dashboard
- Navigate to "My Profile" β "API Tokens"
- Create a token with Stream permissions
- Note your Account ID from the dashboard
-
Configure in app:
- Launch the application
- Enter your Account ID and API Token
- Click "Save Configuration"
- Frontend: React 18 + TypeScript
- Desktop: Electron 28 with Electron Forge
- Build Tool: Vite 5
- Styling: Tailwind CSS 3
- Icons: Lucide React
- API: Cloudflare Stream API v1
# Development
npm run dev # Start Vite dev server
npm run electron:dev # Start Electron with hot reload
npm start # Start with Electron Forge
# Building
npm run build # Build React app
npm run package # Package Electron app
npm run make # Create platform installers
# Platform-specific builds
npm run make:win # Windows (all architectures)
npm run make:win:x64 # Windows 64-bit
npm run make:win:ia32 # Windows 32-bit
npm run make:linux # Linux
npm run make:darwin # macOS
# Utilities
npm run lint # Run ESLint
npm run preview # Preview built app
src/
βββ components/ # React components
β βββ About/ # About page and system info
β βββ Layout/ # Header, Sidebar, navigation
β βββ Settings/ # Configuration forms
β βββ Upload/ # Video upload components
β βββ Videos/ # Video management
β βββ Watermarks/ # Watermark management
βββ services/ # API services
β βββ cloudflare.ts # Cloudflare Stream API
β βββ tusUpload.ts # TUS upload protocol
βββ types/ # TypeScript definitions
βββ App.tsx # Main application component
electron/
βββ main.ts # Electron main process
βββ preload.ts # Preload script for security
build/
βββ icon/ # Application icons
βββ icon.ico # Windows icon
βββ icon.icns # macOS icon
βββ icon.png # Linux icon
The app builds native desktop applications for multiple platforms:
- Squirrel Installer (
.exe
) - Modern auto-updating installer - MSI Installer (
.msi
) - Traditional Windows installer - Portable ZIP - No installation required
- Architectures: x64, x86 (32-bit)
- App Bundle (
.app
) - Native macOS application - ZIP Archive - Compressed app bundle
- Architecture: ARM64 (Apple Silicon), x64 (Intel)
- DEB Package (
.deb
) - Debian/Ubuntu installer - RPM Package (
.rpm
) - RedHat/Fedora installer - AppImage - Portable Linux application
# Build for current platform
npm run make
# Cross-platform builds (requires additional setup)
npm run make:win:x64 # Windows 64-bit
npm run make:win:ia32 # Windows 32-bit
npm run make:linux # Linux
npm run make:darwin # macOS
Built applications are saved to:
out/make/squirrel.windows/
- Windows installersout/make/wix/
- Windows MSI filesout/make/zip/
- Portable ZIP filesout/make/deb/
- Linux DEB packagesout/make/rpm/
- Linux RPM packages
For production builds, you can set these environment variables:
# Windows Code Signing (optional)
WINDOWS_CERTIFICATE_FILE=/path/to/certificate.p12
WINDOWS_CERTIFICATE_PASSWORD=your_certificate_password
# App Store publishing (optional)
APPLE_ID=your_apple_id
APPLE_ID_PASSWORD=app_specific_password
- Account ID: Found in your Cloudflare dashboard sidebar
- API Token: Create with these permissions:
- Zone:Stream:Edit
- Account:Cloudflare Stream:Edit
- Account:Account:Read
- Resumable Uploads: Uses TUS protocol for reliable large file uploads
- Progress Tracking: Real-time upload progress with speed and ETA
- Format Support: MP4, MOV, AVI, MKV, WebM, and more
- Watermark Integration: Apply watermarks during upload
- Bulk Operations: Select and manage multiple videos
- Status Monitoring: Real-time processing status updates
- Metadata Editing: Update video names and descriptions
- URL Generation: Copy streaming URLs (HLS, DASH)
- Connection Detection: Automatic online/offline status detection
- Graceful Handling: Clear messaging for offline-only features
- Data Persistence: Local storage of configuration and cache
- Local Storage: All credentials stored locally, never transmitted
- Context Isolation: Secure Electron configuration
- HTTPS Only: All API communications over secure connections
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Use TypeScript for all new code
- Follow the existing code style (ESLint configuration)
- Add tests for new features
- Update documentation as needed
- Ensure cross-platform compatibility
- Windows: Windows 10 or later (x64, x86)
- macOS: macOS 10.15 (Catalina) or later
- Linux: Ubuntu 16.04+, Fedora 24+, or equivalent
- Node.js: 18.0.0 or later
- npm: 8.0.0 or later
- Git: For version control
- Platform-specific build tools (for cross-compilation)
This project is licensed under the MIT License - see the LICENSE file for details.
Fais.tech
- Cloudflare Stream - Video streaming infrastructure
- Electron - Desktop app framework
- React - UI library
- Tailwind CSS - CSS framework
- Lucide - Beautiful icons
- Cloudflare Stream API Documentation
- Electron Documentation
- React Documentation
- TypeScript Documentation
Built with β€οΈ by Fais.tech