Aloha Pixel

Documentation

Du zip à la mise en ligne

Tout ce qui suit part du principe que vous n'avez jamais touché à Astro. Si vous bloquez quelque part, écrivez à contact@alohapixel.com : une vraie personne répond.

Démarrer en 5 minutes

Il vous faut Node 22.18 ou plus récent, et pnpm (npm i -g pnpm). Ensuite, dans le dossier décompressé :

pnpm install
pnpm dev            # http://localhost:4321
pnpm build          # build de production dans dist/
pnpm preview        # sert le build de production en local
pnpm check          # vérifie tous les types
pnpm test           # contrôles du thème
pnpm verify         # banc de rendu sur le build (390, 768 et 1440 px)
pnpm lint:house     # règles maison du code
pnpm dev:moteur     # le site avec son back office, en local
pnpm build:moteur   # le build du site avec back office

Moteur éteint, vos contenus vivent dans des fichiers en clair : l'identité du site dans src/config/siteData.json.ts, la navigation dans navData.json.ts, le reste juste à côté ou dans src/data/ selon le thème (articles de Reef et d'Aloha, produits de Kai, projets de Koa). Moteur allumé, tout ce que voient les visiteurs vit en base et se change dans le back office, sans toucher à un fichier. pnpm dev:moteur l'ouvre en local, à http://localhost:4321/_emdash/admin.

Deux façons de faire tourner votre site

Chaque thème se construit de deux façons, et une seule variable choisit : ALOHA_MOTEUR. Le design, les adresses et le référencement sont les mêmes dans les deux cas : on passe de l'un à l'autre sans réécrire une page.

Moteur éteint : le site statique

Le réglage d'origine. Le build ne produit que des fichiers HTML : rapide, sans serveur ni base, hébergé gratuitement où vous voulez (Cloudflare, Netlify, Vercel). Les contenus vivent dans des fichiers texte, et un changement passe par une modification puis un nouveau build. Le bon choix pour un site que vous tenez vous-même.

Moteur allumé : le site administrable

Avec ALOHA_MOTEUR=emdash, le même code devient un site sur Cloudflare, avec sa base de données et ses médias. Tout ce que voient les visiteurs se change dans le back office EmDash et se voit en ligne dès la publication, sans build. Le bon choix pour un site que votre client tient sans vous.

EmDash est un système de gestion de contenu libre (licence MIT), conçu pour Astro et pour Cloudflare. Les thèmes ne le réécrivent pas : ils s'y branchent, l'habillent aux couleurs et aux polices du thème, et le livrent en français, avec ce qu'EmDash ne fait pas seul : la barre d'édition sur chaque bloc, les courriels du site, la boutique de Kai, le bouton « Mettre le site à jour ».

Moteur allumé, il faut un compte Cloudflare avec Workers, D1 (la base) et R2 (les médias) ; Cloudflare Images est conseillé pour alléger les photos, et les courriels du site passent par Cloudflare Email Sending, qui demande l'offre Workers Paid. Le coût dépend de votre compte et des tarifs de Cloudflare.

Où se trouve quoi

src/
  config/       vos contenus : identité, navigation, et selon le thème tarifs, FAQ, mentions
  data/         la graine en fichiers, selon le thème : articles, produits, projets
  components/
    Sections/   les blocs de page que vous réagencez
    ui/         les primitives d'interface (boutons, dialogues...)
  pages/        un fichier par route
  styles/       tokens.css = tout le design system
  moteur/       le back office EmDash : réglages, menus, barre d'édition
docs/           administrer.md, le guide du back office pour votre client ; moteur.md, sa mise en ligne
migrations/     un fichier SQL par version, pour mettre à jour une base en ligne
scripts/        rebrand.mjs, og.mjs, moteur-import.mjs, base-3.4.0.mjs, deployer-frontal.sh
seed/           la graine du back office : collections, menus, contenus
wiki/           la documentation technique du thème
socle.lock.json la liste des fichiers communs aux sept thèmes

Rebrander en une commande

Donnez au thème la couleur de votre marque et toute la palette se régénère : les composants, le thème sombre, et même les images sociales générées suivent. Moteur allumé, votre client choisit aussi la couleur de la marque dans le back office, parmi cinq couleurs (« Réglages par langue »), sans commande.

pnpm rebrand "#7a59ff"          # votre couleur d'accent
pnpm rebrand "#7a59ff" --dark "#140a2e"
pnpm rebrand --restore           # retour à la palette Aloha d'origine
pnpm og                          # régénère les images OG assorties
pnpm favicon                     # régénère les favicons assortis

Publier le site statique gratuitement

Moteur éteint, le build ne produit que des fichiers statiques : l'offre gratuite de n'importe quel hébergeur moderne le porte. Cloudflare : créez un projet, pointez-le sur votre dépôt, commande de build pnpm build, dossier de sortie dist. Netlify et Vercel : les deux mêmes valeurs. Renseignez site dans astro.config.mjs avec votre vrai domaine, pour que les URLs canoniques, le sitemap et les liens OG soient justes. Le site avec back office, lui, se publie sur Cloudflare : c'est la section suivante.

