mHub
Otwarta platforma · Addon Protocol v2 · Browser API

Każdy pomysł. Każdy ekran.

Zbuduj aplikację radiową w jedno popołudnie.

mHub to otwarta platforma, która zamienia foldery prostych plików i zwykłe strony internetowe w aplikacje na telefony, telewizory i komputery. Nie musisz być programistą: jeśli potrafisz opisać, czego chcesz, AI może to zbudować, a mHub da temu miejsce do działania.

Działa w Vypn i każdej przeglądarce mHub Open source, MIT Bez kompilacji, bez konta Działa na telefonach, telewizorach i komputerach
Vuma na telewizorze: wyróżniony program DW nad rzędami filmów dokumentalnych i materiałów biznesowych, z katalogami dodatku u góry.
Vuma, aplikacja mHub, na telewizorze. Wszystko na tym ekranie pochodzi z jednego dodatku: DW.
Koncepcja

Jedna platforma, trzy części.

mHub to nie jedna aplikacja. To trzy części, które do siebie pasują, i każda z nich jest otwarta. Dwie są fundamentami: format treści i API przeglądarki. Trzecia to aplikacje, a każda z nich opiera się na jednym fundamencie albo na obu.

01

Aplikacje

To, czego faktycznie używasz. Vuma zamienia dodatki w jeden ekran do przeglądania, a inne aplikacje przenoszą każda po jednym pomyśle na każdy ekran w domu. Wszystkie są aplikacjami webowymi: nic nie trzeba instalować. Zobacz aplikacje

02

Treść: dodatki

Dodatek to źródło treści: filmy, stacje radiowe, podcasty, kursy. Od środka to folder małych plików tekstowych na dowolnym hostingu, opisany przez Addon Protocol v2. AI może go dla ciebie napisać. Zobacz protokół

03

Możliwości: window.mhub

Otwórz zwykłą stronę w aplikacji mHub, a będzie mogła robić rzeczy, na które przeglądarka nigdy nie pozwala: czytać dane z dowolnego miejsca, przetrwać martwą domenę, zamieszkać na twoim telewizorze. Jedna przestrzeń nazw, jeden tag script: mHub Browser API. Zobacz API

Część pierwsza · Aplikacje

Nasze ulubione. Wszystkie już działają.

Vuma opiera się na obu fundamentach; aplikacje obok niej pokazują, jak daleko można zajść na jednym. Pięć aplikacji, pięć różnych pomysłów, i każda z nich to dobry punkt wyjścia.

Vuma

Vuma zamienia dodane dodatki w jeden ekran do przeglądania: każdy katalog, który udostępniają twoje dodatki, wyszukiwanie we wszystkich naraz, biblioteka i odtwarzacz, który wznawia od miejsca, w którym przerwano. To jedna aplikacja webowa, która działa tak samo na telefonach, telewizorach i komputerach, i sama obsługuje dotyk, pilota i mysz.

Opiera się na obu fundamentach: dodatki dostarczają treść, a w przeglądarce mHub Browser API dodaje możliwości, których zwykła strona nigdy nie ma. Możesz ją nawet osadzić na własnej stronie, z własnymi dodatkami i własną nazwą: jeden plik HTML.

Vuma na telefonie: wyróżniony program DW z opisem i przyciskiem Moja lista nad rzędem kanałów telewizyjnych na żywo.
Dodatek DW w aplikacji Vuma na telefonie: wyróżniony materiał informacyjny i przewijana lista klipów.

Waves

Stacje radiowe, podcasty i darmowe audiobooki w jednej aplikacji. Waves to jeden plik HTML na tym samym buildzie Vuma: pięć dodatków audio, turkusowy akcent i addonManager: "fixed", więc źródła są ustalone, a użytkownik tylko je włącza i wyłącza. Podejrzyj kod źródłowy: sama strona jest całym samouczkiem.

