Site web pour promouvoir le bénévolat au Club Alpin Français de Lyon-Villeurbanne.
🌐 Production : benevolat.clubalpinlyon.fr
- Node.js 18+
- pnpm 10.9.0 (installé automatiquement via corepack)
# Cloner le repository
git clone https://github.com/Club-Alpin-Lyon-Villeurbanne/benevolat.git
cd benevolat
# Installer les dépendances
pnpm install
# Lancer le serveur de développement
pnpm dev
Le site sera accessible sur http://localhost:3000
benevolat/
├── components/ # Composants React réutilisables
│ ├── Header.js # En-tête avec image de fond
│ ├── Navbar.js # Barre de navigation
│ └── Footer.js # Pied de page avec liens sociaux
├── pages/ # Pages Next.js (routing automatique)
│ ├── index.js # Page principale
│ └── roles.json # Données des rôles bénévoles
├── public/ # Fichiers statiques
│ └── assets/ # Images et icônes
├── styles/ # Feuilles de style
│ └── globals.css # Styles globaux (Bootstrap custom)
└── CLAUDE.md # Guide pour l'assistant IA Claude
- Framework : Next.js 15 (Pages Router)
- UI : React 18 + CSS Modules
- Styles : Bootstrap 5 (customisé) + CSS Modules
- Déploiement : Netlify
- Gestion de paquets : pnpm
- Linting : ESLint + Prettier
- Tests E2E : Cypress
# Développement
pnpm dev # Serveur de dev sur :3000
# Build & Production
pnpm build # Build de production
pnpm start # Serveur de production
# Qualité du code
pnpm lint # Vérifier le code
pnpm lint:fix # Corriger automatiquement
pnpm format # Formater avec Prettier
# Tests
pnpm test # Lancer Cypress (serveur dev requis sur port 3000)
pnpm test:open # Ouvrir Cypress GUI
Aucune variable d'environnement n'est requise pour le développement.
Le déploiement est automatique à chaque push sur main
. Configuration dans netlify.toml
.
Les alias de chemins sont configurés dans jsconfig.json
:
@components/*
→components/*
@styles/*
→styles/*
Éditer le fichier pages/roles.json
:
{
"Nom": "Nom du rôle",
"Departement": "Nom du département",
"Description": "Description du rôle"
}
- Texte principal :
pages/index.js
- Navigation :
components/Navbar.js
- Footer :
components/Footer.js
- Placer les images dans
public/assets/img/
- Utiliser le composant Next.js Image :
import Image from 'next/image';
<Image
src="/assets/img/mon-image.jpg"
alt="Description"
width={400}
height={300}
/>
- Global : Modifier
styles/globals.css
- Composant : Créer
Component.module.css
Pour éviter les limitations de Netlify sur les repos privés d'organisation (feature payante), le déploiement utilise un fork personnel :
- Repo principal :
github.com/Club-Alpin-Lyon-Villeurbanne/benevolat
- Repo de déploiement :
github.com/nicolasRitouet/benevolat
(privé) - Netlify : connecté au repo personnel pour le déploiement automatique
-
Développement normal sur le repo principal :
git add . git commit -m "mes changements" git push origin main
-
Pour déployer en production, pusher vers le repo personnel :
# Ajouter le remote s'il n'existe pas déjà git remote add deploy https://github.com/nicolasRitouet/benevolat.git # Pusher les changements git push deploy main
-
Netlify détecte automatiquement le push et déploie le site
pnpm build
# Les fichiers sont dans .next/
Les tests utilisent Cypress pour les tests E2E. Avant de lancer les tests :
-
Démarrer le serveur de développement (port 3000) :
pnpm dev
-
Dans un autre terminal, lancer les tests :
pnpm test
Note : Si Cypress n'est pas installé, il s'installera automatiquement au premier lancement.
# Le serveur utilisera automatiquement le port 3001
Vérifier que le rendu côté serveur et client est identique. Éviter :
Math.random()
dans le rendu- Dates dynamiques
- Conditions basées sur
window
Vérifier :
- Que toutes les dépendances sont dans
package.json
- Que le build local fonctionne :
pnpm build
- Les logs de build sur Netlify
- Créer une branche depuis
main
- Faire les modifications
- Vérifier :
pnpm lint && pnpm build
- Créer une Pull Request
- ESLint + Prettier sont configurés
- Les hooks pre-commit formatent automatiquement
- Suivre les conventions React/Next.js existantes
Pour toute question technique :
- Ouvrir une issue sur GitHub
- Contact : benevolat@clubalpinlyon.fr
Développé avec ❤️ pour le Club Alpin Lyon-Villeurbanne