Mettre le back office en ligne

Une seule fois, depuis le dossier du thème, avec votre compte Cloudflare. Remplacez site.example.com par votre domaine : la base et le stockage des médias se créent au premier déploiement.

# 1. Installer, puis se connecter à Cloudflare
pnpm install
pnpm wrangler login

# 2. Construire le site avec son back office, puis le déployer
pnpm build:moteur
pnpm wrangler deploy

# 3. Le mettre sur votre domaine. D'abord, copiez l'identifiant de la base
#    (pnpm wrangler d1 list) dans wrangler.frontal.jsonc
DOMAINE=site.example.com bash scripts/deployer-frontal.sh --a-sec   # essai à blanc
DOMAINE=site.example.com bash scripts/deployer-frontal.sh

# 4. Ouvrir https://site.example.com/_emdash/admin et créer le premier
#    administrateur (une clé d'accès, aucun mot de passe), en laissant
#    cochée la case « Include sample content »

# 5. Créer un jeton d'API dans le back office (content:write et
#    schema:write), puis verser le contenu du thème, une fois
EMDASH_TOKEN=... node scripts/moteur-import.mjs --url https://site.example.com

# 6. Vérifier : la version et l'heure du build réellement en ligne
curl -s https://site.example.com/version.json

Les déploiements suivants passent par la même commande, DOMAINE=site.example.com bash scripts/deployer-frontal.sh, après pnpm build:moteur : elle s'arrête à la première étape qui échoue, et la version précédente reste en ligne. Sans Cloudflare Images sur le compte, construisez avec ALOHA_IMAGES=origine pnpm build:moteur et retirez la ligne "images" de wrangler.moteur.jsonc. Ensuite, un contenu publié depuis le back office est en ligne sans reconstruire le site. Le pas à pas complet, avec les noms propres au thème et le branchement du bouton « Mettre le site à jour », est dans son docs/moteur.md.

Vous préférez qu'on le mette en ligne pour vous ? L'installation clé en main se commande sur alohapixel.com.

Brancher la vente

Trois thèmes vendent, chacun à sa façon.

Kai : la boutique complète, avec votre compte Stripe

Moteur allumé, Kai encaisse par Stripe Checkout et gère commandes, stock, remboursements et factures dans le back office. Deux secrets à poser une fois, puis une adresse de webhook à déclarer chez Stripe, avec trois événements : checkout.session.completed, checkout.session.async_payment_succeeded et charge.refunded. L'écran « Brancher Stripe » du back office redonne les commandes exactes. Sans ces deux secrets, le panier reste celui de démonstration et personne ne peut payer.

Kona : la vitrine de votre boutique Shopify

Le catalogue, les prix, les taxes et le paiement restent chez Shopify. Une seule valeur : l'adresse de votre vitrine dans .env (SHOPIFY_STORE_URL). Aucune clé d'API, aucune application à installer : Kona lit le catalogue public de la boutique. pnpm shopify:check vérifie ce qu'elle répond avant tout build.

Nalu : la vitrine de votre boutique WooCommerce

Même principe : WOO_STORE_URL dans .env, aucune clé d'API, et l'extension WordPress wordpress/nalu-headless.php à installer sur votre WordPress, pour que le panier y soit accepté. pnpm woo:check vérifie la connexion.

# Kai : les deux secrets Stripe, une fois
pnpm wrangler secret put STRIPE_SECRET_KEY --config wrangler.moteur.jsonc
pnpm wrangler secret put STRIPE_WEBHOOK_SECRET --config wrangler.moteur.jsonc
# l'adresse du webhook à déclarer chez Stripe :
#   https://site.example.com/_commerce/stripe/webhook

# Kona et Nalu : vérifier la boutique avant de construire
pnpm shopify:check
pnpm woo:check

Le thème pilote ces services, il ne les remplace pas : l'ouverture du compte, les frais, les délais de versement et de remboursement restent ceux de Stripe, de Shopify ou de WooCommerce.

Administrer votre site

Moteur allumé, tout ce que voient vos visiteurs se change depuis le back office EmDash, sans toucher à un fichier : textes, photos, vidéos, boutons et leurs adresses, blocs à masquer, menus, pied de page, logo, couleur de marque, pages ajoutées, référencement, redirections. La barre « Edit » modifie la page sous vos yeux. Selon le thème s'y ajoutent la lettre d'information de Reef, d'Aloha et de Swell (inscription confirmée par courriel, désinscription par une page de confirmation), les étiquettes des articles, l'auteur ou la rubrique choisis par leur nom, et pour Kai toute la boutique : produits, stock par option, commandes, remboursements et factures, avec votre propre compte Stripe. Le bandeau de cookies redemande un choix au bout de 182 jours. Chaque thème livre le guide pas à pas de votre client : docs/administrer.md (et docs/administer.md en anglais).