Waves: podcast na pierwszym planie nad rzędami stacji radiowych SomaFM, z turkusowym logo fali na pasku bocznym.
Waves: SomaFM, Radio Browser, podcasty i audiobooki, turkus na ciemnym tle. Jeden plik HTML na bazie Vuma.

Junior

Telewizja dla dzieci. Jeden dodatek, jaskrawe kolory, niemiecki od pierwszego ekranu (locale: "de") i addonManager: "hidden": z kanapy nie da się niczego źle ustawić. To także jeden plik HTML na buildzie Vuma.

Junior: animacja KiKA na pierwszym planie nad rzędami programów dla dzieci, po niemiecku, z żółtym logo gwiazdki na pasku bocznym.
Junior: dodatek KiKA i nic poza nim, z gwiazdą na drzwiach.

Mediathek

Dodatek to dane; to, co ktoś na nim zbuduje, to aplikacja. Mediathek to jeden plik HTML bezpośrednio na dodatku ard-mediathek, bez Vuma pod spodem: rzędy, wyszukiwanie, seriale z odcinkami, napisy i odtwarzacz, który pamięta, gdzie przerwano. Dodatek pobiera dane, strona odpowiada za wygląd.

Mediathek: rzędy filmów i seriali ARD z tytułami, datami i czasem trwania oraz pole wyszukiwania.
Mediathek, jeden plik HTML na jednym dodatku, bez niczego własnego do hostowania.

Glance

Drugi fundament w pojedynkę: Glance w ogóle nie używa dodatków. Jeden plik HTML na Browser API, który ściąga na jeden spokojny ekran aktualną pogodę, nagłówki wiadomości, ceny rynkowe i stan twoich własnych serwerów. W zwykłej przeglądarce działa w ograniczonym zakresie; w aplikacji mHub budzi się każdy kafelek.

Glance: zegar, pogoda, ceny rynkowe i nagłówki wiadomości jako spokojne kafelki na jednym ekranie.
Glance, jeden plik HTML, który pobiera aktualną pogodę, nagłówki i ceny.
Co możesz zbudować

Jeden pomysł, jeden folder, każdy ekran.

Wszystko, co ma listę, może być dodatkiem, a wszystko, czego przeglądarka odmawia, może być stroną w mHub. To pomysły, które chcielibyśmy zobaczyć zrealizowane, a każdy z nich dzieli od ciebie jeden prompt: wybierz jeden, a trafi do promptu dla AI poniżej.

Dodatek: folder plików JSON, hostowany gdziekolwiek lub na mhub.mx Strona: jedna strona internetowa na Browser API Aplikacja: Vuma z twoimi dodatkami i twoją nazwą

Oglądaj

Dodatek

Twoja regionalna telewizja

Każda audycja, którą stacja udostępnia online, w rzędach według programu, z wieczornymi wiadomościami na początku.

Dodatek

Festiwal filmowy

Program ze zwiastunami i opisami, do przeglądania według dnia, miejsca i sekcji.

Dodatek

Kino nieme

Filmy z domeny publicznej z Internet Archive, uporządkowane według dekady i reżysera.

Dodatek

Twój klub sportowy

Skróty meczów, całe spotkania i terminarz sezonu jako katalog na żywo.

Dodatek

Miejskie kamery na żywo

Publiczne kamery jednego miasta, port, rynek, góra, jako kanały na żywo.

Dodatek

Sesje rady miasta

Nagrania i transmisje na żywo z rady twojego miasta, według sesji i punktu porządku obrad.

Słuchaj

Dodatek

Twoje stacje radiowe

Dziesięć stacji, których naprawdę słuchasz, z logo, w kolejności, jaką lubisz.

Dodatek

Jedna sieć podcastów

Każdy program jednej sieci z jej kanałów RSS, najnowsze odcinki na początku.

Dodatek

Audiobooki według autora

Nagrania LibriVox jednego autora, rozdziały jako odcinki, z możliwością wznowienia.

Dodatek

Bajki na dobranoc

