mHub
Piattaforma aperta · Addon Protocol v2 · Browser API

Ogni idea. Ogni schermo.

Crea un'app radio in un pomeriggio.

mHub è una piattaforma aperta che trasforma cartelle di semplici file e normali siti web in app per smartphone, TV e desktop. Non serve saper programmare: se sai descrivere quello che vuoi, un'IA può costruirlo, e mHub gli dà un posto dove girare.

Funziona in Vypn e in ogni browser mHub Open source, MIT Nessuna build, nessun account Funziona su smartphone, TV e desktop
Vuma su una TV: un programma DW in evidenza sopra righe di documentari e video di economia, con i cataloghi dell'addon in alto.
Vuma, un'app mHub, su una TV. Tutto quello che vedi su questo schermo arriva da un solo addon: DW.
Il concetto

Una piattaforma, tre parti.

mHub non è una sola app. Sono tre parti che si incastrano, e ognuna è aperta. Due sono le basi: un formato per i contenuti e un'API per il browser. La terza sono le app, e ognuna poggia su una delle due basi o su entrambe.

01

Le app

Quello che usi davvero. Vuma trasforma gli addon in un'unica schermata da esplorare, e le altre app portano ciascuna un'idea su ogni schermo di casa. Sono tutte web app: niente da installare. Scopri le app

02

I contenuti: gli addon

Un addon è una fonte di contenuti: film, stazioni radio, podcast, corsi. Dietro le quinte è una cartella di piccoli file di testo su un qualsiasi web host, descritta dall'Addon Protocol v2. Un'IA può scriverne uno per te. Scopri il protocollo

03

I poteri: window.mhub

Apri un normale sito web dentro un'app mHub e potrà fare cose che un browser non permette mai: leggere dati da qualsiasi fonte, sopravvivere a un dominio morto, vivere sulla tua TV. Un namespace, un tag script: la mHub Browser API. Scopri l'API

Parte uno · Le app

Le nostre preferite. Tutte online.

Vuma poggia su entrambe le basi; le app accanto mostrano fin dove arriva una base da sola. Cinque app, cinque idee diverse, e ognuna è un punto da cui partire.

Vuma

Dai a Vuma degli addon e li trasforma in un'unica schermata da esplorare: ogni catalogo che i tuoi addon espongono, la ricerca su tutti, una libreria, un player che riprende da dove hai interrotto. È una sola web app che gira su smartphone, TV e desktop, e gestisce da sé touch, telecomando e puntatore.

Poggia su entrambe le basi: gli addon portano i contenuti, e dentro un browser mHub la Browser API aggiunge i poteri che una pagina normale non ha mai. Puoi persino montarla su una tua pagina, con i tuoi addon e il tuo nome: un solo file HTML.

Vuma su uno smartphone: un programma DW in evidenza con i pulsanti per i dettagli e la mia lista, sopra una riga di canali TV in diretta.
L'addon DW in Vuma su uno smartphone: un video di notizie in evidenza e un elenco scorrevole di clip.

Waves

Stazioni radio, podcast e audiolibri gratuiti in un'unica app. Waves è un solo file HTML sulla stessa build di Vuma: cinque addon audio, un colore d'accento verde acqua e addonManager: "fixed", così le fonti sono fisse e l'utente può solo attivarle e disattivarle. Guardane il codice sorgente: la pagina è l'intero tutorial.

Waves: un podcast in evidenza sopra righe di stazioni radio SomaFM, con un logo a onda verde acqua nella barra laterale.
Waves: SomaFM, Radio Browser, podcast e audiolibri, verde acqua su fondo scuro. Un file HTML su Vuma.

Junior

TV per bambini. Un solo addon, colori vivaci, tedesco dalla prima schermata (locale: "de") e addonManager: "hidden": niente da configurare male dal divano. Anche questa è un file HTML sulla build di Vuma.

Junior: un cartone animato KiKA in evidenza sopra righe di programmi per bambini, in tedesco, con un logo a stella gialla nella barra laterale.
Junior: l'addon KiKA e nient'altro, con una stella sulla porta.

