Première implémentation du site public qui remplacera le WordPress de lectix.fr.
Le catalogue statique contient les 16 produits électroniques open source conservés après la fermeture de LECTIX, classés en trois familles. Les prix, le stock, le panier, les avis clients et les accessoires génériques achetés pour la revente ne sont pas repris. Chaque fiche rassemble les explications, les principaux schémas et un lien direct vers le dépôt open source.
npm install
npm run devCopier .env.example vers .env pour activer localement Turnstile ou remplacer le jeton public PostHog. Les secrets serveur ne doivent jamais être placés dans .env ni dans le dépôt.
La mesure d'audience PostHog est déjà reliée au projet LECTIX. Elle ne démarre que sur lectix.fr et www.lectix.fr, afin que les consultations locales ne faussent pas les statistiques. Le jeton de projet PostHog est public par conception ; PUBLIC_POSTHOG_KEY permet seulement de le remplacer. La configuration utilise uniquement sessionStorage : aucun cookie, aucun profil visiteur et aucun suivi persistant entre deux visites. Elle mesure les pages vues et quittées, les clics sur les liens et boutons, les Web Vitals et les erreurs JavaScript non gérées. Le formulaire de contact, les valeurs saisies, les enregistrements de session, les cartes de chaleur et les journaux de console restent exclus. Les signaux Do Not Track et Global Privacy Control sont respectés.
Le référencement est documenté dans AUDIT_REFERENCEMENT.md. Le build génère un sitemap limité aux pages éditoriales et produit, des données structurées JSON-LD et /llms.txt. Après npm run build, exécuter npm run check:seo pour vérifier titres, descriptions, canonicals, liens internes, JSON-LD, directives robots et concordance du sitemap.
npm run check
npm run build
npm run check:seoLe résultat statique est généré dans dist/.
Le site est construit localement puis publié comme site statique sur l'hébergement Hostinger de lectix.fr.
- le contenu de
dist/est déployé à la racine depublic_html; server/contact.phpest ajouté au paquet sousapi/contact.php;public/.htaccess, automatiquement copié dansdist/par Astro, contient les redirections et les en-têtes de sécurité ;contact-config.phpreste dansdomains/lectix.fr/, à côté depublic_htmlet donc inaccessible depuis le Web ;- le secret Turnstile ne doit jamais se trouver dans le dépôt, dans l'archive ou dans une variable commençant par
PUBLIC_.
Le formulaire utilise le transport hsendmail disponible sur l'hébergement Hostinger Premium. SMTP reste une solution de repli si la délivrabilité devient insuffisante.
La procédure ci-dessous est prévue pour un agent disposant d'un accès au dépôt GitHub et au MCP Hostinger.
-
Lire ce README, inspecter
git statuset ne jamais écraser des modifications locales qui ne concernent pas le déploiement. -
Installer les dépendances avec
npm ci, puis lancer :ASTRO_TELEMETRY_DISABLED=1 npm run check ASTRO_TELEMETRY_DISABLED=1 npm run build
-
Préparer le résultat à publier :
mkdir -p dist/api cp server/contact.php dist/api/contact.php
-
Vérifier avant archivage que
dist/index.html,dist/.htaccess,dist/api/contact.phpetdist/scripts/contact.jsexistent. Vérifier aussi qu'aucun fichier nommécontact-config.php, aucune clé secrète et aucun.DS_Storene sont présents dansdist/. -
Créer une archive dont
index.htmlse trouve directement à la racine, avec un nom de la formestatic-lectix-website_YYYYMMDD_HHMMSS.zip. Ne pas placer le dossierdistlui-même au premier niveau de l'archive. -
Avec le MCP Hostinger, appeler d'abord
hosting_listWebsitesV1afin de retrouver le compte et le sitelectix.frsans deviner l'identifiant d'hébergement. Présenter la cible exacte à l'utilisateur et obtenir sa confirmation avant toute écriture. -
Publier l'archive avec
hosting_deployStaticWebsite, pour le domainelectix.fr, avec suppression de l'archive locale après succès. Le déploiement remplace le contenu depublic_html, mais ne doit jamais modifier le fichier privédomains/lectix.fr/contact-config.php. -
Si l'API de déploiement renvoie une erreur après l'envoi de l'archive, inspecter d'abord les fichiers présents et le site public : un import peut avoir abouti malgré une erreur finale de l'API. Ne pas relancer aveuglément le déploiement.
-
Vider le cache du site avec
hosting_clearWebsiteCacheV1, puis vérifierhttps://lectix.fr/ethttps://www.lectix.fr/. Une réponse HTTP 200 ne suffit pas : contrôler également le titre ou une phrase propre au site LECTIX. -
Vérifier que
GET /api/contact.phprenvoie405 Method Not Allowed. Un test complet du formulaire envoie réellement un e-mail : l'agent doit demander une confirmation explicite juste avant ce test. Le même jeton Turnstile rejoué doit renvoyerstatus=error. -
Lorsque les contrôles sont terminés, committer uniquement les fichiers concernés et pousser la branche vers GitHub.
Exemple de demande à donner à un LLM :
Déploie la version actuelle de ce dépôt sur le site Hostinger
lectix.fren suivant strictement la section « Déploiement par un LLM » du README. Construis et vérifie le site, montre-moi la cible avant toute écriture, ne touche jamais au fichier privécontact-config.php, puis contrôle le contenu réellement servi après avoir vidé le cache.
Depuis la racine du dépôt :
npm ci
ASTRO_TELEMETRY_DISABLED=1 npm run check
ASTRO_TELEMETRY_DISABLED=1 npm run build
mkdir -p dist/api
cp server/contact.php dist/api/contact.phpContrôler ensuite que les quatre fichiers indispensables sont présents :
dist/index.html
dist/.htaccess
dist/api/contact.php
dist/scripts/contact.js
Créer une archive ZIP à partir du contenu de dist/. À l'ouverture de l'archive, index.html doit apparaître immédiatement à la racine et non dans un sous-dossier dist/.
- Dans hPanel, réaliser une sauvegarde ou conserver une copie du contenu actuel de
domains/lectix.fr/public_html. - Ouvrir le gestionnaire de fichiers Hostinger et accéder à
domains/lectix.fr/public_html. - Remplacer le contenu public par celui de l'archive, puis extraire les fichiers avec écrasement. Vérifier que le fichier caché
.htaccessa bien été copié. - Supprimer l'archive ZIP du serveur après extraction.
- Ne pas supprimer ni déplacer
domains/lectix.fr/contact-config.php, qui se trouve volontairement hors depublic_html. - Vider le cache du site depuis hPanel.
Pour une toute première installation seulement, copier server/contact-config.example.php vers domains/lectix.fr/contact-config.php, puis renseigner dans ce fichier privé l'adresse destinataire, l'expéditeur du domaine et le secret Turnstile.
- ouvrir
https://lectix.fr/ethttps://www.lectix.fr/dans une fenêtre privée ; - vérifier l'accueil, la liste des produits, une fiche produit, une page de schéma et la page de contact ;
- appeler
https://lectix.fr/api/contact.phpen GET et vérifier que le serveur répond405 Method Not Allowed; - envoyer un message de test depuis le formulaire et vérifier sa réception ;
- en cas d'ancienne version encore visible, vider de nouveau le cache Hostinger et le cache du navigateur avant de modifier les fichiers.
En cas de problème, restaurer la sauvegarde de public_html. Le fichier privé de contact ne fait pas partie du paquet statique et doit être conservé pendant tout retour arrière.