Files
KoalaSync/website/index.html
T

845 lines
66 KiB
HTML
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.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KoalaSync | Sync Netflix, Emby, Jellyfin & Any Video with Friends Browser Extension</title>
<meta name="description" content="Watch Netflix, Emby, Jellyfin, YouTube, Twitch and any HTML5 video in perfect sync with friends. KoalaSync is a privacy-first, open-source browser extension for Chrome and Firefox. Works on almost any site with a video element.">
<link rel="preload" href="style.css" as="style">
<link rel="stylesheet" href="style.css">
<link rel="icon" type="image/png" href="assets/logo.png">
<link rel="canonical" href="https://sync.koalastuff.net/">
<meta name="robots" content="index, follow">
<meta property="og:title" content="KoalaSync | Sync Netflix, Emby, Jellyfin & Any Video with Friends">
<meta property="og:description" content="Watch Netflix, Emby, Jellyfin, YouTube, Twitch and any HTML5 video in perfect sync. Privacy-first, open-source browser extension for Chrome & Firefox.">
<meta property="og:image" content="https://sync.koalastuff.net/assets/logo.png">
<meta property="og:type" content="website">
<meta property="og:url" content="https://sync.koalastuff.net/">
<script src="lang-init.js"></script>
<!-- Structured Data (Schema.org) for Rich Snippets -->
<script type="application/ld+json" id="schema-software">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "KoalaSync",
"operatingSystem": "Windows, macOS, Linux, ChromeOS",
"applicationCategory": "BrowserApplication",
"browserRequirements": "Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "EUR"
},
"description": "Watch Netflix, YouTube, Twitch, Jellyfin, Emby and any HTML5 video in perfect sync with friends. Open source, privacy-first, free.",
"softwareVersion": "1.9.3",
"license": "https://opensource.org/licenses/MIT"
}
</script>
</head>
<body>
<div class="bg-blobs">
<div class="blob blob-1"></div>
<div class="blob blob-2"></div>
<div class="blob blob-3"></div>
</div>
<nav>
<div class="container nav-content">
<div class="logo-area">
<img src="assets/logo.png" alt="KoalaSync Logo" width="40" height="40">
<span>KoalaSync</span>
</div>
<button class="hamburger" aria-label="Menu" aria-expanded="false"></button>
<div class="nav-links">
<a href="#features"><span lang="en">Features</span><span lang="de">Funktionen</span></a>
<a href="#how-it-works"><span lang="en">How it works</span><span lang="de">So funktioniert's</span></a>
<a href="https://github.com/Shik3i/KoalaSync" target="_blank" style="display: inline-flex; align-items: center; gap: 6px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="16" height="16" aria-hidden="true" style="display: block;"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.042 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
GitHub
</a>
<a class="lang-toggle" style="display: inline-flex; align-items: center; gap: 6px; cursor: pointer;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" style="width: 16px; height: 16px; display: block;"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg>
EN/DE
</a>
</div>
</div>
</nav>
<header class="hero">
<div class="container hero-grid">
<div class="hero-text">
<div class="version-badge" data-reveal><span lang="en" class="version-text-en">v1.5.3 OUT NOW</span><span lang="de" class="version-text-de">v1.5.3 JETZT VERFÜGBAR</span></div>
<h1 data-reveal>
<span lang="en">Watch Together.<br>Sync Perfectly.</span>
<span lang="de">Gemeinsam schauen.<br>Perfekt synchron.</span>
</h1>
<h2 class="hero-subtitle" data-reveal>
<span lang="en">Your remote movie night without lags. No registration, no data collection. Just share a link and watch together.</span>
<span lang="de">Dein Kino-Abend auf Distanz. Keine Lags, keine Anmeldung. Einfach Link teilen und zusammen schauen.</span>
</h2>
<div class="cta-group" data-reveal>
<a href="https://chromewebstore.google.com/detail/koalasync/obbnmkmlaaddodakcbdljknjpagklifc" class="btn btn-primary">
<img src="assets/chrome.svg" alt="Chrome" width="20" height="20">
<span lang="en">Add to Chrome</span><span lang="de">Zu Chrome hinzufügen</span>
</a>
<a href="https://addons.mozilla.org/de/firefox/addon/koalasync/" class="btn btn-firefox">
<img src="assets/firefox.svg" alt="Firefox" width="20" height="20">
<span lang="en">Add to Firefox</span><span lang="de">Zu Firefox hinzufügen</span>
</a>
<a href="https://github.com/Shik3i/KoalaSync/releases" target="_blank" class="btn btn-secondary" style="display: inline-flex; align-items: center; gap: 8px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true" style="display: block;"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
GitHub Releases
</a>
</div>
</div>
<!-- Interactive CSS Extension Mockup -->
<div class="hero-mockup-wrapper" data-reveal>
<div class="extension-mockup">
<div class="mock-header-row">
<h1><img src="assets/logo.png" alt="KoalaSync Logo">KoalaSync</h1>
<a href="https://github.com/Shik3i/KoalaSync" target="_blank" class="mock-version-link" title="Visit GitHub Repository">
<svg viewBox="0 0 16 16" fill="currentColor" style="width: 12px; height: 12px; display: block;"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
<span>v1.9.3</span>
</a>
</div>
<div class="mock-tabs">
<button class="mock-tab active" data-target="mock-room" title="Room settings and connection">Room</button>
<button class="mock-tab" data-target="mock-sync" title="Video sync controls and remote actions">Sync</button>
<button class="mock-tab" data-target="mock-settings" title="Extension preferences">Settings</button>
<button class="mock-tab" data-target="mock-dev" title="Advanced Diagnostics & Logs">Status</button>
</div>
<div class="mock-body">
<!-- ROOM TAB -->
<div id="mock-room" class="mock-screen active">
<div class="mock-joined-room" style="display: flex; justify-content: space-between; align-items: center; border-left: 4px solid var(--accent); padding: 8px 10px; background: var(--card); border-radius: 8px; margin-bottom: 12px;" title="The room you are currently connected to">
<div style="display: flex; flex-direction: column;">
<span style="font-size: 0.6rem; text-transform: uppercase; color: var(--text-muted); font-weight: 700; line-height: 1;"><span lang="en">Active Room</span><span lang="de">Aktiver Raum</span></span>
<span class="mock-room-name" style="font-weight: 700; color: var(--accent); font-size: 0.9rem; letter-spacing: 0.5px; margin-top: 2px;">brave-eagle-80</span>
</div>
<span class="mock-server-badge" style="font-size: 0.6rem; color: var(--text-muted);"><span lang="en">Official Server</span><span lang="de">Offizieller Server</span></span>
</div>
<div class="mock-card">
<div class="mock-label" title="Share this link with friends so they can join"><span lang="en">Invite Link</span><span lang="de">Einladungs-Link</span></div>
<div class="mock-invite-box">
<input type="text" class="mock-input" value="https://sync.koalastuff.net/join.html#join:brave-eagle-80:pass" readonly style="flex: 1;">
<button class="mock-btn" style="width: 40px; padding: 0.45rem 0; flex-shrink: 0; background: #334155;" title="Copy Invite Link">📋</button>
</div>
</div>
<div class="mock-card" style="margin-bottom: 12px;">
<div class="mock-label" title="Other users currently connected to this room"><span lang="en">Peers in Room</span><span lang="de">Teilnehmer im Raum</span></div>
<div class="mock-peer-list">
<div class="mock-peer-item">
<div class="mock-peer-header">
<span class="mock-peer-name">CoolUsername</span>
<span class="mock-peer-meta"><span lang="en">YOU</span><span lang="de">ICH</span></span>
</div>
<div class="mock-peer-tab">🎬 Stranger Things - S4E1</div>
<div class="mock-peer-status"><span style="color:#22c55e;"></span> 0:55 • <span lang="en">Playing</span><span lang="de">Wiedergabe</span></div>
</div>
<div class="mock-peer-item">
<div class="mock-peer-header">
<span class="mock-peer-name">KoalaPC</span>
<span class="mock-peer-meta"><span lang="en">Peer</span><span lang="de">Partner</span></span>
</div>
<div class="mock-peer-tab">🎬 Stranger Things - S4E1</div>
<div class="mock-peer-status"><span style="color:#22c55e;"></span> 0:55 • <span lang="en">Playing</span><span lang="de">Wiedergabe</span></div>
</div>
</div>
</div>
<button class="mock-btn" style="background:#ef4444; width:100%; border: none; padding: 10px; border-radius: 8px; color: white; font-weight: 700; cursor: pointer; border: 1px solid #ef4444;"><span lang="en">Leave Room</span><span lang="de">Raum verlassen</span></button>
</div>
<!-- SYNC TAB -->
<div id="mock-sync" class="mock-screen">
<div class="mock-form-group" style="margin-bottom: 12px;">
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Choose the browser tab containing the video to sync">
<span lang="en">Select Video</span><span lang="de">Video auswählen</span>
</label>
<select class="mock-input" style="width: 100%; box-sizing: border-box; background: var(--card); border: 1px solid #334155; color: white; padding: 8px; border-radius: 8px; font-family: inherit; font-size: 0.75rem; outline: none; cursor: default;">
<option>🎬 Stranger Things - S4E1</option>
</select>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700;">
<span lang="en">Remote Control</span><span lang="de">Fernsteuerung</span>
</label>
<button class="mock-btn" style="background:transparent; border: 1px solid #334155; border-radius: 6px; padding: 2px 6px; font-size: 0.65rem; cursor:default; opacity:0.8; color: var(--text-muted); display: flex; align-items: center; gap: 4px; white-space: nowrap;" title="Copy Invite Link">
<span>📋</span>
<span lang="en">Invite Link</span><span lang="de">Einladungs-Link</span>
</button>
</div>
<div style="display: flex; gap: 8px; margin-bottom: 12px;">
<button class="mock-btn mock-btn-play" style="flex: 1; background: #22c55e; color: white; padding: 8px; border-radius: 8px; font-weight: 700; border: none; cursor: pointer;" title="Send a Play command to everyone"><span lang="en">▶ Play</span><span lang="de">▶ Start</span></button>
<button class="mock-btn mock-btn-pause" style="flex: 1; background: #ef4444; color: white; padding: 8px; border-radius: 8px; font-weight: 700; border: none; cursor: pointer;" title="Send a Pause command to everyone"><span lang="en">⏸ Pause</span><span lang="de">⏸ Pause</span></button>
</div>
<div style="display: flex; gap: 8px; margin-bottom: 15px; align-items: stretch;">
<button class="mock-btn" style="background: linear-gradient(135deg, #6366f1, #a855f7); flex: 1; color: white; border: none; font-weight: 700; border-radius: 8px; padding: 8px; cursor: pointer;" title="Force all users to sync up">
<span lang="en">⚡ SYNC</span><span lang="de">⚡ SYNC</span>
</button>
<div class="mock-input" style="flex: 1; background: var(--card); border: 1px solid #334155; color: white; padding: 6px; border-radius: 8px; font-size: 0.75rem; display: flex; align-items: center; justify-content: space-between;" title="Choose sync target">
<span>
<span lang="en">Jump to Others</span><span lang="de">Zu anderen springen</span>
</span>
<span style="font-size: 0.5rem; opacity: 0.6;"></span>
</div>
</div>
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Shows the most recent play, pause, or seek command">
<span lang="en">Last Activity Status</span><span lang="de">Letzte Aktivität</span>
</label>
<div class="mock-card" style="margin-bottom: 15px; display: flex; flex-direction: column; gap: 6px;">
<div style="display: flex; justify-content: space-between; align-items: baseline;">
<span style="font-weight: 700; color: #ef4444; font-size: 11px;">PAUSE</span>
<span style="font-size: 9px; color: var(--text-muted);">CoolUsername @ 12:44:32</span>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(36px, 1fr)); gap: 5px; margin-top: 4px;">
<div style="display: flex; flex-direction: column; align-items: center;">
<div style="width: 18px; height: 18px; border-radius: 50%; background: var(--success); color: white; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: bold; margin-bottom: 1px;"></div>
<span style="font-size: 7px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 36px;">🐨 KoalaPC</span>
</div>
</div>
</div>
<!-- Episode Auto-Sync Lobby Status Mockup -->
<div class="mock-card" style="margin-bottom: 15px; border-left: 4px solid #fbbf24; background: var(--card); padding: 8px 10px; border-radius: 8px;">
<div style="display:flex; align-items:center; gap: 6px; margin-bottom: 4px;">
<span style="font-size: 0.8rem;"></span>
<span style="font-weight: 700; color: #fbbf24; font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em;">Episode Lobby</span>
</div>
<div style="font-size: 0.7rem; color: white; margin-bottom: 4px; font-weight: 600;">
🎬 Stranger Things - S4E2
</div>
<div style="font-size: 0.65rem; color: var(--text-muted); margin-bottom: 6px;">
<span lang="en">Waiting for 1 peer (KoalaPC)...</span><span lang="de">Warten auf 1 Partner (KoalaPC)...</span>
</div>
<button class="mock-btn" style="background: #334155; border: none; padding: 4px 8px; border-radius: 6px; color: white; font-weight: 600; font-size: 0.65rem; cursor: pointer; width: auto; display: block;" title="Cancel lobby and play anyway">
<span lang="en">Skip & Play anyway</span><span lang="de">Überspringen & abspielen</span>
</button>
</div>
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Other users currently connected to this room">
<span lang="en">Peers in Room</span><span lang="de">Teilnehmer im Raum</span>
</label>
<div class="mock-card" style="margin-bottom: 12px;">
<div class="mock-peer-list">
<div class="mock-peer-item">
<div class="mock-peer-header">
<span class="mock-peer-name">CoolUsername</span>
<span class="mock-peer-meta"><span lang="en">YOU</span><span lang="de">ICH</span></span>
</div>
<div class="mock-peer-tab">🎬 Stranger Things - S4E1</div>
<div class="mock-peer-status"><span style="color:#22c55e;"></span> 0:55 • <span lang="en">Playing</span><span lang="de">Wiedergabe</span></div>
</div>
<div class="mock-peer-item">
<div class="mock-peer-header">
<span class="mock-peer-name">KoalaPC</span>
<span class="mock-peer-meta"><span lang="en">Peer</span><span lang="de">Partner</span></span>
</div>
<div class="mock-peer-tab">🎬 Stranger Things - S4E1</div>
<div class="mock-peer-status"><span style="color:#22c55e;"></span> 0:55 • <span lang="en">Playing</span><span lang="de">Wiedergabe</span></div>
</div>
</div>
</div>
</div>
<!-- SETTINGS TAB -->
<div id="mock-settings" class="mock-screen">
<div style="display: flex; align-items: center; justify-content: space-between; background: var(--card); padding: 8px 10px; border-radius: 8px; margin-bottom: 10px; border: 1px solid #334155;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700;" title="Username helps others identify you.">
<span lang="en">Your Username</span><span lang="de">Dein Benutzername</span>
</label>
<input type="text" class="mock-input" value="CoolUsername" readonly style="width: 110px; padding: 4px; text-align: right; background: transparent; border: none; color: var(--accent); font-weight: 700;">
</div>
<div style="display: flex; align-items: center; justify-content: space-between; background: var(--card); padding: 8px 10px; border-radius: 8px; margin-bottom: 8px; border: 1px solid #334155;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; cursor: help;" title="Filters out non-video tabs and unrelated domains to keep the list clean">
<span lang="en">Hide Clutter Tabs</span><span lang="de">Noise-Filterung</span>
</label>
<label class="mock-toggle-switch">
<input type="checkbox" checked>
<span class="mock-slider"></span>
</label>
</div>
<div style="display: flex; align-items: center; justify-content: space-between; background: var(--card); padding: 8px 10px; border-radius: 8px; margin-bottom: 8px; border: 1px solid #334155;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; cursor: help;" title="Pauses automatically and waits for all peers when an episode changes, then sync-starts together.">
<span lang="en">Auto-Sync Next Episode</span><span lang="de">Nächste Folge auto-syncen</span>
</label>
<label class="mock-toggle-switch">
<input type="checkbox" checked>
<span class="mock-slider"></span>
</label>
</div>
<div style="display: flex; align-items: center; justify-content: space-between; background: var(--card); padding: 8px 10px; border-radius: 8px; margin-bottom: 8px; border: 1px solid #334155;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; cursor: help;" title="Automatically copies the invite link to your clipboard when creating a new room.">
<span lang="en">Auto-Copy Invite Link</span><span lang="de">Link auto-kopieren</span>
</label>
<label class="mock-toggle-switch">
<input type="checkbox" checked>
<span class="mock-slider"></span>
</label>
</div>
<div style="display: flex; align-items: center; justify-content: space-between; background: var(--card); padding: 8px 10px; border-radius: 8px; margin-bottom: 12px; border: 1px solid #334155;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; cursor: help;" title="Shows native system notifications when someone joins/leaves or plays/pauses.">
<span lang="en">Browser Notifications</span><span lang="de">Browser-Meldungen</span>
</label>
<label class="mock-toggle-switch">
<input type="checkbox">
<span class="mock-slider"></span>
</label>
</div>
<div style="margin-top: 15px; padding-top: 8px; border-top: 1px solid #334155;">
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Tools for fixing connection issues">
<span lang="en">Troubleshooting</span><span lang="de">Fehlerbehebung</span>
</label>
<button class="mock-btn" style="background:#334155; width:100%; border: none; padding: 10px; border-radius: 8px; color: white; font-weight: 600; cursor: pointer; font-size: 11px;" title="Regenerate your internal ID and reconnect">
<span lang="en">Regenerate Peer ID</span><span lang="de">Peer ID regenerieren</span>
</button>
<p style="font-size: 9px; color: var(--text-muted); margin-top: 5px; text-align: center; margin-bottom: 0;">
<span lang="en">Use this if you see "Duplicate Identity" errors.</span>
<span lang="de">Nutze dies bei "Duplicate Identity" Fehlern.</span>
</p>
</div>
</div>
<!-- DEV TAB -->
<div id="mock-dev" class="mock-screen">
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Current WebSocket connection state">
<span lang="en">Connection Status</span><span lang="de">Verbindungsstatus</span>
</label>
<div class="mock-card" style="display:flex; align-items:center; gap: 10px; margin-bottom: 12px;">
<span class="status-dot status-online" style="width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: #22c55e; box-shadow: 0 0 8px #22c55e;"></span>
<span style="flex:1; font-size: 0.75rem; font-weight: 600; color: white;">
<span lang="en">Connected</span><span lang="de">Verbunden</span>
</span>
<button class="mock-btn" style="width: auto; padding: 4px 8px; font-size: 0.65rem; border: none; background: #334155; color: white; border-radius: 6px; cursor: pointer;" title="Copy logs to clipboard for sharing">
<span lang="en">Copy Logs</span><span lang="de">Logs kopieren</span>
</button>
</div>
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Technical details about the currently selected video element">
<span lang="en">Video Debug Info</span><span lang="de">Video-Debug-Info</span>
</label>
<div class="mock-card" style="font-size: 0.65rem; font-family: monospace; color: var(--text-muted); line-height: 1.4; margin-bottom: 12px;">
<div>readyState: HAVE_ENOUGH_DATA</div>
<div>seekDelta: 0.05s</div>
<div>buffered: 300.2s</div>
<div>engineState: <span style="color:#22c55e; font-weight:700;">SYNCED</span></div>
</div>
<label style="display: block; font-size: 11px; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; font-weight: 700;" title="Chronological log of all sync commands in the room">
<span lang="en">Full Action History</span><span lang="de">Aktivitätsverlauf</span>
</label>
<div class="mock-card" style="font-size: 0.65rem; color: var(--text-muted); line-height: 1.4; margin-bottom: 12px; max-height: 100px; overflow-y: auto; display: flex; flex-direction: column; gap: 4px;">
<div style="display: flex; justify-content: space-between; border-bottom: 1px solid #334155; padding-bottom: 4px;">
<span>CoolUsername: PAUSE</span>
<span style="opacity: 0.5;">0:55</span>
</div>
<div style="display: flex; justify-content: space-between; padding-top: 2px;">
<span>KoalaPC: PLAY</span>
<span style="opacity: 0.5;">0:00</span>
</div>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px;">
<label style="margin: 0; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700;" title="Technical connection logs for debugging">
<span lang="en">Logs (Last 50)</span><span lang="de">Protokoll (Letzte 50)</span>
</label>
<button class="mock-btn" style="background:transparent; border:none; color:var(--accent); font-size:10px; cursor:default; padding: 0; font-weight: 700;" title="Clear log output">
<span lang="en">CLEAR</span><span lang="de">LÖSCHEN</span>
</button>
</div>
<div style="max-height: 120px; overflow-y: auto; font-size: 0.65rem; font-family: monospace; background: #000; padding: 8px 10px; border-radius: 8px; color: #ccc; line-height: 1.4;">
<div style="color:#22c55e;">[18:37:32] EVENT: PLAY -&gt; ACK</div>
<div>[18:37:32] FORCE_SYNC -&gt; 0.05s diff</div>
<div>[18:37:38] EVENT: PAUSE -&gt; BROADCAST</div>
<div style="color:var(--text-muted);">[18:37:42] content_heartbeat: active</div>
</div>
<div style="margin-top: 16px; text-align: center; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 10px; flex-shrink: 0;">
<a href="https://github.com/Shik3i/KoalaSync" target="_blank" style="color: var(--text-muted); text-decoration: none; font-size: 10px; opacity: 0.6; display: block;">GitHub Repository</a>
<div style="color: var(--text-muted); font-size: 9px; opacity: 0.4; margin-top: 4px;">v1.9.3</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<section class="compat-section">
<div class="container">
<img src="assets/PlatformJuggler_New.webp" alt="A cute koala juggling multiple browser tabs showing streaming platforms" class="compat-mascot" lang="en" width="300" height="233" loading="lazy" data-reveal>
<img src="assets/PlatformJuggler_New.webp" alt="Ein niedlicher Koala jongliert mit mehreren Browser-Tabs, auf denen verschiedene Streamingdienste laufen" class="compat-mascot" lang="de" width="300" height="233" loading="lazy" data-reveal>
<p class="compat-heading" data-reveal>
<span lang="en">Works on your favorite platforms</span>
<span lang="de">Funktioniert auf deinen Lieblingsplattformen</span>
</p>
<div class="compat-row" data-reveal>
<div class="compat-logo">
<img src="assets/netflix.svg" alt="Netflix" width="24" height="24">
<span>Netflix</span>
</div>
<div class="compat-logo">
<img src="assets/youtube.svg" alt="YouTube" width="24" height="24">
<span>YouTube</span>
</div>
<div class="compat-logo">
<img src="assets/twitch.svg" alt="Twitch" width="24" height="24">
<span>Twitch</span>
</div>
<div class="compat-logo">
<img src="assets/primevideo.svg" alt="Prime Video" width="24" height="24">
<span>Prime Video</span>
</div>
<div class="compat-logo">
<img src="assets/jellyfin.svg" alt="Jellyfin" width="24" height="24">
<span>Jellyfin</span>
</div>
<div class="compat-logo">
<img src="assets/emby.svg" alt="Emby" width="24" height="24">
<span>Emby</span>
</div>
<div class="compat-logo compat-more">
<span class="compat-more-icon">+</span>
<span lang="en">and many more</span><span lang="de">und viele mehr</span>
<div class="compat-tooltip">
<span lang="en">Works on almost any site with a video element</span>
<span lang="de">Funktioniert auf fast jeder Seite mit einem Video-Element</span>
</div>
</div>
</div>
</div>
</section>
<section id="use-cases" class="use-cases-section">
<div class="container">
<h2 class="section-title" data-reveal style="text-align: center; font-size: 2.2rem; margin-bottom: 1rem;">
<span lang="en">Perfect for Any Occasion</span>
<span lang="de">Perfekt für jeden Anlass</span>
</h2>
<p class="section-subtitle" data-reveal style="text-align: center; color: var(--text-muted); margin-bottom: 3.5rem; max-width: 600px; margin-left: auto; margin-right: auto;">
<span lang="en">Whether near or far, KoalaSync brings people together around their favorite videos.</span>
<span lang="de">Ob nah oder fern, KoalaSync bringt Menschen bei ihren Lieblingsvideos zusammen.</span>
</p>
<div class="use-cases-grid">
<div class="use-case-card" data-reveal>
<h3>
<span class="use-case-icon">🍿</span>
<span lang="en">Movie Night with Friends</span>
<span lang="de">Filmabend mit Freunden</span>
</h3>
<p lang="en">Sync your movies in real time and talk via Discord, Zoom, or your favorite voice call application. It feels just like sitting in the same room.</p>
<p lang="de">Synchronisiere eure Filme in Echtzeit und quatscht nebenbei auf Discord, Zoom oder im Tool eurer Wahl. Es fühlt sich an, als säßet ihr im selben Raum.</p>
</div>
<div class="use-case-card" data-reveal>
<h3>
<span class="use-case-icon">🎓</span>
<span lang="en">Remote Learning</span>
<span lang="de">Remote Learning</span>
</h3>
<p lang="en">Analyze online tutorials, lectures, or developer training streams together with classmates or colleagues. Pause and discuss complex steps in perfect harmony.</p>
<p lang="de">Analysiert Online-Tutorials, Vorlesungen oder Streams gemeinsam mit Mitschülern oder Kollegen. Pausiert und besprecht komplizierte Schritte in perfektem Sync.</p>
</div>
<div class="use-case-card" data-reveal>
<h3>
<span class="use-case-icon">💖</span>
<span lang="en">Long-Distance Relationships</span>
<span lang="de">Paare auf Distanz</span>
</h3>
<p lang="en">Bridge the distance and enjoy date nights. Experience every plot twist, laugh at the same jokes, and share emotional moments at the exact same millisecond.</p>
<p lang="de">Überbrückt die Distanz und genießt gemeinsame Date-Nächte. Erlebt jeden Plot-Twist, lacht über dieselben Witze und teilt emotionale Momente zur selben Millisekunde.</p>
</div>
</div>
</div>
</section>
<section id="features">
<div class="container">
<h2 style="font-size: 2.5rem; text-align: center; margin-bottom: 1rem;">
<span lang="en">Why KoalaSync?</span><span lang="de">Warum KoalaSync?</span>
</h2>
<p style="text-align: center; color: var(--text-muted); margin-bottom: 4rem;">
<span lang="en">Built for reliable sync, privacy-first design, and easy setup.</span>
<span lang="de">Entwickelt für zuverlässigen Sync, Datenschutz und einfache Einrichtung.</span>
</p>
<div class="features-grid">
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon"></span>
<span lang="en">Full Control / Instant Sync</span>
<span lang="de">Volle Kontrolle & Echtzeit</span>
</h3>
<p lang="en">One pauses, everyone pauses. One seeks, everyone follows. Our two-phase sync protocol coordinates playback in real time across all participants.</p>
<p lang="de">Einer pausiert, alle pausieren. Einer spult, alle folgen. Unser Zwei-Phasen-Synchronisationsprotokoll koordiniert die Wiedergabe aller Teilnehmer in Echtzeit.</p>
</div>
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon">🎬</span>
<span lang="en">Endless Binge-Watching</span>
<span lang="de">Grenzenloses Bingen</span>
</h3>
<p lang="en">Autoplay in sync. KoalaSync automatically detects episode transitions and holds playback until all peers have successfully loaded the next video.</p>
<p lang="de">Nächste Episode startet für jeden zeitgleich. KoalaSync erkennt den Episodenwechsel und pausiert, bis jeder Teilnehmer das neue Video fertig geladen hat.</p>
</div>
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon">🛡️</span>
<span lang="en">Zero Accounts / Pure Privacy</span>
<span lang="de">Keine Accounts / Datenschutz</span>
</h3>
<p lang="en">No registration, no tracking, no bullshit. Just share a link and watch. The server runs entirely in RAM and purges your room when you leave.</p>
<p lang="de">Kein Login. Keine Daten. Einfach Link teilen und schauen. Der Server läuft flüchtig im RAM und löscht deinen Raum komplett nach dem Verlassen.</p>
</div>
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon">🌐</span>
<span lang="en">Universal HTML5 Support</span>
<span lang="de">Universeller HTML5-Support</span>
</h3>
<p lang="en">Works on YouTube, Twitch, Netflix, Jellyfin, Emby, and any standard webpage containing a HTML5 video element. Also compatible with custom self-hosted setups.</p>
<p lang="de">Unterstützt YouTube, Twitch, Netflix, Jellyfin, Emby und jede beliebige Webseite mit einem HTML5-Video-Tag. Ideal auch für eigene Medienbibliotheken.</p>
</div>
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon">🐳</span>
<span lang="en">Self-Hostable & Docker-Ready</span>
<span lang="de">Self-Hostable & Docker-Ready</span>
</h3>
<p lang="en">Our official servers are free and fast, but you <strong>can</strong> take full ownership if you want to. Launch your own private relay server in seconds via Docker.</p>
<p lang="de">Unsere Server sind kostenlos und schnell, aber du <strong>kannst</strong> auch die volle Kontrolle übernehmen, wenn du willst. Starte dein eigenes privates Relay in Sekunden via Docker.</p>
</div>
<div class="feature-card" data-reveal>
<h3>
<span class="feature-icon">🔗</span>
<span lang="en">Instant Invites / 1-Click Join</span>
<span lang="de">Direkte Einladungen & 1-Klick Beitritt</span>
</h3>
<p lang="en">No IP addresses or passwords to exchange. Share a generated invite link with your friends to let them join your room automatically with a single click.</p>
<p lang="de">Keine lästigen IPs oder Passwörter austauschen. Teile einfach einen Einladungslink mit deinen Freunden, um sie mit einem Klick in den Raum zu holen.</p>
</div>
</div>
</div>
</section>
<section id="comparison" class="comparison-section">
<div class="container">
<h2 class="section-title" data-reveal style="text-align: center; font-size: 2.2rem; margin-bottom: 1rem;">
<span lang="en">KoalaSync vs. Teleparty</span>
<span lang="de">KoalaSync vs. Teleparty</span>
</h2>
<p class="section-subtitle" data-reveal style="text-align: center; color: var(--text-muted); margin-bottom: 3.5rem; max-width: 600px; margin-left: auto; margin-right: auto;">
<span lang="en">See why open source, ad-free and privacy-first is the superior way to watch together.</span>
<span lang="de">Erfahre, warum Open Source, werbefrei und Datenschutz der bessere Weg zum gemeinsamen Schauen sind.</span>
</p>
<div class="comparison-table-wrapper" data-reveal>
<table class="comparison-table">
<thead>
<tr>
<th><span lang="en">Feature</span><span lang="de">Funktion</span></th>
<th class="highlight">KoalaSync</th>
<th>Teleparty</th>
</tr>
</thead>
<tbody>
<tr>
<td class="feat-name">
<strong><span lang="en">Cost / Paywalls</span><span lang="de">Kosten / Paywalls</span></strong>
<span class="feat-desc"><span lang="en">Premium subscriptions, hidden fees or locked features.</span><span lang="de">Premium-Abos, versteckte Kosten oder gesperrte Funktionen.</span></span>
</td>
<td class="check highlight"><span lang="en">100% Free</span><span lang="de">100% Kostenlos</span></td>
<td class="cross">
<span lang="en">Paid Tiers / Premium Locks</span><span lang="de">Premium-Abo / Paywalls</span>
<a href="https://www.teleparty.com/premium" target="_blank" rel="noopener noreferrer" class="source-link" title="See Teleparty Premium Pricing"><sup>[1]</sup></a>
</td>
</tr>
<tr>
<td class="feat-name">
<strong><span lang="en">License / Code Auditable</span><span lang="de">Lizenz / Quellcode</span></strong>
<span class="feat-desc"><span lang="en">Whether the source code is open and freely auditable.</span><span lang="de">Ob der Quellcode quelloffen und frei einsehbar ist.</span></span>
</td>
<td class="check highlight"><span lang="en">Open Source (MIT)</span><span lang="de">Open Source (MIT)</span></td>
<td class="cross">
<span lang="en">Proprietary</span><span lang="de">Proprietär</span>
<a href="https://www.teleparty.com/privacy" target="_blank" rel="noopener noreferrer" class="source-link" title="See Teleparty Privacy Policy"><sup>[2]</sup></a>
</td>
</tr>
<tr>
<td class="feat-name">
<strong><span lang="en">Self-Hosting</span><span lang="de">Self-Hosting</span></strong>
<span class="feat-desc"><span lang="en">Ability to deploy your own private relay server.</span><span lang="de">Möglichkeit, einen eigenen privaten Relay-Server zu betreiben.</span></span>
</td>
<td class="check highlight"><span lang="en">Yes (Docker-ready)</span><span lang="de">Ja (Docker-bereit)</span></td>
<td class="cross">
<span lang="en">No</span><span lang="de">Nein</span>
<a href="https://www.teleparty.com/privacy" target="_blank" rel="noopener noreferrer" class="source-link" title="See Teleparty Privacy Policy"><sup>[2]</sup></a>
</td>
</tr>
<tr>
<td class="feat-name">
<strong><span lang="en">Privacy &amp; Tracking</span><span lang="de">Datenschutz &amp; Tracking</span></strong>
<span class="feat-desc"><span lang="en">Registration requirements, tracking cookies and analytics.</span><span lang="de">Registrierungszwang, Tracking-Cookies und Analysen.</span></span>
</td>
<td class="check highlight"><span lang="en">Zero-Persistence (RAM-only)</span><span lang="de">Keine Speicherung (RAM-only)</span></td>
<td class="cross">
<span lang="en">Google Analytics &amp; Cookies</span><span lang="de">Google Analytics &amp; Cookies</span>
<a href="https://www.teleparty.com/privacy" target="_blank" rel="noopener noreferrer" class="source-link" title="See Teleparty Privacy Policy"><sup>[2]</sup></a>
</td>
</tr>
<tr>
<td class="feat-name">
<strong><span lang="en">Site Compatibility</span><span lang="de">Kompatibilität</span></strong>
<span class="feat-desc"><span lang="en">Supported websites and player compatibility.</span><span lang="de">Unterstützte Webseiten und Player-Kompatibilität.</span></span>
</td>
<td class="check highlight"><span lang="en">Any HTML5 Video</span><span lang="de">Jedes HTML5-Video</span></td>
<td class="cross">
<span lang="en">Supported sites only</span><span lang="de">Nur unterstützte Seiten</span>
<a href="https://www.teleparty.com/premium" target="_blank" rel="noopener noreferrer" class="source-link" title="See Teleparty Premium Platforms"><sup>[1]</sup></a>
</td>
</tr>
</tbody>
</table>
<div class="table-footnotes">
<p style="opacity: 0.55; font-size: 0.65rem; margin-bottom: 0.4rem; display: block;">
<span lang="en">* Comparison state: May 2026.</span>
<span lang="de">* Stand des Vergleichs: Mai 2026.</span>
</p>
<p>
<sup>[1]</sup>
<span lang="en">Official Teleparty Premium pricing and supported networks details:</span>
<span lang="de">Details zu Preisen und unterstützten Netzwerken von Teleparty Premium:</span>
<a href="https://www.teleparty.com/premium" target="_blank" rel="noopener noreferrer">teleparty.com/premium</a>
</p>
<p>
<sup>[2]</sup>
<span lang="en">Teleparty privacy policies and tracking data collection:</span>
<span lang="de">Datenschutzerklärung und Tracker-Erfassung von Teleparty:</span>
<a href="https://www.teleparty.com/privacy" target="_blank" rel="noopener noreferrer">teleparty.com/privacy</a>
</p>
</div>
</div>
</div>
</section>
<section id="how-it-works" style="background: rgba(255,255,255,0.02)">
<div class="container">
<h2 style="font-size: 2.5rem; text-align: center; margin-bottom: 4rem;">
<span lang="en">Getting Started</span><span lang="de">Loslegen</span>
</h2>
<div class="steps">
<div class="step">
<div class="step-text" data-reveal>
<div class="step-num">01</div>
<h3><span lang="en">Install Extension</span><span lang="de">Erweiterung installieren</span></h3>
<p lang="en">Add KoalaSync to your browser from the Chrome Web Store, Firefox Add-ons, or download the latest developer ZIP from GitHub.</p>
<p lang="de">Füge KoalaSync aus dem Chrome Web Store, den Firefox Add-ons oder über die Entwickler-ZIP von GitHub zu deinem Browser hinzu.</p>
</div>
<!-- Custom Step 1 Illustration -->
<div class="step-illustration-1" data-reveal>
<div class="illus-browser-bar">
<div class="illus-browser-header">
<div class="illus-dots">
<span class="illus-dot"></span>
<span class="illus-dot"></span>
<span class="illus-dot"></span>
</div>
<div class="illus-address-bar"></div>
<div class="illus-extension-icon"><img src="assets/logo.png" alt="KoalaSync" width="12" height="12" style="width: 12px; height: 12px; display: block; object-fit: contain;"></div>
</div>
<div class="illus-browser-body">
<div class="illus-line-placeholder" style="width: 80%;"></div>
<div class="illus-line-placeholder" style="width: 50%;"></div>
<div class="illus-line-placeholder" style="width: 90%;"></div>
</div>
</div>
</div>
</div>
<div class="step">
<div class="step-text" data-reveal>
<div class="step-num">02</div>
<h3><span lang="en">Create a Room</span><span lang="de">Raum erstellen</span></h3>
<p lang="en">Open the extension, enter a Room ID and Password, and hit Join. Your secure synchronization space is ready.</p>
<p lang="de">Öffnen Sie die Erweiterung, geben Sie eine Raum-ID und ein Passwort ein und klicken Sie auf Beitreten. Ihr sicherer Synchronisationsraum ist bereit.</p>
</div>
<!-- Custom Step 2 Illustration -->
<div class="step-illustration-2" data-reveal>
<div class="illus-form-box">
<div class="illus-form-field">
<div class="illus-line-placeholder" style="width: 30%; height: 6px;"></div>
<div class="illus-form-input">
<div class="illus-typing-text">brave-eagle-80</div>
</div>
</div>
<div class="illus-form-btn">
<span lang="en">CREATE ROOM</span><span lang="de">RAUM ERSTELLEN</span>
</div>
</div>
</div>
</div>
<div class="step">
<div class="step-text" data-reveal>
<div class="step-num">03</div>
<h3><span lang="en">Share & Sync</span><span lang="de">Teilen & Synchronisieren</span></h3>
<p lang="en">Send the invite link to your friends. Once they join, select your video tab and enjoy synchronized playback.</p>
<p lang="de">Senden Sie den Einladungslink an Ihre Freunde. Sobald sie beitreten, wählen Sie Ihren Video-Tab aus und genießen Sie die synchronisierte Wiedergabe.</p>
</div>
<!-- Custom Step 3 Illustration -->
<div class="step-illustration-3" data-reveal>
<div class="illus-players-container">
<div class="illus-mini-player">
<div class="illus-video-screen">
<div class="illus-play-icon"></div>
</div>
<div class="illus-player-timeline">
<div class="illus-timeline-bar">
<div class="illus-timeline-progress"></div>
</div>
</div>
</div>
<div class="illus-sync-connection">
<div class="illus-sync-line">
<div class="illus-sync-pulse"></div>
</div>
<span class="illus-sync-label">IN SYNC</span>
</div>
<div class="illus-mini-player">
<div class="illus-video-screen">
<div class="illus-play-icon"></div>
</div>
<div class="illus-player-timeline">
<div class="illus-timeline-bar">
<div class="illus-timeline-progress"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Self Hosters Paradise Section -->
<section id="self-hosting" style="background: rgba(15, 23, 42, 0.4); border-top: 1px solid var(--glass-border); border-bottom: 1px solid var(--glass-border);">
<div class="container">
<h2 style="font-size: 2.5rem; text-align: center; margin-bottom: 1rem;">
<span lang="en">For Self-Hosters</span><span lang="de">Für Self-Hoster</span>
</h2>
<p style="text-align: center; color: var(--text-muted); margin-bottom: 3rem; max-width: 600px; margin-left: auto; margin-right: auto;">
<span lang="en">Maintain full data sovereignty. Deploy your own private relay server in minutes.</span>
<span lang="de">Behalte die volle Datenhoheit. Richte deinen eigenen privaten Relay-Server in wenigen Minuten ein.</span>
</p>
<div class="terminal-container" data-reveal>
<div class="terminal-header">
<div class="terminal-dots">
<span class="terminal-dot red"></span>
<span class="terminal-dot yellow"></span>
<span class="terminal-dot green"></span>
</div>
<div class="terminal-tabs">
<button class="terminal-tab-btn active" data-tab="pane-docker">docker-compose.yml</button>
<button class="terminal-tab-btn" data-tab="pane-caddy">Caddyfile</button>
</div>
</div>
<div class="terminal-body">
<button class="terminal-copy-btn">
📋 <span lang="en">Copy Code</span><span lang="de">Code kopieren</span>
</button>
<div id="pane-docker" class="terminal-pane active">
<pre><code><span class="t-key">services:</span>
<span class="t-key">koala-sync:</span>
<span class="t-key">image:</span> <span class="t-str">ghcr.io/shik3i/koalasync:latest</span>
<span class="t-key">container_name:</span> <span class="t-str">KoalaSync</span>
<span class="t-key">restart:</span> <span class="t-str">always</span>
<span class="t-comment"># Access internally by proxying to container port 3000</span>
<span class="t-key">environment:</span>
<span class="t-key">-</span> <span class="t-str">TZ=Europe/Berlin</span>
<span class="t-key">-</span> <span class="t-str">PORT=3000</span>
<span class="t-key">-</span> <span class="t-str">MIN_VERSION=1.0.0</span>
<span class="t-key">-</span> <span class="t-str">MAX_ROOMS=100</span>
<span class="t-key">-</span> <span class="t-str">MAX_PEERS_PER_ROOM=50</span>
<span class="t-key">pids_limit:</span> <span class="t-val">2048</span></code></pre>
<div style="margin-top: 1rem; font-size: 0.75rem; text-align: right; padding-right: 0.5rem;">
<a href="https://github.com/Shik3i/KoalaSync/pkgs/container/koalasync" target="_blank" style="color: var(--accent); text-decoration: none; display: inline-flex; align-items: center; gap: 6px; font-weight: 600; transition: opacity 0.2s; opacity: 0.85;">
📦 <span lang="en">View all image tags on GitHub Packages</span><span lang="de">Alle Image-Tags auf GitHub Packages ansehen</span>
</a>
</div>
</div>
<div id="pane-caddy" class="terminal-pane">
<pre><code><span class="t-key">sync.koalastuff.net</span> {
<span class="t-comment"># Specify the web root inside the container</span>
<span class="t-key">root</span> <span class="t-val">*</span> <span class="t-str">/var/www/html</span>
<span class="t-comment"># Enable static file server to deliver HTML, CSS, JS</span>
<span class="t-key">file_server</span>
}
<span class="t-key">syncserver.koalastuff.net</span> {
<span class="t-key">reverse_proxy</span> <span class="t-val">KoalaSync:3000</span>
}</code></pre>
</div>
</div>
</div>
</div>
</section>
<section style="text-align: center; border-top: 1px solid var(--glass-border); padding: 6rem 0;">
<div class="container">
<h2 data-reveal style="font-size: 2.2rem; margin-bottom: 1rem;">
<span lang="en">Not convinced? See for yourself.</span>
<span lang="de">Noch nicht überzeugt? Überzeug dich selbst.</span>
</h2>
<p data-reveal style="margin-bottom: 3rem; color: var(--text-muted); max-width: 650px; margin-left: auto; margin-right: auto; line-height: 1.6; font-size: 1.05rem;">
<span lang="en">KoalaSync is 100% open source, ad-free and tracking-free. Audit our codebase on GitHub or install the browser extension directly.</span>
<span lang="de">KoalaSync ist zu 100 % Open Source, werbefrei und trackingsicher. Überprüfe unseren Code auf GitHub oder installiere direkt die Browser-Erweiterung.</span>
</p>
<div class="cta-group" data-reveal style="justify-content: center; gap: 1rem;">
<a href="https://chromewebstore.google.com/detail/koalasync/obbnmkmlaaddodakcbdljknjpagklifc" class="btn btn-primary">
<img src="assets/chrome.svg" alt="Chrome" width="20" height="20">
<span lang="en">Add to Chrome</span><span lang="de">Zu Chrome hinzufügen</span>
</a>
<a href="https://addons.mozilla.org/de/firefox/addon/koalasync/" class="btn btn-firefox">
<img src="assets/firefox.svg" alt="Firefox" width="20" height="20">
<span lang="en">Add to Firefox</span><span lang="de">Zu Firefox hinzufügen</span>
</a>
<a href="https://github.com/Shik3i/KoalaSync" target="_blank" class="btn btn-secondary" style="display: inline-flex; align-items: center; gap: 8px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true" style="display: block;"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
GitHub
</a>
</div>
</div>
</section>
<footer>
<div class="container">
<p>&copy; 2026 KoalaSync. Open source under the MIT License.</p>
<p lang="en" style="font-size: 0.8rem; margin-top: 0.5rem;">No data is stored on our servers. Pure RAM-based relay.</p>
<p lang="de" style="font-size: 0.8rem; margin-top: 0.5rem;">Keine Daten werden auf unseren Servern gespeichert. Reines RAM-basiertes Relay.</p>
<div style="margin-top: 1.5rem; font-size: 0.8rem; display: flex; justify-content: center; gap: 1.5rem;">
<a href="impressum.html" style="color: var(--text-muted); text-decoration: none;"><span lang="en">Legal Notice</span><span lang="de">Impressum</span></a>
<a href="datenschutz.html" style="color: var(--text-muted); text-decoration: none;"><span lang="en">Privacy Policy</span><span lang="de">Datenschutz</span></a>
</div>
</div>
</footer>
<script src="app.js"></script>
</body>
</html>