Mediathek

L'addon sono i dati; quello che qualcuno ci costruisce sopra è l'app. Mediathek è un file HTML direttamente sull'addon ard-mediathek, senza Vuma sotto: righe, ricerca, serie con i loro episodi, sottotitoli e un player che ricorda dove hai interrotto. L'addon recupera i dati, la pagina pensa all'aspetto.

Mediathek: righe di video e serie ARD con titoli, date e durate, e un campo di ricerca.
Mediathek, un file HTML sopra un addon, senza nulla di proprio da ospitare.

Glance

L'altra base, da sola: Glance non usa nessun addon. Un file HTML sulla Browser API, che porta meteo in tempo reale, notizie, prezzi di mercato e lo stato dei tuoi server su un'unica schermata tranquilla. In un browser normale perde qualche funzione senza rompersi; dentro un'app mHub ogni riquadro si risveglia.

Glance: orologio, meteo, prezzi di mercato e titoli delle notizie come riquadri tranquilli su un'unica schermata.
Glance, un file HTML che porta meteo, notizie e prezzi in tempo reale.
Cosa puoi creare

Un'idea, una cartella, ogni schermo.

Tutto ciò che ha un elenco può diventare un addon, e tutto ciò che un browser si rifiuta di fare può diventare un sito dentro mHub. Queste sono idee che ci piacerebbe veder realizzate, e ognuna è a un prompt di distanza: scegline una e finisce nel prompt per l'IA più in basso.

Addon: una cartella di file JSON, ospitata ovunque o su mhub.mx Sito: una pagina web sulla Browser API App: Vuma con i tuoi addon e il tuo nome

Guarda

Addon

La tua TV regionale

Ogni trasmissione che l'emittente mette online, in righe per programma, con il telegiornale della sera per primo.

Addon

Un festival del cinema

Il programma con trailer e sinossi, da sfogliare per giorno, sala e sezione.

Addon

Cinema muto

Film di pubblico dominio dall'Internet Archive, ordinati per decennio e regista.

Addon

La tua squadra del cuore

Highlights, partite intere e il calendario della stagione come catalogo sempre aggiornato.

Addon

Webcam della città

Le webcam pubbliche di una città, il porto, la piazza, la montagna, come canali in diretta.

Addon

Il consiglio comunale

Registrazioni e dirette del consiglio comunale, per seduta e punto all'ordine del giorno.

Ascolta

Addon

Le tue stazioni radio

Le dieci stazioni che ascolti davvero, con i loghi, nell'ordine che preferisci.

Addon

Una rete di podcast

Ogni programma di una rete dai suoi feed RSS, con gli episodi più recenti per primi.

Addon

Audiolibri per autore

Le registrazioni LibriVox di un autore, i capitoli come episodi, da riprendere dove hai interrotto.

Addon

Storie della buonanotte

Brevi storie audio per bambini, con una copertina tranquilla per ogni storia e senza pubblicità.

Addon

Una comunità religiosa

Le funzioni e gli incontri della tua chiesa, moschea o comunità, in diretta e registrati.

App

L'app di una stazione radio

Waves, con gli stream e i podcast di una sola stazione e i suoi colori. Un file HTML.

Impara

Addon

Le lezioni di un'università

Le registrazioni delle lezioni pubbliche, per facoltà e semestre, sulla TV invece che sul portatile.

Addon

Un corso di lingua

Le lezioni come episodi, in ordine, con gli esercizi audio accanto ai video.

Addon

Visite al museo

Le guide video e audio di un museo, sala per sala.

Addon

Scuola di cucina

Video di ricette per portata e tipo di cucina, con gli ingredienti nella descrizione.

Sito

Un browser per archivi

Un volto amichevole per Archive.org o Project Gutenberg: sfoglia, cerca e leggi come in un'app.

Addon

I talk di una conferenza

Ogni talk registrato di una serie di conferenze, per anno e track.

Casa e famiglia

Sito

Uno schermo per la famiglia

Meteo, notizie e il prezzo delle cose che ti interessano, in un'unica schermata tranquilla. Questa l'abbiamo costruita noi: è Glance.

