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.
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ă.
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
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
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
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.


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.
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.
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.
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ță.
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.
Privește
Postul tău TV regional
Fiecare emisiune pe care postul o pune online, în rânduri pe emisiuni, cu știrile de seară primele.
Un festival de film
Programul cu trailere și rezumate, pe zile, săli și secțiuni.
Filmul mut
Filme din domeniul public de pe Internet Archive, sortate pe decenii și regizori.
Clubul tău sportiv
Rezumate, meciuri întregi și programul sezonului, ca un catalog live.
Camere live din oraș
Camerele web publice ale unui oraș, portul, piața, muntele, ca canale live.
Ședințele consiliului local
Înregistrări și transmisiuni live ale consiliului local, pe ședințe și puncte de pe ordinea de zi.
Ascultă
Posturile tale de radio
Cele zece posturi pe care chiar le asculți, cu logouri, în ordinea care îți place.
O rețea de podcasturi
Fiecare emisiune a unei rețele, din fluxurile ei RSS, cu cele mai noi episoade primele.
Cărți audio pe autori
Înregistrările LibriVox ale unui autor, capitolele ca episoade, cu reluare de unde ai rămas.
Povești de adormit
Povești audio scurte pentru copii, cu o copertă liniștită pentru fiecare poveste și fără reclame.
O comunitate religioasă
Slujbele și predicile bisericii, moscheii sau comunității tale, live și înregistrate.
Aplicația proprie a unui post
Waves, cu stream-urile și podcasturile unui singur post și culorile lui. Un singur fișier HTML.
Învață
Cursurile unei universități
Înregistrările cursurilor publice, pe facultăți și semestre, pe televizor în loc de laptop.
Un curs de limbă
Lecțiile ca episoade, în ordine, cu exercițiile audio lângă videoclipuri.
Tururi de muzeu
Ghidurile video și audio ale unui muzeu, sală cu sală.
Școală de gătit
Videoclipuri cu rețete pe feluri de mâncare și bucătării, cu ingredientele în descriere.
Un browser pentru arhive
O interfață prietenoasă pentru Archive.org sau Project Gutenberg: navighezi, cauți și citești ca într-o aplicație.
Prezentările unei conferințe
Fiecare prezentare înregistrată a unei serii de conferințe, pe ani și secțiuni.
Casă și familie
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.
Panou de control pentru casă
Lumini, NAS, imprimantă, router. Browserele refuză astfel de cereri locale; aplicația mHub le face în locul tău.
Perete de camere
Propriile tale camere, din rețeaua locală, ca o grilă pe televizor.
Rama foto a familiei
Fotografii de pe propriul tău server ca un catalog de imagini: televizorul devine rama.
TV pentru copii
Un singur addon, culori vii, nimic de configurat greșit de pe canapea. Acesta este Junior.
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
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.
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.
Panou de stare a serverelor
Propriile tale mașini, discurile și serviciile lor, ca panouri care se fac roșii înainte să sune cineva.
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.
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.
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.
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ă.
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" }] }
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.
Copiază promptul
Îi arată AI-ului specificația. Funcționează cu orice asistent care poate citi linkuri, cum ar fi ChatGPT sau Claude.
Adaugă ideea ta
„Posturile mele de radio preferate.” „Toate filmele unui regizor.” „Cursurile publice ale universității mele.” Orice are o listă.
Î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.
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.
- 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">
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.
Internet Archive
RTVE