Documentation pour car-hub.xyz
Table des matières
- Introduction
- Installation
- Configuration
- Fonctionnalités
- Structure de la base de données
- Factories et Seeders
- Routes
- Contrôleurs
- Politiques
- Tests
- Accessibilité
- Style et Frontend
- Intégrations tierces
- Déploiement (avec GitHub Actions)
- Licence
Introduction
car-hub.xyz est une application web basée sur Laravel conçue pour gérer les voitures, leurs caractéristiques et les interactions utilisateur telles que les listes de favoris et l'authentification. Elle utilise les fonctionnalités intégrées de Laravel comme Eloquent ORM, les templates Blade et Sanctum pour l'authentification API.
Installation
- Cloner le dépôt
- Installer les dépendances :
- Exécuter
composer install
- Exécuter
npm install
- Exécuter
- Copier
.env.example
vers.env
- Générer la clé d'application :
php artisan key:generate
- Configurer la base de données dans
.env
et lancer les migrations :php artisan migrate --seed
- Compiler les assets frontend :
npm run dev
- Démarrer le serveur de développement :
php artisan serve
Configuration
- Variables d'environnement : Configurez le fichier
.env
pour la base de données, le mail et les services tiers. - Configuration des files d'attente : Mettez à jour
queue.php
pour les drivers comme Redis ou la base de données. - Authentification : Utilise la connexion basée sur la session.
Fonctionnalités
- Gestion des voitures :
- Ajouter, modifier, supprimer et voir les voitures.
- Gérer les caractéristiques et les images des voitures.
- Authentification utilisateur :
- Connexion, inscription et réinitialisation du mot de passe.
- Connexion OAuth via Google et Facebook.
- Liste de favoris : Ajouter ou retirer des voitures de la liste de favoris de l'utilisateur.
- Gestion du profil : Mettre à jour le profil utilisateur et le mot de passe.
- Recherche et filtres : Rechercher des voitures par marque, modèle, ville et autres attributs.
- Panneau d'administration : Gérer les utilisateurs et les voitures via Filament Admin Panel.
Structure de la base de données
Tables métier :
users
: Informations utilisateur.cars
: Détails des voitures.car_features
: Caractéristiques de chaque voiture.car_images
: Images des voitures.favorite_cars
: Liste de favoris utilisateur.makers
: Constructeurs automobiles.models
: Modèles de voitures, liés aux constructeurs.car_types
: Types de voitures (ex : berline, SUV).fuel_types
: Types de carburant (ex : essence, diesel).cities
: Villes, liées aux états.states
: États.
Factories et Seeders
Factories :
CarFactory
: Génère des voitures aléatoires.CarFeatureFactory
: Génère des caractéristiques aléatoires.CarImageFactory
: Génère des images de voitures aléatoires.UserFactory
: Crée des utilisateurs de test.
Seeders :
DatabaseSeeder
: Remplit les données initiales pour les constructeurs, types de voitures, etc.
Routes
Routes publiques :
/
: Page d'accueil./car/search
: Recherche de voitures./signup
: Inscription utilisateur./login
: Connexion utilisateur.
Routes authentifiées :
/car
: Gérer les voitures./watchlist
: Voir la liste de favoris./profile
: Gérer le profil.
Les routes sont définies dans :
web.php
auth.php
Contrôleurs
Contrôleurs principaux :
- CarController : Gère les opérations CRUD et les caractéristiques des voitures.
- SignupController : Gère l'inscription utilisateur.
- WatchlistController : Gère l'ajout/retrait de voitures dans la liste de favoris.
- ProfileController : Gère la mise à jour du profil et du mot de passe.
Politiques
CarPolicy : Autorise les actions comme la création, la modification et la suppression de voitures.
Tests
Tests fonctionnels :
CarTest
: Fonctionnalités liées aux voitures.AuthTest
: Authentification.SignupTest
: Inscription utilisateur.WatchlistTest
: Accès et actions sur la liste de favoris.ProfileTest
: Accès à la page profil.PasswordResetTest
: Réinitialisation du mot de passe.HomeTest
: Affichage des voitures sur la page d'accueil.
Exécuter les tests avec : php artisan test
Accessibilité
- HTML sémantique pour une meilleure prise en charge des lecteurs d'écran.
- Contraste des couleurs et tailles de police pour la lisibilité.
- Navigation accessible au clavier.
- Formulaires avec labels et messages d'erreur appropriés.
- Design responsive pour tous les appareils.
Style et Frontend
- CSS : Situé dans
app.css
. - JavaScript : Situé dans
app.js
.
Intégrations tierces
- Socialite : Connexion OAuth Google et Facebook. Configuré dans
services.php
. - Sanctum : Authentification API. Configuré dans
sanctum.php
. - Filament Admin Panel : Panneau d'administration pour la gestion des ressources.
Configuré dans
AdminPanelProvider.php
.
Déploiement (avec GitHub Actions)
L'application utilise GitHub Actions pour l'intégration et le déploiement continus (CI/CD). Le processus de déploiement est automatisé et déclenché lors de la création d'une nouvelle release.
Workflow GitHub Actions
Le workflow de déploiement est défini dans deploy.yml
.
Comment ça marche
- Déclencheur : Le workflow est déclenché lors de la création d'une nouvelle release sur le dépôt GitHub.
- Étapes de build :
- Le code est récupéré.
- Les environnements PHP et Node.js sont configurés.
- Les dépendances sont installées avec Composer et npm.
- Les tâches Laravel comme la génération de la clé, la création du lien de stockage et l'exécution des migrations sont réalisées.
- Les assets frontend sont compilés.
- Les tests sont exécutés pour vérifier le bon fonctionnement de l'application.
- Déploiement : L'application est déployée sur le serveur via
appleboy/ssh-action
. Le serveur récupère le dernier tag de release, installe les dépendances, compile les assets et optimise l'application Laravel.
Licence
Cette application est un logiciel open source sous licence MIT.