Un boilerplate moderne et production-ready pour Nuxt 4 avec authentification complète, gestion d'état, système de thème et multilingue. Conçu pour démarrer rapidement vos projets avec les meilleures pratiques.
- 🔐 Authentification complète : Login, inscription, vérification email, mot de passe oublié
- 🎨 Thème clair/sombre : Switch automatique avec persistance
- 🌍 Multilingue (i18n) : Français et Anglais prêts à l'emploi
- 📱 Responsive : Layout adaptatif mobile-first
- 🎯 Type-safe : TypeScript partout avec auto-complétion
- 🔄 Gestion d'état : Pinia avec persistance (sessionStorage/cookies)
- ✅ Validation : Formulaires avec Zod et gestion d'erreurs
- 🎭 Architecture modulaire : Organisation par domaines fonctionnels
| Catégorie | Technologies |
|---|---|
| Framework | Nuxt 4 • Vue 3 • TypeScript |
| UI | PrimeVue • Tailwind CSS • Heroicons |
| État | Pinia • pinia-plugin-persistedstate |
| Validation | Zod |
| i18n | @nuxtjs/i18n |
| Images | @nuxt/image |
| Code Quality | Prettier • TypeScript strict |
- Node.js 18+ ou Bun
- npm, pnpm, yarn ou bun
# Cloner le projet
git clone https://github.com/votre-username/boilerplate-nuxt.git
cd boilerplate-nuxt
# Installer les dépendances
npm install
# ou
pnpm install- Copier le fichier d'environnement :
cp .env.example .env- Configurer les variables d'environnement dans
.env:
# URL de l'application
APP_URL=http://localhost:3000
# URL de l'API backend
API_URL=https://your-api-url.comnpm run devOuvrez http://localhost:3000 dans votre navigateur.
Le projet suit une architecture Domain-Driven où chaque fonctionnalité (domaine) regroupe :
- Ses composants Vue
- Ses composables (logique métier)
- Ses types TypeScript
- Ses traductions i18n
- Ses endpoints API
app/
├── components/[domain]/ # Composants par domaine
├── composables/[domain]/ # Logique métier par domaine
│ ├── forms/ # Gestion des formulaires
│ ├── requests/ # Requêtes API
│ └── use*.ts # Composables orchestrateurs
├── constants/ # Constantes globales
├── enums/ # Enumerations globales
├── layouts/ # Layouts globaux
├── middleware/ # Middleware globaux
├── pages/[domain]/ # Pages par domaine
├── plugins/ # Plugins globaux
├── stores/ # Stores Pinia
├── types/ # Types TypeScript
└── utils/ # Utils globaux
i18n/[lang]
├── [domain].json # Traductions par domaine
server/api/[domain]/ # Endpoints API par domaine
shared/types # Types partagés
Domaines implémentés :
auth/: Authentification et autorisationaccount/: Gestion du compte utilisateur_layout/: Composants globaux (Topbar, Footer)_shared/: Composants réutilisables
📖 Pour une documentation détaillée de l'architecture, consultez AGENTS.md
Le projet inclut des tests unitaires avec 100% de couverture des fichiers TypeScript :
- Vitest - Framework de test rapide et moderne
- @nuxt/test-utils - Support des composables et auto-imports Nuxt
- happy-dom - Environnement DOM léger
npm run test # Lance tous les tests
npm run test:ui # Interface UI interactive📖 Voir tests/README.md pour la documentation complète des tests
- ✅ Inscription avec validation email
- ✅ Connexion (email/username)
- ✅ Mot de passe oublié
- ✅ Refresh token automatique
- ✅ Guards de routes (middleware)
- ✅ Déconnexion avec cleanup
- ✅ Modification du nom
- ✅ Changement d'email (avec vérification)
- ✅ Changement de mot de passe
- ✅ Suppression du compte
- ✅ Thème clair/sombre avec switch
- ✅ Variables CSS personnalisables
- ✅ Layout responsive
- ✅ Composants PrimeVue stylés
- ✅ Messages d'erreur contextuels
# Développement
npm run dev # Lance le serveur de développement
# Production
npm run build # Compile pour la production
npm run preview # Preview de la version production
# Tests
npm run test # Lance tous les tests
npm run test:ui # Lance les tests en mode UI
# Code Quality
npx prettier --write . # Formate le code
npx nuxi typecheck # Vérification TypeScriptLes variables sont définies dans .env et accessibles via useRuntimeConfig() :
const config = useRuntimeConfig();
// Public (client + serveur)
console.log(config.public.appUrl);
// Privé (serveur uniquement)
console.log(config.apiUrl);- Créer un dossier dans
i18n/locales/[code-langue]/ - Ajouter les fichiers de traduction (JSON)
- Configurer dans
nuxt.config.ts:
i18n: {
locales: [
// ... autres langues
{
code: "de",
files: ["de/authentication.json", "de/layout.json"],
name: "Deutsch",
},
],
}Modifier les variables CSS dans app/assets/css/main.css :
:root {
--color-primary-500: #10b981; /* Votre couleur primaire */
/* ... autres variables */
}- Créer les types dans
shared/types/[feature].ts - Créer l'endpoint API dans
server/api/[feature]/ - Créer les composables dans
app/composables/[feature]/ - Créer les composants dans
app/components/[feature]/ - Créer les pages dans
app/pages/[feature]/ - Ajouter les traductions dans
i18n/locales/[lang]/[feature].json
📖 Guide complet dans AGENTS.md - Guides de développement
- AGENTS.md - Documentation technique complète (architecture, patterns, conventions)
- Nuxt Documentation - Framework Nuxt
- PrimeVue Documentation - Composants UI
- Pinia Documentation - Gestion d'état