A modern, decentralized cross-platform streaming application built with React, TypeScript, and Electron https://kinnema.app >
- π Decentralized Sync (experimental): No central server required - sync your data across devices using the Nostr protocol
- π Data Sovereignty: Your watch history and preferences stay under your control
- π‘ Peer-to-Peer (soon): Direct device-to-device synchronization without intermediaries
- π¬ Comprehensive Media Library: Browse movies and TV series from popular networks like Netflix, HBO, and more
- π± Cross-Device Sync (Experimental): Synchronize your watch history and favorites across devices using Nostr protocol
- π΅ Subtitle Support (Experimental, Native Only): Built-in subtitle functionality with customizable settings
- π₯ Watch Together (Experimental): Share watching sessions with friends in real-time rooms
- β Favorites Management: Save and organize your favorite shows and movies
- π¨ Modern UI: Beautiful, responsive interface built with Tailwind CSS/Shadcn
- π Theme Support: Dark/light theme switching
- π Plugin System: Support for streaming plugins
- πΊ HLS Streaming: Support for adaptive streaming with HLS.js
- π Auto-Updates: Seamless app updates via Capacitor Updater
- πΎ Offline Storage: Local database with RxDB for offline functionality
- π Internationalization: Multi-language support with i18next
- Node.js 18+
- pnpm (recommended package manager)
- Git
-
Clone the repository
git clone https://github.com/kinnema/frontend.git cd kinnema -
Install dependencies
pnpm install
-
Start development server
pnpm dev
-
Open your browser Navigate to
http://localhost:3000
pnpm build# Development
pnpm electron:dev
# Build for current platform
pnpm electron:build
# Build for specific platforms
pnpm electron:build:win # Windows
pnpm electron:build:mac # macOS
pnpm electron:build:linux # Linuxnpx cap add android
npx cap sync android
npx cap open androidnpx cap add ios
npx cap sync ios
npx cap open ios- React 19 - Modern React with latest features
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- TanStack Router - Type-safe routing
- TanStack Query - Server state management
- Zustand - Client state management
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful icon library
- Motion - Smooth animations
- Embla Carousel - Touch-friendly carousels
- Electron - Desktop applications
- Capacitor - Native mobile apps
- Web - Web support
- RxDB - Reactive database
- Dexie - IndexedDB wrapper
- HLS.js - HTTP Live Streaming
- Nostr Tools - Decentralized sync protocol
- ESLint - Code linting
- TypeScript - Static type checking
- Concurrently - Run multiple commands
- Wait-on - Wait for resources
| Platform | Status | Features |
|---|---|---|
| Web | β Partial Support | Most features are available |
| Desktop | β Full Support | Native desktop app with Electron |
| Android | β Full Support | Native Android app |
| iOS | β Full Support | Native iOS app |
- Browse trending movies and TV shows
- Network-specific collections (Netflix, HBO, etc.)
- Advanced search with filters (soon)
- Personalized recommendations (soon)
- High-quality video playback
- Adaptive streaming with HLS
- Multiple subtitle options
- Picture-in-picture support
- Full-screen mode
- Dark/light themes
- Experimental features
- Language selection
Copy .env.example as .env file in the root directory:
The app is configured for native deployment with Capacitor. See capacitor.config.ts for platform-specific settings.
| Script | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm lint |
Run ESLint |
pnpm electron:dev |
Start Electron in development |
pnpm electron:build |
Build Electron app |
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- The Movie Database (TMDB) for movie and TV data
- Radix UI for accessible UI components
- TanStack for excellent React libraries
- Capacitor for cross-platform capabilities
- π Report Bugs
- π‘ Feature Requests
Kinnema embraces decentralization through:
- Nostr Protocol Integration: Synchronize your watch history, favorites, and settings across devices without relying on centralized servers
- Local-First Data Storage: All your data is stored locally using RxDB, with optional decentralized sync
- Plugin Ecosystem: Extensible architecture supporting both centralized and decentralized content sources
- No Vendor Lock-in: Your data remains portable and under your control
- Privacy: Your viewing habits aren't tracked by central authorities
- Resilience: No single point of failure
- Censorship Resistance: Content discovery through multiple sources
- Data Ownership: You control your own data and preferences