# 🚀 Astro Starter Kit Un starter kit moderne et Ă©lĂ©gant, optimisĂ© pour la performance et le SEO. Construit avec **Astro**, **React** et **Tailwind CSS**. ## ✹ FonctionnalitĂ©s - ⚡ **Ultra rapide** : GĂ©nĂ©ration statique avec Astro - ⚛ **React** : Hydratation partielle intelligente (Islands Architecture) - 🎹 **Tailwind CSS** : Styling moderne et responsive - 🔍 **SEO optimisĂ©** : Meta tags et structure HTML5 - 🐳 **Docker ready** : Build multi-stage optimisĂ© ## 📩 Structure du projet ``` / ├── src/ │ ├── layouts/ │ │ └── BaseLayout.astro # Layout de base avec SEO │ ├── components/ │ │ └── InteractiveCounter.jsx # Composant React dĂ©mo │ ├── pages/ │ │ └── index.astro # Page d'accueil │ └── styles/ │ └── global.css # Styles Tailwind ├── public/ ├── Dockerfile # Build multi-stage ├── docker-compose.yml └── astro.config.mjs ``` ## 🚀 DĂ©marrage rapide ### DĂ©veloppement local ```bash # Installer les dĂ©pendances pnpm install # Lancer le serveur de dev pnpm run dev ``` Le site sera accessible sur `http://localhost:4321` ### Build de production ```bash # GĂ©nĂ©rer les fichiers statiques pnpm run build # PrĂ©visualiser le build pnpm run preview ``` ### Docker ```bash # Build et lancement avec Docker Compose docker compose up -d --build # Le site sera accessible sur http://localhost:8080 ``` ## 🎯 Concepts clĂ©s ### Hydratation partielle (Islands Architecture) Astro envoie **zĂ©ro JavaScript par dĂ©faut**. Les composants React ne sont hydratĂ©s que si vous utilisez une directive `client:*` : ```astro ``` ### Directives client disponibles - `client:load` : Hydrate immĂ©diatement - `client:idle` : Hydrate quand le navigateur est inactif - `client:visible` : Hydrate quand visible dans le viewport - `client:media` : Hydrate selon une media query ## 📝 Personnalisation ### Ajouter une nouvelle page CrĂ©ez un fichier `.astro` dans `src/pages/` : ```astro --- import BaseLayout from '../layouts/BaseLayout.astro'; ---

Contenu de ma page

``` ### Ajouter un composant React CrĂ©ez un fichier `.jsx` dans `src/components/` et utilisez-le avec une directive `client:*` pour l'interactivitĂ©. ## đŸ› ïž Technologies - [Astro](https://astro.build) - Framework web moderne - [React](https://react.dev) - BibliothĂšque UI - [Tailwind CSS](https://tailwindcss.com) - Framework CSS utility-first - [Docker](https://www.docker.com) - Containerisation ## 🚀 DĂ©ploiement sur Coolify (Production) Suivez cette procĂ©dure Ă©tape par Ă©tape pour dĂ©ployer une nouvelle instance de ce site. ### 1. PrĂ©paration dans Gitea 1. Allez sur le dĂ©pĂŽt du template dans Gitea. 2. Cliquez sur **"Utiliser ce modĂšle"** (Use this template). 3. CrĂ©ez votre nouveau dĂ©pĂŽt (ex: `mon-nouveau-site`). ### 2. CrĂ©ation du projet dans Coolify 1. Dans Coolify, crĂ©ez un **New Project**. 2. Choisissez **Private Repository** (avec dĂ©ploiement via clĂ© privĂ©e). 3. SĂ©lectionnez la clĂ© privĂ©e : `Gitea`. 4. SĂ©lectionnez le serveur : `avqn-worker`. ### 3. Configuration du Git Remplissez les informations suivantes : - **Repository URL** : Utilisez le format SSH court (ex: `git@git.avqn.ch:AVQN/mon-nouveau-site.git`). > ⚠ **Attention** : Ne mettez PAS `ssh://` devant. - **Branch** : `main` ### 4. Configuration du Build Coolify va charger le dĂ©pĂŽt. Une fois chargĂ©, configurez comme suit : - **Build Pack** : Choisissez `Nixpacks`. - **Options** : - Cochez la case **Is it a static site?** ✅. - **Publish Directory** : Laissez `dist`. ### 5. Configuration du Domaine Changez le domaine par dĂ©faut (ex: `https://mon-site.app.avqn.ch`). ### 6. FonctionnalitĂ©s AvancĂ©es (Indispensable pour les PRs) 1. Allez dans l'onglet **Features** (ou Configuration -> Advanced). 2. Cochez **Preview Deployments** pour activer les environnements temporaires sur les Pull Requests. ### 7. Configuration des Webhooks (SĂ©curitĂ©) Pour que Coolify puisse nettoyer les environnements de PR automatiquement : 1. Dans Coolify (menu **Webhooks** du projet), dĂ©finissez un **Webhook Secret** (gĂ©nĂ©rez-en un ou mettez un mot de passe fort). 2. Copiez ce secret. 3. Allez dans **Gitea -> Configuration du dĂ©pĂŽt -> Webhooks**. 4. Ajoutez le Webhook Coolify (ou modifiez l'existant) et collez le code dans le champ **Secret**. ### 8. Lancement Cliquez sur **Deploy**. 🚀