mHub
Platformă deschisă · Addon Protocol v2 · Browser API

Orice idee. Pe orice ecran.

Construiește o aplicație radio într-o după-amiază.

mHub este o platformă deschisă care transformă foldere cu fișiere simple și site-uri obișnuite în aplicații pentru telefoane, televizoare și desktop. Nu trebuie să fii programator: dacă poți descrie ce vrei, o inteligență artificială poate construi, iar mHub îi oferă un loc în care să ruleze.

Rulează în Vypn și în orice browser mHub Open source, MIT Fără pas de build, fără cont Rulează pe telefoane, televizoare și desktop
Vuma pe un televizor: o emisiune DW recomandată deasupra unor rânduri de documentare și videoclipuri despre afaceri, cu cataloagele addonului în partea de sus.
Vuma, o aplicație mHub, pe un televizor. Tot ce vezi pe acest ecran vine dintr-un singur addon: DW.
Conceptul

O platformă, trei părți.

mHub nu este o singură aplicație. Sunt trei părți care se potrivesc între ele, și fiecare este deschisă. Două sunt fundații: un format de conținut și un API de browser. A treia sunt aplicațiile, iar fiecare dintre ele se sprijină pe o fundație sau pe amândouă.

01

Aplicațiile

Ce folosești de fapt. Vuma transformă addonurile într-un singur ecran prin care poți naviga, iar alte aplicații duc fiecare câte o idee pe toate ecranele din casă. Toate sunt aplicații web: nimic de instalat. Vezi aplicațiile

02

Conținutul: addonurile

Un addon este o sursă de conținut: filme, posturi de radio, podcasturi, cursuri. În spate, este un folder cu fișiere text mici pe orice găzduire web, descris de Addon Protocol v2. O inteligență artificială îți poate scrie unul. Vezi protocolul

03

Puterile: window.mhub

Deschide un site obișnuit într-o aplicație mHub și acesta poate face lucruri pe care un browser nu le permite niciodată: să citească date de oriunde, să supraviețuiască unui domeniu căzut, să trăiască pe televizorul tău. Un singur namespace, un singur tag script: mHub Browser API. Vezi API-ul

Partea întâi · Aplicațiile

Preferatele noastre. Toate funcționează live.

Vuma se sprijină pe ambele fundații; aplicațiile de lângă ea arată cât de departe ajungi cu o singură fundație. Cinci aplicații, cinci idei diferite, și fiecare dintre ele e un punct de plecare.

Vuma

Dă-i lui Vuma addonuri și le transformă într-un singur ecran prin care poți naviga: fiecare catalog pe care îl oferă addonurile tale, căutare în toate, o bibliotecă, un player care continuă de unde ai rămas. Este o singură aplicație web care rulează la fel pe telefoane, televizoare și desktop, și se descurcă singură cu atingerea, telecomanda și mouse-ul.

Se sprijină pe ambele fundații: addonurile aduc conținutul, iar într-un browser mHub, Browser API adaugă puterile pe care o pagină obișnuită nu le are niciodată. O poți monta chiar și pe o pagină a ta, cu addonurile tale și numele tău: un singur fișier HTML.

Vuma pe un telefon: o emisiune DW recomandată, cu butoane pentru detalii și lista mea, deasupra unui rând de canale TV live.
Addonul DW în Vuma pe un telefon: un videoclip de știri recomandat și o listă de clipuri care se derulează.

Waves

Posturi de radio, podcasturi și cărți audio gratuite într-o singură aplicație. Waves este un singur fișier HTML peste același build Vuma: cinci addonuri audio, o culoare de accent turcoaz și addonManager: "fixed", așa că sursele sunt fixate, iar utilizatorul doar le pornește și le oprește. Uită-te la codul sursă al paginii: pagina este tot tutorialul.

Waves: un podcast recomandat deasupra unor rânduri de posturi de radio SomaFM, cu un logo turcoaz în formă de val în bara laterală.
Waves: SomaFM, Radio Browser, podcasturi și cărți audio, turcoaz pe fundal închis. Un singur fișier HTML peste Vuma.

Junior

TV pentru copii. Un singur addon, culori vii, germană de la primul ecran (locale: "de") și addonManager: "hidden": nimic de configurat greșit de pe canapea. Tot un singur fișier HTML peste build-ul Vuma.

