@mostajs/ads-ui
v0.1.0
Published
Console publicitaire réutilisable (régie sponsors/campagnes) + accès « suit l'hôte » : ZÉRO-DÉPENDANCE en mémoire par défaut, bascule sur @mostajs/ads (ORM via .env) si l'app hôte est câblée ORM. Même interface, même algorithme de ciblage serve().
Maintainers
Readme
@mostajs/ads-ui
Auteur : Dr Hamid MADANI [email protected]
Console publicitaire réutilisable (régie sponsors / campagnes) + un accès « qui suit l'application hôte ». Membre de mosta-ads-stack (aux côtés du moteur @mostajs/ads).
« Zéro-dépendance » first : par défaut, moteur en mémoire (aucune base, aucune dépendance) ; il bascule automatiquement sur le vrai @mostajs/ads (ORM) uniquement si l'app hôte est câblée ORM (.env MOSTA_DATA=orm, dialecte via @mostajs/data-plug). Même interface, même algorithme de ciblage serve() dans les deux cas — la console est identique.
import { adsFromEnv, onboardSponsor, listSponsors, listBanners } from '@mostajs/ads-ui';
import { renderAdsConsole, adsAction } from '@mostajs/ads-ui/console';
const ads = await adsFromEnv(process.env); // mémoire, ou @mostajs/ads si MOSTA_DATA=orm
await onboardSponsor(ads, { account, name: 'StartupDZ', img: '…png', link: '…', placements: ['waiting-room'] });
// régie : GET /m/ads
renderAdsConsole({ sponsors: await listSponsors(ads, account), placements: ['waiting-room'] });
// diffusion (salle d'attente) :
const banners = await listBanners(ads, { account, placementKey: 'waiting-room' }); // [{img,href,alt}]Pourquoi ce module
Le moteur @mostajs/ads est headless (pas d'UI) et ORM-first. @mostajs/ads-ui apporte (1) la console manquante (prévue pour race.amia.fr, jamais extraite) et (2) un mode zéro-dép pour les apps hôtes qui ne veulent pas (encore) de base — sans renoncer à la bascule ORM. Le ciblage serve() est extrait fidèlement de @mostajs/ads.
API : voir llms.txt. Tests : npm test (6). AGPL-3.0-or-later.