Krótkie bajki audio dla dzieci, ze spokojną okładką dla każdej bajki i bez reklam.

Dodatek

Wspólnota wyznaniowa

Nabożeństwa i wykłady twojego kościoła, meczetu lub wspólnoty, na żywo i z nagrań.

Aplikacja

Własna aplikacja stacji

Waves ze strumieniami i podcastami jednej stacji oraz jej własnymi kolorami. Jeden plik HTML.

Ucz się

Dodatek

Wykłady jednej uczelni

Publiczne nagrania wykładów, według wydziału i semestru, na telewizorze zamiast na laptopie.

Dodatek

Kurs językowy

Lekcje jako odcinki, po kolei, z ćwiczeniami audio obok filmów.

Dodatek

Zwiedzanie muzeum

Przewodniki wideo i audio po muzeum, sala po sali.

Dodatek

Szkoła gotowania

Filmy z przepisami według rodzaju dania i kuchni, ze składnikami w opisie.

Strona

Przeglądarka archiwum

Przyjazna nakładka na Archive.org lub Project Gutenberg: przeglądaj, szukaj i czytaj jak w aplikacji.

Dodatek

Wystąpienia z jednej konferencji

Każde nagrane wystąpienie z cyklu konferencji, według roku i ścieżki.

Dom i rodzina

Strona

Rodzinny ekran

Pogoda, nagłówki i ceny rzeczy, które cię interesują, na jednym spokojnym ekranie. Ten zbudowaliśmy sami: to Glance.

Strona

Panel sterowania domem

Światła, NAS, drukarka, router. Przeglądarki odmawiają takich lokalnych żądań; aplikacja mHub wykona je za ciebie.

Strona

Ściana kamer

Twoje własne kamery z sieci lokalnej jako siatka na telewizorze.

Dodatek

Rodzinna ramka na zdjęcia

Zdjęcia z twojego własnego serwera jako katalog obrazów: telewizor staje się ramką.

Aplikacja

Telewizja dla dzieci

Jeden dodatek, jaskrawe kolory, z kanapy nie da się niczego źle ustawić. To Junior.

Dodatek

Bajki z jednego kanału

Darmowe odcinki jednego kanału dla dzieci, według programu, bezpieczne do oddania w małe ręce.

Narzędzia

Strona

Czytnik wiadomości

Pobieraj dowolny kanał prosto ze źródła. Zwykłe przeglądarki to blokują; w mHub to po prostu działa i dobrze się to czyta z kanapy.

Strona

Obserwator cen

Sprawdzaj ceny i dostępność w sklepach, prowadź listę obserwowanych i zobacz wynik na dowolnym ekranie.

Strona

Tablica stanu serwerów

Twoje własne maszyny, ich dyski i usługi jako kafelki, które robią się czerwone, zanim ktokolwiek zadzwoni.

Dodatek

Kanał YouTube z resolverem

Dodatek typu resolver: wklej kanał, a dostaniesz jego filmy jako katalog, który da się odtwarzać.

Dodatek

Napisy w jednym języku

Dodatek z napisami w jednym języku, odpowiadający dla identyfikatorów imdb, z otwartego źródła napisów.

Dodatek

Gdzie obejrzeć dany tytuł

Wpisz film i zobacz, gdzie jest dostępny w twoim kraju. Dodatek typu item na bazie otwartej bazy danych.

Masz już coś takiego? Opublikuj to na mhub.mx: sprawdzimy to, udostępnimy pod twoją nazwą i dodamy do repozytorium społeczności.

Część pierwsza · Vuma po twojemu

Twoja własna aplikacja to jeden plik HTML.

Waves i Junior to dokładnie to: wczytaj build Vuma, wskaż mu element, wywołaj mount. Ten plik na dowolnym hostingu statycznym to gotowa aplikacja z twoimi dodatkami, twoją nazwą i twoimi kolorami, która sama nadąża za wydaniami Vuma. Bez kompilacji, bez kodu serwera, bez konta.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
  content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no">
