hasaneks/web-craft-arch

Règles d'architecture et d'intégration pour les applications web React (Next.js App Router ou React avec Vite) : limites entre composants serveur et client, couche API unique avec un modèle d'erreur typé, propriété d'état, react-hook-form + Zod avec erreurs serveur mappées aux champs, limites d'état (loading.tsx, error.tsx, Suspense), architecture i18n (registre de locales, ordre de résolution, politique d'URL, locale par requête, catalogues, kit et locale de date), RTL avec propriétés logiques, authentification, XSS, CSRF, isolation des secrets et du cache.

Qu'est-ce que web-craft-arch ?

Ce skill définit une architecture complète pour les applications web React, qu'elles utilisent Next.js App Router ou React avec Vite. Il impose des règles strictes sur la séparation entre composants serveur et client, en veillant à ce que les parties interactives soient minimisées et que le code serveur (secrets, ORM) ne soit jamais importé côté client. L'architecture de la couche API est unifiée : un unique client fetch, un modèle d'erreur typé basé sur des codes stables, et un comportement d'authentification centralisé. La gestion de l'état est clairement répartie : état serveur dans la couche de requête/cache, état global client dans un petit store ou contexte, état de formulaire avec react-hook-form + Zod, et état UI local dans le composant. Le skill couvre également les formulaires avec react-hook-form + Zod, la gestion des états de chargement, d'erreur et de non trouvé avec des limites précises (loading.tsx, error.tsx, Suspense), et une architecture i18n rigoureuse (registre de locales, ordre de résolution, politique d'URL, locale par requête, catalogues, kit et locale de date). La sécurité est traitée côté serveur avec autorisation, sanitization HTML, protection CSRF, et isolation du cache. Enfin, il aborde le RTL avec propriétés logiques, le thème, le SEO, et des adaptateurs pour des frameworks (Next.js, Vite) et des kits d'interface (shadcn/ui, Ant Design, Material UI).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hasaneks/web-craft/tree/HEAD/skills/web-craft-arch

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Architecture d'application web

Lisez web-craft d'abord. Ne chargez que les références nécessaires à la tâche ; les adaptateurs de kit et de framework uniquement pour le kit et le framework choisis.

Plan

SujetRéférence
Composants serveur vs client, BFF, limite des secrets et variables d'environnementreferences/server-client.md
Couche API, modèle d'erreur, propriété d'état, formulaires, UI optimiste, état d'URLreferences/data-forms.md
Limites de chargement, d'erreur et de non trouvé, réessai, hors ligne, timing des squelettesreferences/states.md
i18n : registre, résolution, URL, catalogues, formatage, en-tête backendreferences/i18n.md
RTL, propriétés logiques, icônes directionnelles, portailsreferences/rtl.md
Authentification, autorisation, XSS, CSRF, cookies, isolation du cache, données personnellesreferences/auth-security.md
Thème : préférence utilisateur vs thème appliqué, changements système, pas de flashreferences/theming.md
SEO pour les pages publiquesreferences/seo.md
GEO : visibilité dans la recherche AI et les assistantsreferences/geo.md
Adaptateur Next.js App Routerreferences/fw-next.md
Adaptateur React + Vitereferences/fw-vite.md
Adaptateur shadcn/uireferences/kit-shadcn.md
Adaptateur Ant Designreferences/kit-antd.md
Adaptateur Material UIreferences/kit-mui.md
Travailler avec un backend node-craft (ou tout OpenAPI)references/node-craft-contract.md
Sources officielles et dates de révisionreferences/sources.md

Règles qui s'appliquent partout

  1. Limites selon le besoin. Un composant est un composant client parce qu'il nécessite de l'interactivité, des API navigateur ou un état client, pas par défaut. Gardez les îlots interactifs petits. N'importez jamais de code serveur uniquement, de clients ORM ou de secrets dans le code client ; une variable d'environnement publique n'est pas un secret.
  2. Une seule couche API. Un seul client fetch, un seul modèle d'erreur typé indexé par des codes stables et un statut, un seul comportement d'authentification. Les fonctionnalités ne construisent pas leur propre fetch et réessai. Les données serveur vivent dans la couche de requête/cache, l'état global client dans un petit store ou contexte, l'état de formulaire dans l'outil de formulaire, l'état UI local dans le composant. Une source mock est activée par configuration pour le développement et les tests, jamais en modifiant les fonctionnalités ; les réponses non fiables sont analysées à l'exécution.
  3. Formulaires. react-hook-form + Zod sauf si le projet dispose d'un autre outil. mode: 'onTouched', reValidateMode: 'onChange', focus et défilement sur la première erreur, erreurs de champ serveur via setError, valeurs conservées après les erreurs, double soumission bloquée. Le serveur reste l'autorité en matière de validation.
  4. Les états ont des limites. Limites de chargement et d'erreur au niveau de la route, plus Suspense local là où les données arrivent en continu ; un widget défaillant ne vide pas la page.
  5. L'i18n est une architecture. Un moteur réel, un registre de locales (balise BCP 47, direction, catalogue, nom d'affichage), repli sur l'anglais sauf choix contraire, locale par requête sur le serveur, même locale initiale sur le serveur et le client, catalogues chargés par locale et espace de noms, kit et locale de date mappés depuis la locale de l'application.
  6. La sécurité est côté serveur. Autorisation dans le backend. Sanitisez tout HTML que vous rendez. Les sessions par cookie nécessitent une protection CSRF. Les réponses personnelles ne vont jamais dans un cache partagé ; les réponses dépendantes de la locale et de l'utilisateur varient leurs clés de cache.
  7. Les pages publiques sont trouvables. Métadonnées correctes pour la locale rendues sur le serveur, canonique par langue, alternatives hreflang uniquement pour les vraies contreparties, plan du site, données structurées correspondant au contenu visible. GEO commence par cela : un contenu indexable et citable, et une politique explicite pour les robots d'AI. Aucune garantie de classement ou de citation.
  8. Les kits sont adaptés, pas enveloppés. Le thème et les tokens proviennent des décisions de conception du produit. Enveloppez un composant de kit uniquement pour un comportement produit répété ou pour figer une API. N'empilez pas un deuxième système d'animation sur les transitions propres d'un kit.

Terminé

Appliquez web-craft → terminé, plus : aucun bundle client ne contient un secret ou un module serveur uniquement ; deux requêtes simultanées dans des locales différentes ou pour des utilisateurs différents ne peuvent pas mélanger les données ; le premier rendu est dans la bonne langue et le bon thème ; chaque combinaison kit/framework revendiquée a été effectivement vérifiée.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés