FlipTV is a simple Internet Protocol TV (IPTV) app for KaiOS feature phones, available for free on the KaiStore. Made by Tom Barrasso, developer of PodLP.
FlipTV Channels | FlipTV Streaming |
---|---|
FlipTV is built using SvelteJS and TypeScript, with the only runtime dependency being hls.js.
These were great choices to keep the package size small and provide a responsive experience, given the memory and CPU consumption needed for audio-video streaming. The final package size is only ~200kb zipped.
FlipTV includes a pre-defined list of channels that point to .m3u files. This list can be extended via a remote list in Channels.ts.
Each M3U file a remote text file with a list of available media formats. FlipTV automatically sources the media format closest to the device screen size of 240x320.
To mimic the static that old analog TVs used to display, FlipTV generates "pink noise" static as the background rendered to canvas when it's unable to load.
FlipTV was never adapted for KaiOS 3.0. Despite including both a manifest.webapp
into manifest.webmanifest
, several changes would be necessary including styles and how auto-fullscreen is handled. Since no KaiOS 3.0 device supports DevTools, debugging is a challenge.
Custom data types are provided based on KaiOS API documentation. These have proven helpful coding against KaiOS with type safety and having auto-complete in VS Code.
FlipTV is provided free to charge, with KaiAds installed per the KaiOS KaiStore Submission Guidelines.
Install dependencies:
npm install
Start Rollup:
npm run dev
Navigate to localhost:5000. You should see your app running. Edit a component file in src
, save it, and reload the page to see your changes.
By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the sirv
commands in package.json to include the option --host 0.0.0.0
.
If you're using Visual Studio Code we recommend installing the official extension Svelte for VS Code. If you are using other editors you may need to install a plugin in order to get syntax highlighting and intellisense.
To create an optimised, minified version of the app:
npm run build
The resulting code in /public
can then be zipped as a packaged app for distribution on the KaiStore.