Markdown Converter
Agent skill for markdown-converter
L'objectif est de générer une base de site web moderne, modulaire, et hautement performante en react/vite. Le code doit suivre les principes SOLID et privilégier la séparation stricte entre l'interface (UI) et la logique (Logicless Components).
Sign in to like and favorite skills
L'objectif est de générer une base de site web moderne, modulaire, et hautement performante en react/vite. Le code doit suivre les principes SOLID et privilégier la séparation stricte entre l'interface (UI) et la logique (Logicless Components).
Secteur,Technologie,Points clés Framework,React Router v7,"Mode Framework (ex-Remix), SSR/SSG natif." Runtime,React 19,"Support des Actions, use API et Suspense." Build Tool,Vite.js,"Plugin RR7, HMR ultra-rapide, build optimisé." Styling,Tailwind CSS v4,"Container Queries, cascade simplifiée, CSS natif." State,Zustand,État global léger pour l'UI et la session client. Data Fetching,TanStack Query,Cache serveur/client et sync temps réel. I18N,i18next,Détection serveur (SEO) + switch client sans reload. Animations,Framer Motion,Transitions de routes et micro-interactions.
/ ├── app/ │ ├── root.tsx # Entrée principale (Providers, I18N, SEO global) │ ├── routes.ts # Définition centralisée des routes │ ├── entry.server.tsx # Config du rendu côté serveur │ ├── entry.client.tsx # Config de l'hydratation côté client │ ├── routes/ # Pages et Layouts │ │ ├── _public.tsx # Layout SEO (Navbar, Footer) │ │ ├── _public.articles.tsx # Blog/Articles (Prerendered) │ │ ├── _auth.tsx # Layout Login/Register │ │ └── dashboard._index.tsx # App privée (Client-only) │ ├── components/ │ │ ├── ui/ # Atomes (Boutons, Inputs via Tailwind v4) │ │ └── features/ # Molécules métier (Comparateur, Graphiques) │ ├── lib/ │ │ ├── i18n/ # Config i18next (server & client) │ │ └── query-client.ts # Singleton TanStack Query │ └── store/ # Stores Zustand (authStore, uiStore) ├── public/ │ ├── locales/ # Fichiers JSON de traduction (fr/en) │ └── assets/ # Images et polices statiques ├── vite.config.ts # Configuration Vite + RR7 + Tailwind └── tsconfig.json # Config TypeScript stricte (Path Aliases)
Serveur : Détection de la langue via URL, Cookie ou Header Accept-Language.
Client : Hydratation du dictionnaire et changement de langue instantané.
Utilisation dans un composant :
TypeScript
import { useTranslation } from "react-i18next";
export function PricingCard() { const { t } = useTranslation(); return ; } ⚡ Flux de Données & Rendu
Zod Validation : Chaque retour d'API est validé via un schéma Zod avant d'atteindre le composant pour garantir l'intégrité du typage.
Résultat : Premier octet (TTFB) ultra-rapide et Indexation Google 100% fiable.
Dashboard (App Mode) : Utilisation du mode clientLoader pour les parties de l'application ne nécessitant pas de SEO, permettant une navigation instantanée type SPA sans solliciter le serveur inutilement.
Conform & Zod : Utilisation de la bibliothèque Conform pour la gestion des formulaires.
Validation côté serveur avec retour d'erreurs d'accessibilité immédiat.
Gestion native des états pending (chargement) sans besoin de useState manuel.
Note : Fonctionne même si le JavaScript n'est pas encore chargé.
Polling/Temps Réel : Rafraîchissement des données du dashboard (ex: prix, notifications) en arrière-plan.
Optimistic UI : Mise à jour instantanée de l'interface avant confirmation serveur sur les actions complexes.
Persistance : Cache global partagé entre les routes pour éviter les fetchs redondants sur les ressources statiques.
Zero-Flash : Le dictionnaire de traduction est injecté dans le contexte SSR, évitant tout "Layout Shift" ou texte non traduit au premier affichage.
♿ Accessibilité (A11y) & Qualité
🔍 SEO & Performance
🎨 Design & Thémisation
Une petite astuce "Pro-tip" pour ton implémentation :
Dans ton root.tsx, pense à utiliser le composant
C'est une excellente question. En 2026, pour qu'un agent IA (comme moi ou un agent de codage autonome) génère du code qui respecte exactement ton blueprint sans dériver vers des vieilles méthodes (comme useEffect ou axios), tu as besoin d'un fichier de contexte spécifique.
Je te conseille d'ajouter une section "7. Instructions pour l'Agent IA (System Prompting)" à ton MD ou de créer un fichier .cursorrules (si tu utilises Cursor) ou ai-instructions.md.
Voici la directive de configuration à ajouter pour "brider" l'IA sur ton architecture :
Data Fetching : Interdiction d'utiliser useEffect pour le fetch. Utilise exclusivement les loaders (SSR) ou clientLoader (SPA).
Types : Utilise TypeScript en mode strict. Chaque retour de loader doit être typé via useLoaderData
Validation : Tout paramètre d'URL ou corps de formulaire doit être validé par un schéma Zod.
Formulaires : Utilise les Actions de RR7 avec la bibliothèque Conform. Pas de gestion d'état useState manuelle pour les inputs.
Styling : Utilise exclusivement les utilitaires Tailwind CSS v4. Priorise les Container Queries (@container) pour les composants de la galerie components/features.
Composants : Applique le pattern Logicless UI. Les composants dans ui/ ne doivent contenir aucune logique métier.
SEO : Chaque route doit exporter une fonction meta utilisant les données du loader pour le titre et les balises OpenGraph."