A modern, beautiful streaming platform for your personal media library
Features β’ Installation β’ Development β’ Architecture β’ Contributing
Raffi is a modern, cross-platform streaming application inspired by Stremio, designed to be a faster, more beautiful alternative with enhanced features. Built with modern web technologies, it provides a Netflix-like experience while leveraging the Stremio addon ecosystem for content discovery and streaming.
Like Stremio, Raffi uses community addons to aggregate streaming sources, but goes beyond with a reimagined interface, improved performance, and additional features like synchronized watch parties, enhanced progress tracking, and Discord integration.
- Beautiful, responsive UI with smooth animations
- Auto-playing trailers on hover
- Multiple video quality options
- Audio and subtitle track selection
- Picture-in-picture and fullscreen support
- Windows -
.exeand.msiinstallers - Linux -
.deb,.rpm, and.AppImagepackages - macOS -
.dmgand.zipdistributions - iOS & Android - Mobile companion app (React Native/Expo)
- Real-time watch parties with synchronized playback
- Chat and presence indicators
- Host controls for play/pause/seek
- Custom lists and collections
- Continue watching with progress tracking
- Episode and season management
- Search across all content
- Full Stremio addon support - Use any Stremio addon for content sources
- Community addon ecosystem for movies, TV shows, and more
- Multiple addon sources simultaneously
- Easy addon management and configuration
- Configurable seek bar styles
- Subtitle delay adjustment
- Theme customization
- Torrent/magnet link streaming
- Local file playback
- Discord Rich Presence integration
- Auto-updater
- Offline mode support
Visit raffi.al or check the Releases page for the latest version.
- Installer:
Raffi-Setup-x.x.x.exe - Portable:
Raffi-x.x.x.msi
# Debian/Ubuntu
sudo dpkg -i Raffi-x.x.x.amd64.deb
# Fedora/RHEL
sudo rpm -i Raffi-x.x.x.x86_64.rpm
# AppImage (Universal)
chmod +x Raffi-x.x.x.AppImage
./Raffi-x.x.x.AppImage- DMG: Mount and drag to Applications
- ZIP: Extract and move to Applications
- Node.js 18+ or Bun 1.0+
- Go 1.21+ (for server binary)
- Git
raffi/
βββ raffi-desktop/ # Desktop app (Electron + Svelte 5)
βββ raffi-mobile/ # Mobile app (React Native + Expo)
βββ raffi-server/ # Streaming server (Go)
βββ raffi-site/ # Marketing website (SvelteKit)
- Framework: Electron 39 with Svelte 5 and TypeScript
- Platforms: Windows, macOS, Linux
- Features: Full desktop experience with watch parties, Discord integration, local file playback
- Build: electron-builder for multi-platform releases
- Framework: React Native with Expo SDK 54
- Platforms: iOS and Android
- Features: Browse content, search, continue watching, native video playback
- Sync: Shares authentication and watch progress with desktop via Supabase
- Native Module: Custom torrent-streamer module for on-device streaming
- Language: Go
- Purpose: HLS transcoding server for video streams
- Bundled: Compiled binaries included with desktop app
- Mobile: Can be used as remote transcoding server for mobile devices
- Framework: SvelteKit
- Purpose: Marketing site and download page
- Hosted at: raffi.al
# Clone the repository
git clone https://github.com/kaleidal/raffi.git
cd raffi
# Desktop app
cd raffi-desktop
bun install
bun run electron:dev
# Build for production
bun run distcd raffi-desktop
# Install dependencies
bun install
# Run in development mode (builds server + starts electron)
bun run electron:dev
# Run electron only (if server already built)
bun run electron:dev:only
# Build production release
bun run distcd raffi-mobile
# Install dependencies
npm install
# Start Expo development server
npm start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Build for production
npx expo build:ios
npx expo build:androidNote: Mobile app requires the desktop server running for torrent streams. Update STREAMING_SERVER in app/player.tsx with your local IP.
cd raffi-server
# Build server binary
go build -o decoder .
# Run server
./decodercd raffi-site
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build- Frontend: Svelte 5, TypeScript, Tailwind CSS
- Desktop Runtime: Electron 39
- Video Player: HLS.js for adaptive streaming
- Database: Supabase (PostgreSQL)
- Build: Vite + electron-builder
- Key Libraries:
@lucide/svelte,posthog-js,@ryuziii/discord-rpc
- Frontend: React Native (React 19), TypeScript
- Framework: Expo SDK 54 with new architecture enabled
- Video Player: Expo Video (native)
- Navigation: Expo Router (file-based routing)
- State Management: Zustand
- Database: Supabase (shared with desktop)
- Native Module: Custom torrent-streamer for on-device torrenting
- Key Features: Tab navigation, dark theme, cross-device sync
- Language: Go 1.21+
- Functionality: HLS transcoding, torrent handling
- Deployment: Bundled with desktop, standalone for mobile
- Compatible with Stremio addons - Reuses the proven Stremio addon protocol
- Addon discovery and installation
- Multi-source aggregation from different addons
- Torrent/magnet link support via addons
- Community-maintained content catalogs
- Custom video player with HLS support
- Multiple quality selection
- Subtitle parsing (SRT/VTT)
- Audio track switching
- Seek bar with time-remaining display
- Real-time synchronization via Supabase
- WebSocket-based state management
- Host/participant role system
- Automatic reconnection
- Local and cloud sync
- Per-episode progress
- Resume from last position
- Watched/unwatched states
- Shared authentication via Supabase across desktop and mobile
- Watch progress sync - Start on desktop, continue on mobile
- Library sync - Custom lists and favorites across devices
- Addon settings - Configured addons available on all platforms
cd raffi-desktop
# Windows
bun run dist -- --win
# Linux
bun run dist -- --linux
# macOS
bun run dist -- --mac
# All platforms
bun run distOutput will be in raffi-desktop/release/
cd raffi-mobile
# Development builds
npx expo run:ios # iOS
npx expo run:android # Android
# Production builds (requires EAS account)
eas build --platform ios
eas build --platform androidBuilds will be available via Expo Application Services (EAS) dashboard.
Desktop (raffi-desktop/package.json):
- App metadata (name, version, author)
- Build targets (Windows, Linux, macOS)
- Icon paths and file associations
- Auto-update settings
Mobile (raffi-mobile/app.json):
- App metadata and identifiers
- iOS bundle ID:
al.kaleid.mobile - Android package:
al.kaleid.raffimobile - Splash screen and icon configuration
- Expo plugins and experiments
Contributions are welcome! Please feel free to submit a Pull Request.
- Code Style: Follow existing patterns, use TypeScript
- Commits: Write clear, descriptive commit messages
- Testing: Test on multiple platforms when possible
- Documentation: Update README for significant changes
- π Bug fixes
- β¨ New features
- π¨ UI/UX improvements
- π Documentation
- π Translations
- π§ͺ Testing
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with β€οΈ by Kaleidal
- Inspired by Stremio and its addon ecosystem
- Icons by Lucide
- Powered by the community-driven Stremio addon protocol
- Website: raffi.al
- GitHub: github.com/kaleidal/raffi
- Issues: Report a bug