<title>My App</title>
<link rel="stylesheet" href="https://vuma.mx/latest/style.css">
</head>
<body>
<div id="app"></div>
<script type="module">
  import { mount } from "https://vuma.mx/latest/app.js";
  mount({
    addons: [
      "https://www.mhub.mx/radio-and-podcasts",
      "https://www.mhub.mx/public-domain",
    ],
    brand: { name: "My App", colors: { accent: "#00AAFF" } },
  });
</script>
</body>
</html>

Dodatek to adres URL jego manifestu. Te hostowane tutaj znajdziesz w indeksie dodatków, a AI może zbudować ci nowy.

Każda opcja mount i to, skąd pochodzą pliki, są opisane w samej aplikacji: Jak zrobić własną aplikację. Opis jest dołączony do buildu, więc dotyczy wersji, którą zaraz wczytasz, a nie tej, dla której napisano tę stronę.

Część druga · Addon Protocol v2

Dodatek to folder plików JSON.

Dodatek to źródło treści: filmy, stacje radiowe, podcasty, przepisy, kursy. Umieść folder gdziekolwiek w sieci, dodaj jego adres w aplikacji, a wszystko, co w nim jest, pojawi się tam do przeglądania. Wersja 2 protokołu nie potrzebuje serwera: każdy endpoint może być statycznym plikiem w dowolnym CDN. Każdy istniejący dodatek v1 nadal działa; aplikacje tłumaczą między obiema wersjami, a v1 pozostaje obsługiwany.

Najpierw statycznie

Wszystkie endpointy to GET, wszystkie można cache'ować, wszystkie można hostować jako zwykłe pliki. Jeden opcjonalny POST dla systemu zadań.

/mhub-addon.json
/catalog/{type}/{catalogId}.json
/item/{type}/{id}.json
/source/{type}/{id}.json

Modułowość

Katalogi, szczegóły pozycji, źródła, resolvery i napisy to osobne zasoby. Jeden dodatek może dostarczać je wszystkie albo tylko jeden.

"resources": ["catalog",
  "item", "source",
  "resolve", "subtitle"]

Zadania client-fetch

Endpoint może odpowiedzieć zadaniem zamiast danymi. Aplikacja pobiera dane z własnego IP użytkownika, więc statyczny dodatek działa z API blokowanymi geograficznie.

// dodatek zostaje statyczny,
// po dane idzie klient

mhub-addon.json

Minimalny dodatek to jeden manifest i jeden plik katalogu. Wgraj oba na dowolny hosting statyczny i gotowe. Specyfikacja to OpenAPI 3.1 z generowanymi typami TypeScript i biblioteką kliencką bez zależności, na licencji MIT, na GitHubie.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Część druga · Buduj z AI

Opisz to. AI to zbuduje.

Cały format dodatków mieści się w jednym prompcie i nigdy nie musisz go czytać. Skopiuj prompt, dodaj swój pomysł, a AI odpowie folderem plików. Wgraj je gdziekolwiek i twój dodatek działa.

01

Skopiuj prompt

Kieruje AI do specyfikacji. Działa z każdym asystentem, który potrafi czytać linki, np. ChatGPT albo Claude.

02

Dodaj swój pomysł

„Moje ulubione stacje radiowe.” „Każdy film jednego reżysera.” „Publiczne wykłady mojej uczelni.” Wszystko, co ma listę.

03

Wgraj pliki

Zadziała każdy hosting statyczny, GitHub Pages jest darmowy. Dodaj adres w aplikacji mHub i przeglądaj własny dodatek.

Przeczytaj specyfikację mHub Addon Protocol v2 pod adresem
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
i zbuduj dla mnie dodatek. Dodatek to folder statycznych plików JSON,
gotowy do wgrania na dowolny hosting. W odpowiedzi podaj każdy plik: jego pełną ścieżkę,
a potem całą zawartość.

Mój dodatek: [tu opisz swój pomysł]