Sito

Pannello di controllo di casa

Luci, NAS, stampante, router. I browser rifiutano richieste locali di questo tipo; l'app mHub le fa per te.

Sito

Parete di telecamere

Le tue telecamere, dalla rete locale, in una griglia sulla TV.

Addon

La cornice digitale di famiglia

Le foto dal tuo server come catalogo di immagini: la TV diventa la cornice.

App

TV per bambini

Un solo addon, colori vivaci, niente da configurare male dal divano. È Junior.

Addon

I cartoni di un canale

Gli episodi gratuiti di un canale per bambini, per programma, da lasciare ai piccoli senza pensieri.

Strumenti

Sito

Un lettore di notizie

Prendi qualsiasi feed direttamente dalla fonte. I browser normali lo bloccano; dentro mHub funziona e basta, e si legge bene dal divano.

Sito

Un controllo prezzi

Controlla prezzi e disponibilità nei negozi, tieni d'occhio una lista di prodotti, vedi la risposta su qualsiasi schermo.

Sito

Bacheca di stato dei server

Le tue macchine, i loro dischi e servizi, come riquadri che diventano rossi prima che qualcuno chiami.

Addon

Un canale YouTube, risolto

Un addon resolver: incolla un canale, ottieni i suoi video come catalogo riproducibile.

Addon

Sottotitoli per una lingua

Un addon di sottotitoli per una lingua, che risponde per id imdb, da una fonte di sottotitoli aperta.

Addon

Dove vedere un titolo

Scrivi un film e scopri dove lo trovi nel tuo paese. Un addon di elementi sopra un database aperto.

Ne hai creato uno? Pubblicalo su mhub.mx: lo revisioniamo, lo ospitiamo a tuo nome e lo mettiamo nel repository della community.

Parte uno · Rendi tua Vuma

La tua app è un solo file HTML.

Waves e Junior sono esattamente questo: carica la build di Vuma, dalle un elemento, chiama mount. Questo file, su qualsiasi hosting statico, è un'app finita con i tuoi addon, il tuo nome e i tuoi colori, e segue da solo le release di Vuma. Nessuna build, nessun codice server, nessun account.

<!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 è l'URL del suo manifest. Quelli ospitati qui sono elencati nell'indice degli addon, e un'IA può costruirtene uno nuovo.

Ogni opzione di mount, e da dove arrivano i file, è documentata nell'app stessa: Come creare la tua app. La guida è inclusa nella build, quindi descrive la versione che stai per caricare e non quella su cui è stata scritta questa pagina.

Parte due · L'Addon Protocol v2

Un addon è una cartella di file JSON.

Un addon è una fonte di contenuti: film, stazioni radio, podcast, ricette, corsi. Metti la cartella ovunque sul web, aggiungi il suo indirizzo in un'app, e tutto quello che contiene compare lì, pronto da esplorare. La versione 2 del protocollo non ha bisogno di un server: ogni endpoint può essere un file statico su qualsiasi CDN. Ogni addon v1 esistente continua a funzionare; le app traducono tra le due versioni, e la v1 resta supportata.

Statico prima di tutto

Tutti gli endpoint sono GET, tutti memorizzabili in cache, tutti ospitabili come semplici file. Un solo POST facoltativo per il sistema dei task.

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

Componibile

Cataloghi, dettagli degli elementi, fonti, resolver e sottotitoli sono risorse separate. Un addon può fornirle tutte o una sola.

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

Task client-fetch

Un endpoint può rispondere con un task invece che con i dati. L'app fa la richiesta con l'IP dell'utente, così un addon statico funziona anche con API soggette a blocchi geografici.

// l'addon resta statico,
// la richiesta la fa il client

mhub-addon.json

Un addon minimo è un manifest e un file di catalogo. Caricali entrambi su un qualsiasi hosting statico e funziona. La specifica è OpenAPI 3.1, con tipi TypeScript generati e una libreria client senza dipendenze, con licenza MIT, su GitHub.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Parte due · Crea con l'IA

Descrivilo. Un'IA lo costruisce.

