Application de bibliothèque en ligne moderne avec système de gestion des livres, auteurs et catégories
Application web full-stack permettant la gestion d'une bibliothèque en ligne avec :
- 📖 Consultation de livres avec détails complets
- 🛒 Système de panier pour les utilisateurs
- 👨💼 Interface d'administration pour la gestion CRUD
- 🔐 Authentification et gestion des rôles
- 📱 Design responsive et moderne
Nuxt-Symfony-Library-Demo/
├── 🎨 frontend/ # Application Nuxt 3 (Interface utilisateur)
│ ├── components/ # Composants Vue réutilisables
│ ├── pages/ # Pages de l'application
│ ├── middleware/ # Middlewares de protection
│ └── types/ # Types TypeScript
├── ⚙️ backend/ # API Symfony 7.3 (Backend)
│ ├── src/ # Code source PHP
│ ├── config/ # Configuration Symfony
│ └── migrations/ # Migrations de base de données
├── � Merise/ # Modélisation de données
└── � docs/ # Documentation du projet
- Nuxt.js 4.1.2 - Framework Vue.js full-stack
- Vue 3 3.5.22 - Framework JavaScript réactif
- TailwindCSS 4.1.13 - Framework CSS utilitaire
- TypeScript - Typage statique
- @nuxt/eslint - Qualité du code
- @nuxt/fonts - Optimisation des polices (Google Fonts)
- @nuxt/icon - Système d'icônes
- @nuxt/image - Optimisation d'images
- PHP 8.2+ - Langage de programmation
- Symfony 7.3 - Framework PHP moderne
- API Platform 4.2 - Création d'APIs REST/GraphQL
- Doctrine ORM 3.5 - Mapping objet-relationnel
- Doctrine Migrations - Gestion des migrations
- Nelmio CORS Bundle - Support CORS
- Symfony Security - Authentification et autorisation
- Symfony Serializer - Sérialisation JSON
- Symfony Validator - Validation des données
- MariaDB 10.4.32 (production)
- Serveur : 127.0.0.1 via TCP/IP
- Version : 10.4.32-MariaDB - mariadb.org binary distribution
- Utilisateur : root@
- Jeu de caractères : UTF-8 Unicode (utf8mb4)
Pour tester l'application, vous pouvez utiliser ces comptes pré-configurés :
- Identifiant :
admin
- Mot de passe :
admin
- Rôle : Administrateur
- Accès : Interface d'administration complète (gestion CRUD)
- Identifiant :
Darki
- Email :
[email protected]
- Mot de passe :
21ABa!35A6
- Rôle : Utilisateur
- Accès : Consultation, panier personnel
- Node.js ≥ 18.x
- PHP ≥ 8.2
- npm ou yarn
- XAMPP avec MariaDB/MySQL (ou serveur de base de données équivalent)
- MariaDB/MySQL doit être démarré sur le port 3306
- Utilisateur root avec accès localhost
Note : le projet a son installation locale, vous devrez donc probablement installer composer de votre côté
Assurez-vous que XAMPP est démarré avec :
- ✅ Apache (optionnel pour ce projet)
- ✅ MySQL/MariaDB (requis - port 3306)
Vérifiez que vous pouvez accéder à phpMyAdmin via http://localhost/phpmyadmin
git clone https://github.com/Kleb0/Nuxt-Symfony-Library-Demo.git
cd Nuxt-Symfony-Library-Demo
cd backend # IMPORTANT : Assurez-vous que votre terminal est bien dans le dossier backend pour toute la partie Symfony
# Installation locale de Composer via votre terminal powershell
Invoke-WebRequest -Uri "https://getcomposer.org/installer" -OutFile "composer-setup.php"
php composer-setup.php --install-dir=. --filename=composer
# Installation des dépendances (peut prendre un peu de temps)
php ./composer install
**✅ Configuration .ENV : Le projet inclut des fichiers .env
pré-configurés pour XAMPP/MariaDB.
# Créer la base de données
php bin/console doctrine:database:create
# importer dans votre phpmyadmin la base de données 'nuxt-symfony-db.sql'
#### **Démarrage du serveur**
symfony server:start
Backend accessible sur : http://localhost:8000
cd frontend #Important : Pour la partie frontend, votre terminal doit être sur le dossier frontend.
# Installation des dépendances (peut aussi prendre un peu de temps)
npm install
# Démarrage du serveur de développement
npm run dev
Frontend accessible sur : http://localhost:3000
- ✅ Consultation des livres disponibles
- ✅ Recherche et filtrage des livres
- ✅ Détails complets des livres (auteurs, catégories, résumé, prix)
- ✅ Inscription et connexion
- ✅ Gestion du panier personnel
- ✅ Gestion CRUD complète :
- 📚 Livres (création, modification, suppression, upload d'images)
- ✍️ Auteurs (informations complètes)
- 🏷️ Catégories (organisation du catalogue)
- ✅ Interface d'administration dédiée
- ✅ Protection des routes sensibles
- ✅ Gestion des rôles (utilisateur/admin)
- ✅ Protection des routes avec middlewares
- ✅ Validation des données côté backend
- ✅ Protection CORS configurée
- Responsive : Adapté mobile, tablette et desktop
- TailwindCSS : Design moderne et cohérent
- Animations : Transitions fluides
- UX optimisée : Navigation intuitive
- Réutilisables : Architecture modulaire
- Typés : TypeScript pour la robustesse
- Accessibles : Bonnes pratiques d'accessibilité
npm run dev # Serveur de développement
npm run build # Build de production
npm run preview # Aperçu de production
npm run generate # Génération statique
symfony server:start # Serveur de développement
php bin/console make:entity # Créer une entité
php bin/console doctrine:migrations:diff # Créer une migration
php bin/console cache:clear # Vider le cache
POST /api/auth/login
- Connexion utilisateurPOST /api/auth/register
- Inscription
GET /api/books
- Liste des livresGET /api/books/{id}
- Détail d'un livrePOST /api/books
- Créer un livre (admin)PUT /api/books/{id}
- Modifier un livre (admin)DELETE /api/books/{id}
- Supprimer un livre (admin)
GET /api/cart/current-user
- Panier de l'utilisateurPOST /api/cart/current-user/add
- Ajouter au panierPOST /api/cart/current-user/remove
- Retirer du panier
- ESLint configuré pour le frontend
- Conventions Symfony pour le backend
- TypeScript pour le typage statique
- Git hooks pour la validation pré-commit
- SSR : Rendu côté serveur avec Nuxt
- Images : Optimisation automatique
- Polices : Chargement optimisé
- Code splitting : Chargement à la demande
- Doctrine : ORM optimisé
- Serializer : Réponses JSON efficaces
- Cache : Système de cache Symfony
- Chrome ≥ 88
- Firefox ≥ 85
- Safari ≥ 14
- Edge ≥ 88
- Windows 10+
- macOS 11+
- Linux (Ubuntu 20.04+)
Ce projet a été développé dans le cadre d'un test technique. Pour toute suggestion ou amélioration :
- Fork le projet
- Créez votre branche (
git checkout -b feature/nouvelle-fonctionnalite
) - Committez vos changements (
git commit -m 'Ajout nouvelle fonctionnalité'
) - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite
) - Ouvrez une Pull Request
- Développeur : Kleb0
- Durée de développement : ~32 heures
- Période : Octobre 2025
- Type : Test technique