Requirements.
Tools, accounts and hosting.
What you need to build the app, run the server and publish to the stores. Versions are taken from the package files of version 1.1.0.
01Server
The server runs on Linux or macOS. To develop on Windows use WSL (Windows Subsystem for Linux) or Git Bash; for production use a Linux server or Docker. The Flutter app builds for Android on Windows; iOS builds need a Mac with Xcode.
| What | Version | Source |
|---|---|---|
| Node.js | 22 or newer (required) | server/package.json engines "node": ">=22" |
| ffmpeg + ffprobe | 6 or newer (for uploads) | Not needed when every episode is an external HLS address. Set FFMPEG_PATH / FFPROBE_PATH if they are not on the PATH. |
| ImageMagick 7 | sample only | Only for npm run seed:sample (MAGICK_PATH if magick is not on the PATH). |
| Build tools | python3, make, g++ | Only if npm has to compile better-sqlite3 for your platform (the Dockerfile installs them). |
02Mobile app
| What | Version | Source |
|---|---|---|
| Flutter | 3.41.0 or newer | app/pubspec.yaml flutter: ">=3.41.0" |
| Dart | ^3.11.0 (3.11 or newer) | app/pubspec.yaml |
| Android | compileSdk 36, targetSdk 36, minSdk 24 (Android 7.0), JDK 17 | app/android/app/build.gradle.kts |
| iOS | deployment target 15.0 | app/ios/Podfile, Xcode project |
| Xcode | 16 or newer, with CocoaPods (macOS only) | README. On Xcode 27 see Troubleshooting. |
| Android Studio | with Android SDK 36 |
The app was checked with Flutter 3.41.4 / Dart 3.11.1: flutter analyze reports no issues and flutter test passes (8 tests).
03Web player
Node.js 22 to build (Vite 7, TypeScript 5.9). The build output is static files that the server serves. Any current browser plays HLS through hls.js; Safari plays it natively.
04Hosting
- A Linux server or container that runs one long-lived Node.js process, with a persistent disk for the SQLite databases and the media. Serverless hosting is not supported by the server as shipped.
- Disk for your videos. One minute of video in the default 540p + 720p HLS ladder is roughly 25 MB (
docs/INSTALL.md). - A domain with HTTPS (Caddy, nginx + Let's Encrypt, or your host's TLS). Release builds of the apps need https.
- Recommended: a pull CDN (for example BunnyCDN, Cloudflare or CloudFront) in front of
/media.
05Accounts (all optional, all yours)
| Account | Needed for |
|---|---|
| Apple Developer Program | Publishing the iOS app, in-app purchases, push (APNs key), universal links |
| Google Play Console | Publishing the Android app, in-app products, purchase verification (service account) |
| Stripe | Card checkout in the web player |
| PayPal Developer | PayPal checkout in the web player |
| Google AdMob | Rewarded and interstitial ads in the app |
| Firebase | Push notifications |
| OpenAI-compatible API, Anthropic, ElevenLabs | Optional AI subtitles, translation, dubbing and character chat |
| CDN (for example BunnyCDN) | Faster video delivery |
You pay each provider for your own usage. None of these costs is included in the item: see Costs not included.