Files
Hightube/website/index.html
2026-06-24 10:44:38 +08:00

345 lines
13 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta
name="description"
content="Hightube is an open source, cross-platform live streaming platform built with Flutter and Go."
/>
<title>Hightube | Open Source Live Streaming Platform</title>
<link rel="icon" href="assets/hightube-icon.png" />
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<header class="topbar">
<a class="brand" href="#home" aria-label="Hightube home">
<img src="assets/hightube-icon.png" alt="" />
<span>Hightube</span>
</a>
<nav class="nav" aria-label="Primary navigation">
<a href="#architecture">Architecture</a>
<a href="#features">Features</a>
<a href="#downloads">Downloads</a>
<a href="#source">Source</a>
<a class="nav-cta" href="https://stream.nudt.space" target="_blank" rel="noopener">Try Now</a>
</nav>
<div class="topbar-actions">
<button class="theme-toggle" data-state="auto" aria-label="Theme: Auto" title="Theme: Auto — click to force Light">
<svg class="icon-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
<svg class="icon-moon" viewBox="0 0 24 24"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
<svg class="icon-auto" viewBox="0 0 24 24"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
</button>
<button class="hamburger" aria-label="Toggle navigation" aria-expanded="false">
<span></span>
<span></span>
<span></span>
</button>
</div>
</header>
<main id="home">
<section class="hero">
<div class="hero-copy">
<p class="eyebrow">Flutter + Go live streaming stack</p>
<h1>Hightube</h1>
<p class="lead">
An open source live streaming platform designed for creators,
private communities, classrooms, labs, and self-hosted media
services.
</p>
<div class="actions">
<a class="button primary" href="#downloads">Download builds</a>
<a
class="button secondary"
href="https://git.nudt.space/Highground-Soft/Hightube.git"
rel="noopener"
>
View source
</a>
</div>
</div>
<div class="hero-panel" aria-label="Hightube platform overview">
<div class="device-window">
<div class="window-bar">
<span></span>
<span></span>
<span></span>
</div>
<div class="stream-preview">
<div class="live-badge">LIVE</div>
<div class="play-symbol"></div>
</div>
<div class="stats-grid">
<div>
<strong>Flutter</strong>
<span>Client UI</span>
</div>
<div>
<strong>Go</strong>
<span>Backend API</span>
</div>
<div>
<strong>RTMP</strong>
<span>Streaming</span>
</div>
<div>
<strong>Open</strong>
<span>Source</span>
</div>
</div>
</div>
</div>
</section>
<section id="architecture" class="section">
<div class="section-heading">
<p class="eyebrow">Architecture</p>
<h2>Built with Flutter clients and a Go streaming backend</h2>
<p>
Hightube separates a portable client experience from a compact,
self-hostable backend, keeping deployment simple while leaving room
for native desktop, mobile, and web clients.
</p>
</div>
<div class="architecture-grid">
<article class="architecture-card">
<div class="icon">F</div>
<h3>Flutter frontends</h3>
<p>
One UI technology stack targets Linux, Android, Web, and future
desktop builds with consistent interaction patterns.
</p>
</article>
<article class="architecture-card">
<div class="icon">G</div>
<h3>Go backend</h3>
<p>
The server handles API requests, authentication, live room state,
RTMP publishing, HTTP-FLV playback, chat, and monitoring.
</p>
</article>
<article class="architecture-card">
<div class="icon">S</div>
<h3>Self-hosted streaming</h3>
<p>
Deploy the server on your own Linux host and connect compatible
broadcasters such as OBS through standard RTMP workflows.
</p>
</article>
</div>
</section>
<section id="features" class="section feature-band">
<div class="section-heading">
<p class="eyebrow">Project highlights</p>
<h2>Open, free, and cross-platform by design</h2>
</div>
<div class="feature-list">
<div class="feature-item">
<h3>Open source freedom</h3>
<p>
Read, modify, build, and deploy the platform from source without
vendor lock-in.
</p>
</div>
<div class="feature-item">
<h3>Cross-platform clients</h3>
<p>
Current builds include Linux, Web, and Android client packages,
with Windows builds planned later.
</p>
</div>
<div class="feature-item">
<h3>Practical live features</h3>
<p>
Live rooms, RTMP publishing, HTTP-FLV playback, multi-quality
transcoding, chat, danmaku-style messages, and admin monitoring.
</p>
</div>
<div class="feature-item">
<h3>Small deployment surface</h3>
<p>
The Go server uses a lightweight runtime model and can be deployed
as a single Linux server component.
</p>
</div>
</div>
</section>
<section id="downloads" class="section">
<div class="section-heading">
<p class="eyebrow">Downloads</p>
<h2>Get the current executable builds</h2>
<p>
All builds are distributed through the project release page. Apple
device builds are not provided at this time.
</p>
</div>
<div class="download-grid">
<article class="download-card available">
<span class="status">Available</span>
<h3>Linux server</h3>
<p>Backend service for self-hosted streaming deployments.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-server_amd64_v1.0.0"
rel="noopener"
>
Download Linux server
</a>
</article>
<article class="download-card available">
<span class="status">Available</span>
<h3>Linux client</h3>
<p>Desktop Flutter client packaged as an AppImage.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-linux-amd64-v1.0.0.AppImage"
rel="noopener"
>
Download Linux AppImage
</a>
</article>
<article class="download-card available">
<span class="status">Available</span>
<h3>Android client</h3>
<p>ARM64 Android APK build for mobile viewing and interaction.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-android-arm64-v8a-v1.0.0.apk"
rel="noopener"
>
Download Android APK
</a>
</article>
<article class="download-card available">
<span class="status">Available</span>
<h3>Web client</h3>
<p>Static web build archive for hosting the Flutter web frontend.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-web-v1.0.0.tar.gz"
rel="noopener"
>
Download Web archive
</a>
</article>
<article class="download-card available">
<span class="status">Available</span>
<h3>Windows server</h3>
<p>Server executable for Windows environments.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-server_amd64_v1.0.0.exe"
rel="noopener"
>
Download Windows server
</a>
</article>
<article class="download-card available">
<span class="status">Available</span>
<h3>Windows client</h3>
<p>Desktop client build for Windows users.</p>
<a
class="download-link"
href="https://git.nudt.space/Highground-Soft/Hightube/releases/download/v1.0.0/hightube-win_amd64_v1.0.0.zip"
rel="noopener"
>
Download Windows client
</a>
</article>
</div>
</section>
<section id="source" class="section source-section">
<div>
<p class="eyebrow">Source code</p>
<h2>Build it, audit it, host it your way</h2>
<p>
Hightube is developed as an open source project. Clone the source,
inspect the Flutter and Go code, build your own binaries, and adapt
it for your own live platform.
</p>
</div>
<a
class="button primary"
href="https://git.nudt.space/Highground-Soft/Hightube.git"
rel="noopener"
>
Open repository
</a>
</section>
</main>
<script>
(function () {
/* ---- hamburger menu ---- */
var btn = document.querySelector('.hamburger');
var nav = document.querySelector('.nav');
if (btn && nav) {
btn.addEventListener('click', function () {
var open = nav.classList.toggle('open');
btn.setAttribute('aria-expanded', open);
});
}
/* ---- theme toggle ---- */
var toggle = document.querySelector('.theme-toggle');
if (!toggle) return;
var STATES = ['auto', 'light', 'dark'];
var LABELS = {
auto: 'Theme: Auto — click to force Light',
light: 'Theme: Light — click to force Dark',
dark: 'Theme: Dark — click to return to Auto'
};
function getTheme() {
return localStorage.getItem('theme') || 'auto';
}
function applyTheme(state) {
if (state === 'light') {
document.documentElement.setAttribute('data-theme', 'light');
} else if (state === 'dark') {
document.documentElement.setAttribute('data-theme', 'dark');
} else {
document.documentElement.removeAttribute('data-theme');
}
toggle.setAttribute('data-state', state);
toggle.setAttribute('aria-label', 'Theme: ' + state.charAt(0).toUpperCase() + state.slice(1));
toggle.setAttribute('title', LABELS[state]);
localStorage.setItem('theme', state);
}
function nextTheme(current) {
var idx = STATES.indexOf(current);
return STATES[(idx + 1) % STATES.length];
}
// init
var current = getTheme();
applyTheme(current);
toggle.addEventListener('click', function () {
applyTheme(nextTheme(getTheme()));
});
// listen for system changes (only matters in auto mode)
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
if (getTheme() === 'auto') {
// force a repaint by re-applying auto
applyTheme('auto');
}
});
})();
</script>
<footer class="footer">
<span class="footer-hide-mobile">Hightube</span>
<span>Built with ❤️ by HighGround-soft 2026</span>
<span class="footer-hide-mobile">Open Source Live Platform</span>
</footer>
</body>
</html>