Files
iptvnator/apps/website/src/lib/comparisons.ts
T
4grayandClaude Opus 5 f833e16cc4 feat(website): add the computer vs TV box comparison
Third page in the set, and the one that answers the question people ask
before installing anything: where should IPTV actually run. It compares the
two places rather than two products — everything that needs a keyboard
(adding a provider, attaching a guide, mapping a channel, working out why a
stream fails) against everything that needs a couch — and states plainly
that IPTVnator has no TV build, with the phone remote as the answer for a
laptop wired to the television.

No third-party software is named, so the page carries no ThirdPartyNote: the
rows describe the ordinary experience of each kind of device and say so in
the caption.

The compare hub's lead no longer claims every page is a choice inside the
app, and the three newest entries get distinct icons.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 21:34:13 +02:00

101 lines
4.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Registry of the comparison pages under `/compare/`.
*
* Most of them compare IPTVnator's own options against each other — connection
* types, playback engines, editions — so every claim can be checked against
* this repository. A page that names other software follows stricter rules:
* only platform and feature facts that are stable and publicly documented, a
* dated `ThirdPartyNote`, no logos or brand styling, no download links to the
* other project, and no claim that a feature is missing unless it was checked.
* Prefer describing what IPTVnator does and letting the difference speak.
*/
export type ComparisonSlug =
| 'm3u-vs-xtream-vs-stalker'
| 'playback-engines'
| 'desktop-vs-browser'
| 'iptvnator-vs-vlc'
| 'iptvnator-vs-kodi'
| 'computer-vs-tv-box';
export interface ComparisonEntry {
slug: ComparisonSlug;
/** Short name for breadcrumbs, cards and the switcher. */
label: string;
/** Mono eyebrow above the page title. */
eyebrow: string;
/** The question the page answers, one sentence. */
question: string;
/** Site-relative href including the GitHub Pages base. */
href: string;
/** 24×24 stroke icon path. */
icon: string;
}
export const COMPARISONS: readonly ComparisonEntry[] = [
{
slug: 'm3u-vs-xtream-vs-stalker',
label: 'M3U vs Xtream Codes vs Stalker',
eyebrow: 'Compare · Connection types',
question:
'Your provider gave you a link, a login or a MAC address. Which one should you use, and what does each give you inside the app?',
href: '/iptvnator/compare/m3u-vs-xtream-vs-stalker/',
icon: 'M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z',
},
{
slug: 'playback-engines',
label: 'Playback engines',
eyebrow: 'Compare · Players',
question:
'Built-in web players, MPV, VLC or the embedded MPV engine: which one plays your streams, and what do you give up by switching?',
href: '/iptvnator/compare/playback-engines/',
icon: 'M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z M21 12a9 9 0 11-18 0 9 9 0 0118 0z',
},
{
slug: 'desktop-vs-browser',
label: 'Desktop app vs browser version',
eyebrow: 'Compare · Editions',
question:
'The desktop app and the self-hosted browser version share one codebase. Here is exactly what the browser cannot do.',
href: '/iptvnator/compare/desktop-vs-browser/',
icon: 'M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z',
},
{
slug: 'iptvnator-vs-vlc',
label: 'IPTVnator vs VLC',
eyebrow: 'Compare · Other players',
question:
'VLC opens an M3U playlist too. When is that enough, and what does a player built around IPTV add on top?',
href: '/iptvnator/compare/iptvnator-vs-vlc/',
icon: 'M7.5 21L3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5',
},
{
slug: 'iptvnator-vs-kodi',
label: 'IPTVnator vs Kodi',
eyebrow: 'Compare · Other players',
question:
'Kodi is a whole media center and reaches IPTV through a PVR add-on. When is that the right shape, and when do you want a player that only does IPTV?',
href: '/iptvnator/compare/iptvnator-vs-kodi/',
icon: 'M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z',
},
{
slug: 'computer-vs-tv-box',
label: 'Computer vs TV box',
eyebrow: 'Compare · Where you watch',
question:
'A set-top box in the living room or a computer at a desk: where should IPTV actually run, and what does each make easy?',
href: '/iptvnator/compare/computer-vs-tv-box/',
icon: 'M9.348 14.651a3.75 3.75 0 010-5.303m5.304 0a3.75 3.75 0 010 5.303m-7.425 2.122a6.75 6.75 0 010-9.546m9.546 0a6.75 6.75 0 010 9.546M5.106 18.894c-3.808-3.807-3.808-9.98 0-13.788m13.788 0c3.808 3.807 3.808 9.98 0 13.788M12 12h.008v.008H12V12z',
},
];
export const COMPARE_HUB_HREF = '/iptvnator/compare/';
export function comparisonBySlug(slug: ComparisonSlug): ComparisonEntry {
const entry = COMPARISONS.find((comparison) => comparison.slug === slug);
if (!entry) {
throw new Error(`Unknown comparison slug: ${slug}`);
}
return entry;
}