Junior: o animație KiKA recomandată deasupra unor rânduri de emisiuni pentru copii, în germană, cu un logo în formă de stea galbenă în bara laterală.
Junior: addonul KiKA și nimic altceva, cu o stea pe ușă.

Mediathek

Addonul înseamnă datele; ce construiește cineva peste el este aplicația. Mediathek este un singur fișier HTML direct peste addonul ard-mediathek, fără Vuma dedesubt: rânduri, căutare, seriale cu episoadele lor, subtitrări și un player care ține minte unde te-ai oprit. Addonul aduce datele, pagina se ocupă de aspect.

Mediathek: rânduri de videoclipuri și seriale ARD cu titluri, date și durate, și un câmp de căutare.
Mediathek, un singur fișier HTML peste un singur addon, fără nimic propriu de găzduit.

Glance

Cealaltă fundație, singură: Glance nu folosește deloc addonuri. Un singur fișier HTML peste Browser API, care aduce vremea live, titlurile de știri, prețurile de pe piață și starea propriilor tale servere pe un singur ecran liniștit. Într-un browser obișnuit funcționează în continuare, cu mai puține funcții; într-o aplicație mHub, fiecare panou prinde viață.

Glance: ceas, vreme, prețuri de pe piață și titluri de știri, ca panouri liniștite pe un singur ecran.
Glance, un singur fișier HTML, care aduce vremea live, titlurile de știri și prețurile.
Ce poți construi

O idee, un folder, pe orice ecran.

Orice are o listă poate fi un addon, și orice refuză un browser să facă poate fi un site în mHub. Acestea sunt idei pe care ne-ar plăcea să le vedem realizate, și fiecare e la un prompt distanță: alege una și ajunge în promptul pentru AI de mai jos.

Addon: un folder cu fișiere JSON, găzduit oriunde sau pe mhub.mx Site: o pagină web peste Browser API Aplicație: Vuma cu addonurile și numele tău

Privește

Addon

Postul tău TV regional

Fiecare emisiune pe care postul o pune online, în rânduri pe emisiuni, cu știrile de seară primele.

Addon

Un festival de film

Programul cu trailere și rezumate, pe zile, săli și secțiuni.

Addon

Filmul mut

Filme din domeniul public de pe Internet Archive, sortate pe decenii și regizori.

Addon

Clubul tău sportiv

Rezumate, meciuri întregi și programul sezonului, ca un catalog live.

Addon

Camere live din oraș

Camerele web publice ale unui oraș, portul, piața, muntele, ca canale live.

Addon

Ședințele consiliului local

Înregistrări și transmisiuni live ale consiliului local, pe ședințe și puncte de pe ordinea de zi.

Ascultă

Addon

Posturile tale de radio

Cele zece posturi pe care chiar le asculți, cu logouri, în ordinea care îți place.

Addon

O rețea de podcasturi

Fiecare emisiune a unei rețele, din fluxurile ei RSS, cu cele mai noi episoade primele.

Addon

Cărți audio pe autori

Înregistrările LibriVox ale unui autor, capitolele ca episoade, cu reluare de unde ai rămas.

Addon

Povești de adormit

Povești audio scurte pentru copii, cu o copertă liniștită pentru fiecare poveste și fără reclame.

Addon

O comunitate religioasă

Slujbele și predicile bisericii, moscheii sau comunității tale, live și înregistrate.

Aplicație

Aplicația proprie a unui post

Waves, cu stream-urile și podcasturile unui singur post și culorile lui. Un singur fișier HTML.

Învață

Addon

Cursurile unei universități

Înregistrările cursurilor publice, pe facultăți și semestre, pe televizor în loc de laptop.

Addon

Un curs de limbă

Lecțiile ca episoade, în ordine, cu exercițiile audio lângă videoclipuri.

Addon

Tururi de muzeu

Ghidurile video și audio ale unui muzeu, sală cu sală.

Addon

Școală de gătit

Videoclipuri cu rețete pe feluri de mâncare și bucătării, cu ingredientele în descriere.

Site

Un browser pentru arhive

O interfață prietenoasă pentru Archive.org sau Project Gutenberg: navighezi, cauți și citești ca într-o aplicație.

Addon

Prezentările unei conferințe

Fiecare prezentare înregistrată a unei serii de conferințe, pe ani și secțiuni.

Casă și familie

Site

Un ecran pentru familie

Vremea, titlurile de știri și prețul lucrurilor care te interesează, pe un singur ecran liniștit. Pe acesta l-am construit noi: este Glance.

