@mostajs/wagon-ui
v0.9.1
Published
Les pages du wagon d'un SaaS — mise en page (langues, pied légal, en-têtes pour les moteurs), accueil, tarifs, inscription, connexion (mot de passe ou code), espace client (palier, jauges, clés, factures, gestion de l'abonnement), administration (paliers,
Maintainers
Readme
@mostajs/wagon-ui
Auteur : Dr Hamid MADANI [email protected] · AGPL-3.0-or-later
Les pages du wagon d'un SaaS : tout ce qu'il montre en dehors de ce qu'il vend. Extraites de mdseal, où elles font, avec leurs traductions, environ 60 % du wagon — sans rien de ce que mdseal vend.
| vue | ce qu'elle rend |
|---|---|
| page() | la mise en page : langue et sens (arabe de droite à gauche), sélecteur de langues, navigation, connexion, pied légal, en-têtes pour les moteurs |
| accueil() | la vitrine : titre, chapeau, actions, preuves |
| tarifs() | les paliers, une ligne par ressource déclarée, les clés d'API, l'inscription par palier |
| inscription(), inscriptionFaite(), connexion(), merci() | le parcours d'entrée — mot de passe, ou code reçu par courriel |
| espace() | le compte du client : palier, jauges, clés, factures, gestion de l'abonnement |
| adminPaliers(), adminUsage() | l'administration : quotas par palier, tableau d'usage |
| legal(), introuvable() | les documents légaux, la page introuvable |
Sept langues : français, anglais, arabe, allemand, espagnol, italien (0.7.0), chinois simplifié (0.8.0). Vues pures, aucune dépendance, aucun script.
Greffer un nouveau SaaS
import { creerWagonUi } from '@mostajs/wagon-ui'
const ui = creerWagonUi({
marque: { nom: 'Acme Proof', symbole: '◆', slogan: { fr: 'la preuve, simplement', en: 'proof, simply' }, auteur: 'Jeanne Martin', courriel: '[email protected]' },
couleurs: { brand: '#123456', lien: '#234567', ornement: '#ABCDEF' },
liens: [{ href: '/outil', libelle: { fr: 'L’outil', en: 'The tool' } }], // la charge utile
ressources: [{ cle: 'certificat', limite: 'certificatsParMois', periode: 'mois',
libelle: { fr: 'Certificats', en: 'Certificates' }, parPeriode: { fr: '{n} certificats par mois', en: '{n} certificates per month' } }],
})
res.end(ui.page({ actif: '/tarifs', titre: 'Tarifs', lang: 'fr', base: 'https://acme.test',
contenu: ui.tarifs({ lang: 'fr', paliers }) }))La logique vient des modules : comptes (@mostajs/comptes), abonnements et quotas
(@mostajs/subscriptions-plan), connexion (@mostajs/auth-lite, @mostajs/auth-plug).
Voir llms.txt pour l'API complète.
Documentation publique (0.2)
const html = ui.pageDocumentation({
lang: 'fr', version: 'v1', base: 'https://acme.test',
onglets: [{ href: '/docs', libelle: 'Guides' }, { href: '/docs/api', libelle: 'Référence API' }], onglet: '/docs',
sections: [{ titre: 'Bien démarrer', pages: [{ href: '/docs', titre: 'Vue d’ensemble' }] }], actif: '/docs',
titre: 'Vue d’ensemble', sousTitre: '…', contenu: '<h2 id="a">…</h2>', sommaire: [{ id: 'a', titre: '…' }],
markdown: '/docs/index.md',
});La recherche est un formulaire GET vers recherche (par défaut /docs/recherche?q=) : l'application cherche
dans ses pages et rend ui.rechercheDocumentation({ lang, q, resultats }) dans pageDocumentation.
