Préparez votre extension
Dans le dépôt portaki-modules, sous modules/<id>/ : code React (paquet @portaki/module-*), manifeste portaki.module.json validé en CI, logique serveur en TypeScript (defineModule + portaki build). Voir la doc du SDK.
Communauté partager de nouvelles briques avec d’autres hôtes.
Pour les équipes qui créent des extensions
Un catalogue ouvert : vous publiez une extension dans le dépôt portaki-modules, avec un manifeste versionné, le SDK @portaki/sdk et le CLI @portaki/cli. Après revue, elle apparaît chez les hôtes comme les modules officiels.
Comment ça marche
Dans le dépôt portaki-modules, sous modules/<id>/ : code React (paquet @portaki/module-*), manifeste portaki.module.json validé en CI, logique serveur en TypeScript (defineModule + portaki build). Voir la doc du SDK.
Notre équipe relit sous sept jours ouvrés. Critères publics, retours clairs — pas de validation dans le flou.
Une fois la contribution mergée sur main, l’API Portaki recharge le catalogue (manifestes + métadonnées). Les hôtes voient le module à la prochaine synchronisation — sans mise à jour manuelle de leur part.
import { definePortakiModule } from "@portaki/sdk";export default definePortakiModule({id: "weather-widget",label: { fr: "Météo", en: "Weather" },icon: "cloud-sun",render: ({ property, lang }) => (<WeatherWidget lat={property.lat} lang={lang} />),});
Ce que vous obtenez
Même chaîne que les modules officiels : npm pour l’UI invité, manifeste sur GitHub, catalogue servi par l’API.
Critères publics, échanges ouverts sur la proposition, pas de validation opaque.
@portaki/sdk (UI, schéma, gateway), @portaki/cli (build) et schéma JSON du manifeste — publiés depuis portaki-sdk.
Pour aller plus loin
Chaque extension est décrite dans portaki.module.json (schéma versionné dans portaki-sdk, contrôle en CI). L’API lit ces fichiers sur le dépôt portaki-modules pour alimenter le catalogue hôte. Les champs portakiVersionMin et requiresHostSdk indiquent les versions minimales du produit et du SDK npm invité.
id
Identifiant stable du module (dossier sous modules/ dans le dépôt portaki-modules).
name (fr, en)
Titre affiché pour les hôtes et les voyageurs, en français et en anglais.
type
Officiel ou communautaire : même catalogue côté hôte, critères de publication différents.
portakiVersionMin
Version minimale du produit Portaki compatible avec votre module.
requiresHostSdk
Version minimale du paquet npm @portaki/sdk (contrat module auteur) — alignée sur la release publiée.
config.fields[]
Réglages que l’hôte peut modifier pour chaque logement (texte, secret, liste, etc.).
Besoin d'un exemple complet ? Lire la doc développeur.
{"$schema": "https://raw.githubusercontent.com/PortakiApp/portaki-sdk/main/schema/module.v1.json","id": "weather-widget","name": { "fr": "Météo", "en": "Weather" },"version": "1.0.0","type": "community","portakiVersionMin": "1.0.0","requiresHostSdk": "2.0.0","license": "MIT","author": { "name": "Vous", "type": "community" },"icon": "cloud-sun","config": { "fields": [] },"catalog": {"npmPackage": "@portaki/module-weather-widget","npmUrl": "https://www.npmjs.com/package/@portaki/module-weather-widget"},"screenshots": ["modules/weather-widget/docs/hero.png"]}
Contribution
Proposition, relecture, mise en ligne — le même parcours que pour les briques officielles.
Catalogue public
Ceux-ci sont intégrés au catalogue après revue — même pipeline que les modules officiels.
Soyez le premier
Aucune contribution communautaire n'est encore listée ici. Envoyez la vôtre via le dépôt public : relecture transparente sous sept jours ouvrés.