L'intero formato degli addon sta in un solo prompt, e non devi mai leggerlo. Copia il prompt, aggiungi la tua idea, e l'IA risponde con una cartella di file. Caricali ovunque e il tuo addon è online.

01

Copia il prompt

Indirizza l'IA alla specifica. Funziona con qualsiasi assistente che sappia leggere i link, come ChatGPT o Claude.

02

Aggiungi la tua idea

"Le mie stazioni radio preferite." "Tutti i film di un regista." "Le lezioni pubbliche della mia università." Qualsiasi cosa che abbia un elenco.

03

Carica i file

Va bene qualsiasi hosting statico, GitHub Pages è gratuito. Aggiungi l'indirizzo in un'app mHub ed esplora il tuo addon.

Leggi la specifica mHub Addon Protocol v2 all'indirizzo
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
e costruisci un addon per me. Un addon è una cartella di file JSON statici,
pronta da caricare su qualsiasi web host. Rispondi con ogni file: il percorso completo,
poi il contenuto integrale.

Il mio addon: [descrivi qui la tua idea]

Se il tuo assistente non riesce ad aprire i link, incolla direttamente nella chat il file della specifica. La specifica e addon di esempio completi si trovano su GitHub.

Parte tre · La mHub Browser API

Cosa può fare il tuo sito dentro mHub

Tutto sta sotto un unico namespace: window.mhub, e ogni host offre il core completo. Verifica una volta che il namespace esista, poi chiamalo e basta. Nessun SDK, nessuna build, nessun account: un tag script è tutta la configurazione, e puoi anche ospitarlo tu.

<script src="https://mhub.mx/mhub.js"></script>
Controllo di questo browser…
Host
…
Dispositivo
…
Funzionalità
…

L'API è attiva nelle app e arriva con i loro aggiornamenti. Scrivi il codice oggi e la tua pagina funziona in ogni caso: dove non c'è un host, window.mhub semplicemente non esiste e il tuo sito resta un normale sito web. Scarica un browser che la supporta.

mhub.fetch

Recupera qualsiasi cosa. Niente CORS, e header di richiesta che il browser normalmente riserva a sé.

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

mhub.openStream

Alcuni media hanno bisogno di header di richiesta propri per essere riprodotti. Una chiamata, e l'host sceglie la strada giusta su ogni piattaforma.

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

mhub.storage

Archiviazione chiave/valore che segue il tuo sito, non il dominio su cui si trova a girare. Nessuna richiesta di permesso, nessuna configurazione.

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

mhub-site.json

Un dominio va giù, il tuo sito si carica comunque. Metti un piccolo file su ogni dominio; il browser lo trova, verifica i tuoi mirror e passa da solo a uno funzionante. Nessun codice.

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

mhub.setLinks

Un riquadro nella schermata home del browser. La strada per tornare al tuo sito, che resta tra una visita e l'altra.

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

mhub.setSearch

La barra degli indirizzi diventa la ricerca del tuo sito. Query e suggerimenti arrivano direttamente alla tua pagina.

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

mhub.device + capabilities

Sai dove stai girando e cosa sa fare l'host, dallo smartphone alla TV, prima ancora del primo rendering.

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

…e le dichiarazioni dell'app

Una pagina che gira come app dice all'host cosa gestisce da sola: la propria navigazione indietro (setBackHandler), un player a schermo intero (setImmersive) e l'uscita (exit); un meta tag nell'HTML dice che è un'app pensata per il telecomando. Ogni membro, con il modello dei permessi e il sistema dei mirror, è nel riferimento dell'API.

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

Pubblicati da persone come te.

Finora 56 addon della community, opera di 31 autori. Accedi con la tua email, carica una cartella come zip o collega una che ospiti tu, e una volta superata la revisione il tuo addon vive su mhub.mx/@you/addon, nell'elenco della community e nel suo repository.

Costruisci qualcosa. Grande o piccolo.

Il riferimento dell'API copre ogni membro, il modello dei permessi e il sistema dei mirror. La specifica del protocollo include addon di esempio completi da copiare.