Site

Panou de control pentru casă

Lumini, NAS, imprimantă, router. Browserele refuză astfel de cereri locale; aplicația mHub le face în locul tău.

Site

Perete de camere

Propriile tale camere, din rețeaua locală, ca o grilă pe televizor.

Addon

Rama foto a familiei

Fotografii de pe propriul tău server ca un catalog de imagini: televizorul devine rama.

Aplicație

TV pentru copii

Un singur addon, culori vii, nimic de configurat greșit de pe canapea. Acesta este Junior.

Addon

Desene animate de pe un canal

Episoadele gratuite ale unui canal pentru copii, pe emisiuni, pe care le poți lăsa liniștit pe mâna copiilor.

Unelte

Site

Un cititor de știri

Adu orice flux direct de la sursă. Browserele obișnuite blochează asta; în mHub pur și simplu funcționează, și se citește bine de pe canapea.

Site

Un monitor de prețuri

Verifică prețurile și disponibilitatea în magazine, păstrează o listă de urmărire, vezi răspunsul pe orice ecran.

Site

Panou de stare a serverelor

Propriile tale mașini, discurile și serviciile lor, ca panouri care se fac roșii înainte să sune cineva.

Addon

Un canal YouTube, rezolvat

Un addon de tip resolver: lipești un canal și primești videoclipurile lui ca un catalog care se poate reda.

Addon

Subtitrări pentru o limbă

Un addon de subtitrări pentru o singură limbă, care răspunde pentru id-uri imdb, dintr-o sursă deschisă de subtitrări.

Addon

Unde rulează un titlu

Scrii un film și vezi unde rulează în țara ta. Un addon de elemente peste o bază de date deschisă.

Ai făcut unul dintre acestea? Publică-l pe mhub.mx: îl verificăm, îl găzduim sub numele tău și îl listăm în repozitoriul comunității.

Partea întâi · Fă Vuma a ta

Aplicația ta este un singur fișier HTML.

Waves și Junior sunt exact asta: încarci build-ul Vuma, îi dai un element, apelezi mount. Acest fișier, pe orice găzduire statică, este o aplicație gata făcută, cu addonurile, numele și culorile tale, și urmează singur versiunile noi Vuma. Fără pas de build, fără cod pe server, fără cont.

<!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>

Un addon este URL-ul manifestului său. Cele găzduite aici sunt listate în indexul de addonuri, iar o inteligență artificială îți poate construi unul nou.

Fiecare opțiune de montare și locul de unde vin fișierele sunt documentate chiar în aplicație: Cum îți faci propria aplicație. Documentația vine odată cu build-ul, așa că descrie versiunea pe care urmează să o încarci, nu pe cea pentru care a fost scrisă această pagină.

Partea a doua · Addon Protocol v2

Un addon este un folder cu fișiere JSON.

Un addon este o sursă de conținut: filme, posturi de radio, podcasturi, rețete, cursuri. Pune folderul oriunde pe web, adaugă adresa lui într-o aplicație și tot ce conține apare acolo, gata de navigat. Versiunea 2 a protocolului nu are nevoie de server: fiecare endpoint poate fi un fișier static pe orice CDN. Fiecare addon v1 existent funcționează în continuare; aplicațiile traduc între cele două, iar v1 rămâne suportat.

Static în primul rând

Toate endpointurile sunt GET, toate pot fi puse în cache, toate pot fi găzduite ca fișiere simple. Un singur POST opțional, pentru sistemul de taskuri.

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

Modular

Cataloagele, detaliile elementelor, sursele, resolverele și subtitrările sunt resurse separate. Un addon le poate oferi pe toate sau doar pe una.

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

Taskuri client-fetch

Un endpoint poate răspunde cu un task în loc de date. Aplicația face cererea cu IP-ul propriu al utilizatorului, așa că un addon static funcționează și cu API-uri blocate geografic.

// addonul rămâne static,
// clientul face drumul

mhub-addon.json

Un addon minimal înseamnă un manifest și un fișier de catalog. Încarcă-le pe amândouă pe orice găzduire statică și funcționează. Specificația este OpenAPI 3.1, cu tipuri TypeScript generate și o bibliotecă client fără dependențe, sub licență MIT, pe GitHub.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Partea a doua · Construiește cu AI

Descrie ideea. O inteligență artificială o construiește.