Tout sur le back office : barre d'édition, courriels, commandes Stripe, mise à jour d'un site en ligne

Piloter le site avec Claude

Moteur allumé, chaque thème embarque le serveur MCP d'EmDash : Claude, ou tout assistant compatible, lit et modifie les contenus du site, les publie, gère les médias et les menus, avec les droits du jeton que vous lui donnez.

Adresse du serveur : https://site.example.com/_emdash/api/mcp
En-tête            : Authorization: Bearer <votre jeton>

Créez le jeton dans le back office, avec les seules permissions dont l'assistant a besoin. Dans Claude, ajoutez un connecteur personnalisé : un nom (le domaine du site), l'adresse ci-dessus et l'en-tête Authorization. Vous écrivez ensuite « change le titre de la page d'accueil » ou « traduis la FAQ en anglais et publie-la », et l'assistant le fait dans le back office, en brouillon ou publié selon ce que vous demandez.

Le jeton est un secret : il ne se colle ni dans un document, ni dans une conversation.

En faire une application native

Les sept thèmes livrent une configuration Capacitor (capacitor.config.ts) et la commande pnpm app, qui construit le site statique pour l'application. L'application n'embarque que ce site statique : ni back office, ni caisse Stripe de Kai (elle vit sur le serveur), et la caisse Shopify ou WooCommerce de Kona et de Nalu s'ouvre hors de l'application. La scène vidéo d'Aloha utilise des médias distants : remplacez-les par des fichiers embarqués pour un usage hors ligne. La compilation native, la signature et la publication restent à votre charge.

pnpm app
pnpm add @capacitor/core @capacitor/ios @capacitor/android
pnpm add -D @capacitor/cli
# Personnalisez capacitor.config.ts avant la suite
npx cap add ios && npx cap open ios
npx cap add android && npx cap open android

Après chaque changement de contenu : pnpm app && npx cap sync.

Travailler avec un agent IA

Ouvrez le dossier dans n'importe quel agent de code qui lit AGENTS.md, le mode d'emploi du dépôt. Il renvoie aux conventions du thème (Astro, Tailwind, TypeScript, animation, référencement), à sa doctrine de design et à sa documentation technique. Demandez une nouvelle section et l'agent la construit dans le design system au lieu d'inventer le sien.

Si quelque chose coince

Le build s'arrête sur une photo

Les thèmes qui ont des photos de démonstration les téléchargent au build, et s'arrêtent plutôt que de publier une image floue ou manquante. Vérifiez la connexion et relancez, ou remplacez la photo par la vôtre : le fichier PHOTOS.md du thème dit d'où vient chacune.

Kona affiche encore le catalogue de démonstration

SHOPIFY_STORE_URL est vide, ou la boutique est protégée par un mot de passe, ce qui est le réglage d'une boutique de développement : elle ne publie alors pas son catalogue (Boutique en ligne, Préférences, Protection par mot de passe). pnpm shopify:check dit lequel des deux.

Un changement fait dans Shopify ou WooCommerce ne se voit pas

Les produits, les prix et les rayons de Kona et de Nalu sont lus au build : cliquez « Mettre le site à jour » dans le back office. Seule la disponibilité est relue à chaque visite.

Personne ne peut payer sur Kai

Les deux secrets Stripe manquent, ou le webhook n'est pas déclaré chez Stripe avec ses trois événements : voir « Brancher la vente ». L'écran « Brancher Stripe » du back office dit ce qui manque.

Les courriels du site ne partent pas

Le domaine d'envoi n'est pas encore inscrit chez Cloudflare Email Sending. L'écran « Brancher les courriels » du back office dit ce qui manque, enregistrements DNS compris.

Choisir la langue du back office

Il s'ouvre en français par défaut. Construit avec ALOHA_BO_LANGUE=en pnpm build:moteur, il s'ouvre en anglais, et chaque éditeur peut toujours changer sa langue dans ses réglages. Quelques mots écrits par EmDash lui-même restent en anglais ; la barre d'édition du site, elle, suit la langue du back office (« Modifier », « Publier »).

Un déploiement a échoué

Le script s'arrête à la première étape qui échoue et laisse la version précédente en ligne : vos visiteurs ne voient jamais un site cassé. Corrigez ce que le message indique, puis relancez la même commande.

Mises à jour et support

Chaque version jusqu'à la prochaine version majeure est incluse dans votre licence : vous recevez un email avec un lien de téléchargement frais, et la page des nouveautés raconte ce qui a changé, en français clair. Le support se fait par email, à contact@alohapixel.com, et c'est celui qui a écrit le code qui répond.

Prêt à construire sur du solide ?

Vous achetez une fois, c'est à vous, et vous livrez autant de produits finaux que vous voulez.

Remboursé sous 14 jours, sans justification.