Jeśli twój asystent nie potrafi otwierać linków, wklej plik specyfikacji do czatu. Specyfikacja i kompletne przykładowe dodatki są na GitHubie.

Część trzecia · mHub Browser API

Co twoja strona może robić w mHub

Wszystko mieści się w jednej przestrzeni nazw: window.mhub, a każdy host udostępnia pełny rdzeń. Sprawdź raz, czy przestrzeń nazw istnieje, a potem po prostu z niej korzystaj. Bez SDK, bez kompilacji, bez konta: jeden tag script to cała konfiguracja, a hostowanie skryptu u siebie jest w porządku.

<script src="https://mhub.mx/mhub.js"></script>
Sprawdzam tę przeglądarkę…
Host
…
Urządzenie
…
Możliwości
…

API działa już w aplikacjach i trafia do nich wraz z kolejnymi wydaniami. Pisz pod nie już dziś, a twoja strona i tak będzie działać: tam, gdzie nie ma hosta, window.mhub po prostu nie istnieje, a twoja strona pozostaje zwykłą stroną internetową. Pobierz przeglądarkę, która je ma.

mhub.fetch

Pobieraj cokolwiek. Bez CORS i z nagłówkami żądań, które przeglądarka zwykle zastrzega dla siebie.

// inna domena, a da się odczytać
const r = await mhub.fetch(url);

mhub.openStream

Niektóre media potrzebują własnych nagłówków żądań, żeby się odtworzyć. Jedno wywołanie, a host wybierze właściwą drogę na każdej platformie.

const s = await mhub.openStream(
  { url, headers });
video.src = s.url;

mhub.storage

Magazyn klucz/wartość, który podąża za twoją stroną, a nie za domeną, na której akurat działa. Bez pytań, bez konfiguracji.

await mhub.storage.set(k, v);

mhub-site.json

Jedna domena padła, a twoja strona i tak się ładuje. Udostępnij jeden mały plik na każdej domenie; przeglądarka go znajdzie, zweryfikuje twoje kopie lustrzane i sama przełączy się na działającą. Bez kodu.

{ "id": "mysite",
  "endpoints": [
    "https://a.example",
    "https://b.example" ] }

mhub.setLinks

Kafelek na ekranie startowym przeglądarki. Droga powrotna do twojej strony, która przetrwa między wizytami.

mhub.setLinks([
  { id, name, icon, url }]);

mhub.setSearch

Pasek adresu staje się wyszukiwarką twojej strony. Zapytania i podpowiedzi trafiają prosto do twojej strony.

mhub.setSearch({ placeholder,
  onQuery, onSuggest });

mhub.device + capabilities

Wiedz, gdzie działasz i co potrafi host, od telefonu po telewizor, jeszcze przed pierwszym renderowaniem.

if (mhub.device.isTV) tvUi();

…i deklaracje aplikacji

Strona działająca jako aplikacja mówi hostowi, co obsługuje sama: własną nawigację wstecz (setBackHandler), odtwarzacz na pełnym ekranie (setImmersive) i wyjście (exit); tag meta w HTML mówi, że to aplikacja stworzona z myślą o pilocie. Każdy element, wraz z modelem uprawnień i systemem kopii lustrzanych, opisuje dokumentacja API.

mhub.setBackHandler(depth);
mhub.setImmersive(true);
<meta name="mhub" content="app dpad">
Społeczność

Publikowane przez ludzi takich jak ty.

Jak dotąd 56 dodatków społeczności od 31 twórców. Zaloguj się e-mailem, wgraj folder jako zip lub podlinkuj taki, który hostujesz, a gdy przejdzie weryfikację, będzie dostępny pod mhub.mx/@you/addon, na liście społeczności i w repozytorium społeczności.

Zbuduj coś. Dużego czy małego.

Dokumentacja API opisuje każdy element, model uprawnień i system kopii lustrzanych. Specyfikacja protokołu zawiera kompletne przykładowe dodatki, które możesz skopiować.