Întregul format al addonurilor încape într-un singur prompt, și nu trebuie să-l citești niciodată. Copiază promptul, adaugă ideea ta, iar AI-ul îți răspunde cu un folder de fișiere. Încarcă-le oriunde și addonul tău e live.

01

Copiază promptul

Îi arată AI-ului specificația. Funcționează cu orice asistent care poate citi linkuri, cum ar fi ChatGPT sau Claude.

02

Adaugă ideea ta

„Posturile mele de radio preferate.” „Toate filmele unui regizor.” „Cursurile publice ale universității mele.” Orice are o listă.

03

Încarcă fișierele

Orice găzduire statică merge, GitHub Pages e gratuit. Adaugă adresa într-o aplicație mHub și navighează prin propriul tău addon.

Citește specificația mHub Addon Protocol v2 de la
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
și construiește un addon pentru mine. Un addon este un folder cu fișiere JSON statice,
gata de încărcat pe orice găzduire web. Răspunde cu fiecare fișier: calea lui completă,
apoi conținutul lui complet.

Addonul meu: [descrie ideea ta aici]

Dacă asistentul tău nu poate deschide linkuri, lipește în schimb fișierul specificației în chat. Specificația și exemple complete de addonuri se află pe GitHub.

Partea a treia · mHub Browser API

Ce poate face site-ul tău în mHub

Totul stă sub un singur namespace: window.mhub, iar fiecare gazdă oferă nucleul complet. Detectezi namespace-ul o dată, apoi doar îl apelezi. Fără SDK, fără pas de build, fără cont: un singur tag script este toată configurarea, și îl poți găzdui și singur.

<script src="https://mhub.mx/mhub.js"></script>
Se verifică acest browser…
Gazdă
…
Dispozitiv
…
Capabilități
…

API-ul funcționează deja în aplicații și ajunge odată cu versiunile lor noi. Scrie cod pentru el de azi și pagina ta funcționează oricum: acolo unde nu există o gazdă, window.mhub pur și simplu lipsește, iar site-ul tău rămâne un site obișnuit. Ia un browser care îl are.

mhub.fetch

Adu orice. Fără CORS, și cu headere de cerere pe care browserul le rezervă de obicei pentru el.

// cross-origin, lizibil
const r = await mhub.fetch(url);

mhub.openStream

Unele conținuturi media au nevoie de propriile headere de cerere ca să ruleze. Un singur apel, iar gazda alege calea potrivită pe fiecare platformă.

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

mhub.storage

Stocare cheie/valoare care urmează site-ul tău, nu domeniul pe care se întâmplă să ruleze. Fără întrebări, fără configurare.

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

mhub-site.json

Un domeniu a căzut, site-ul tău se încarcă în continuare. Pune un fișier mic pe fiecare domeniu; browserul îl găsește, îți verifică oglinzile și trece singur pe alta. Fără cod.

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

mhub.setLinks

Un panou pe ecranul principal al browserului. Drumul înapoi spre site-ul tău, care rămâne de la o vizită la alta.

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

mhub.setSearch

Bara de adrese devine căutarea site-ului tău. Interogările și sugestiile ajung direct la pagina ta.

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

mhub.device + capabilities

Află unde rulezi și ce poate face gazda, de la telefon la televizor, înainte de prima afișare.

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

…și declarațiile de aplicație

O pagină care rulează ca aplicație îi spune gazdei de ce se ocupă singură: propria navigare înapoi (setBackHandler), un player pe tot ecranul (setImmersive) și ieșirea (exit); un meta tag în HTML spune că este o aplicație făcută pentru telecomandă. Fiecare membru, cu modelul de permisiuni și sistemul de oglinzi, se află în referința API.

mhub.setBackHandler(depth);
mhub.setImmersive(true);
<meta name="mhub" content="app dpad">
Comunitate

Publicate de oameni ca tine.

56 de addonuri ale comunității de la 31 de creatori până acum. Conectează-te cu adresa de e-mail, încarcă un folder ca zip sau adaugă linkul unuia pe care îl găzduiești, iar după ce trece de verificare, ajunge la mhub.mx/@you/addon, în lista comunității și în repozitoriul ei.

Construiește ceva. Mare sau mic.

Referința API acoperă fiecare membru, modelul de permisiuni și sistemul de oglinzi. Specificația protocolului vine cu exemple complete de addonuri pe care le poți copia.