KocinaSpeed est une plateforme moderne de recettes de cuisine française rapides et délicieuses. Développée avec Symfony 7.1, elle offre une expérience utilisateur exceptionnelle avec un design moderne, des fonctionnalités avancées et une optimisation SEO complète pour Google et les IA.
- Fonctionnalités
- Architecture
- Installation
- Configuration
- Technologies utilisées
- Optimisations SEO
- Structure du projet
- Commandes personnalisées
- API et Endpoints
- Support
- Contributeurs
- Navigation par catégories : Desserts, Plats, Apéritifs
- Recherche avancée : Recherche par nom de recette en temps réel
- Système de notation : Notes de 1 à 5 étoiles avec commentaires
- Upload d'images : Les utilisateurs peuvent ajouter des photos de leurs réalisations
- Interface responsive : Design moderne avec UIkit et dégradés subtils
- Gestion complète des recettes : CRUD avec gestion des images multiples
- Modération des avis : Système d'approbation des commentaires
- Gestion des utilisateurs : Rôles et permissions
- Messages de contact : Interface de gestion des demandes utilisateurs
- Dashboard moderne : Interface intuitive et statistiques
- Intégration YouTube : Vidéos de démonstration pour les recettes
- Podcast intégré : Présentation audio de KocinaSpeed
- Système de slugs : URLs SEO-friendly optimisées
- Pagination intelligente : Avec Pagerfanta
- Emails automatiques : Notifications pour les nouveaux avis
- Reset de mot de passe : Système sécurisé de récupération
- Optimisation images : Compression et lazy loading automatiques
- PWA Ready : Installation possible comme application native
src/
├── Controller/ # Contrôleurs (Home, Recipe, Review, Contact, etc.)
│ └── Admin/ # Contrôleurs d'administration EasyAdmin
├── Entity/ # Entités Doctrine (Recipe, User, Review, etc.)
├── Form/ # Types de formulaires Symfony
├── Repository/ # Repositories Doctrine
└── Command/ # Commandes console personnalisées
templates/
├── base.html.twig # Template de base
├── home/ # Templates de la page d'accueil
├── recipe/ # Templates des recettes
├── admin/ # Templates d'administration
└── emails/ # Templates d'emails
public/
├── uploads/ # Images uploadées
│ ├── recipes/ # Images des recettes
│ └── reviews/ # Images des avis
└── img/ # Assets statiques
- PHP 8.2+ avec extensions :
ctype
,iconv
- Composer (gestionnaire de dépendances PHP)
- MySQL 5.7+ ou MariaDB 10.2+
- Node.js & npm (pour les assets front-end)
- Symfony CLI (optionnel mais recommandé)
- Cloner le projet
git clone https://github.com/krismos64/kocinaspeed.git
cd kocinaspeed
- Installer les dépendances PHP
composer install
- Configuration de l'environnement
cp .env .env.local
# Éditer .env.local avec vos paramètres
- Configuration de la base de données
DATABASE_URL="mysql://username:password@127.0.0.1:3306/kocinaspeed?serverVersion=8.0"
- Créer la base de données
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
- Créer un utilisateur administrateur
php bin/console app:create-admin-user
- Installer les assets
php bin/console importmap:install
- Démarrer le serveur de développement
symfony server:start
# ou
php -S localhost:8000 -t public
- Accéder à l'application
- Site public : http://localhost:8000
- Administration : http://localhost:8000/admin
# Base de données
DATABASE_URL="mysql://username:password@127.0.0.1:3306/kocinaspeed?serverVersion=8.0"
# Configuration email
MAILER_DSN=smtp://support@kocinaspeed.fr:password@smtp.server.com:465
# Environnement
APP_ENV=dev
APP_SECRET=your-secret-key
# Répertoires d'upload (configurés dans services.yaml)
RECIPE_IMAGES_DIR=%kernel.project_dir%/public/uploads/recipes
REVIEW_IMAGES_DIR=%kernel.project_dir%/public/uploads/reviews
# Permissions pour les répertoires d'upload
sudo chown -R www-data:www-data public/uploads/
sudo chmod -R 755 public/uploads/
# Cache et logs
sudo chown -R www-data:www-data var/
sudo chmod -R 755 var/
Le projet utilise Symfony Messenger pour l'envoi d'emails asynchrones. Configuration dans config/packages/messenger.yaml
.
- Symfony 7.1 - Framework PHP moderne
- PHP 8.2+ - Langage backend avec les dernières fonctionnalités
- Doctrine ORM - Mapping objet-relationnel
- MySQL/MariaDB - Base de données relationnelle
- EasyAdmin 4 - Interface d'administration
- Symfony Messenger - Gestion des tâches asynchrones
- UIkit 3 - Framework CSS moderne et responsive
- Twig - Moteur de templates
- Stimulus - Framework JavaScript léger
- AssetMapper - Gestion des assets Symfony
- Symfony Security - Authentification et autorisation
- Symfony Mailer - Envoi d'emails avec support SMTP
- Pagerfanta - Pagination avancée
- Symfony Form - Gestion des formulaires
- Doctrine Migrations - Gestion des évolutions de BDD
- Métadonnées complètes : Title, description, keywords optimisés
- Open Graph & Twitter Cards : Partage social optimisé
- Données structurées JSON-LD : Schema.org Recipe, Organization, FAQPage
- Sitemap XML dynamique : URLs, images et vidéos indexées
- Robots.txt intelligent : Optimisé pour IA (GPTBot, Claude, ChatGPT)
- Canonical URLs : Éviter le contenu dupliqué
- Hreflang : Support international (fr, fr-FR)
- Core Web Vitals : Performance et UX optimisées
- Balises méta IA : content-type, schema-context
- Descriptions enrichies : Contexte complet pour compréhension IA
- Alt text automatique : Images avec descriptions contextuelles
- Service SEO : Génération automatique de métadonnées
Recipe {
id, name, slug, description,
ingredients (JSON), cookingTime,
category, rating, video (YouTube),
images (OneToMany), reviews (OneToMany)
}
User {
id, email, password, name, roles,
resetToken, resetTokenExpiry,
reviews (OneToMany)
}
Review {
id, rating (1-5), comment, approved,
visitorName, visitorEmail,
recipe (ManyToOne), user (ManyToOne),
images (OneToMany)
}
Route | Contrôleur | Description |
---|---|---|
/ |
RecipeController::index |
Page d'accueil |
/recettes/{category} |
RecipeController::recipeList |
Liste des recettes |
/recette/{slug} |
RecipeController::show |
Détail d'une recette |
/recherche |
RecipeController::search |
Recherche de recettes |
/contact |
ContactController::contact |
Formulaire de contact moderne |
/mentions-legales |
DefaultController::mentionsLegales |
Mentions légales |
/admin |
EasyAdmin | Interface d'administration |
/sitemap.xml |
SitemapController::index |
Sitemap XML dynamique |
/robots.txt |
SitemapController::robots |
Robots.txt optimisé |
# Créer un utilisateur administrateur
php bin/console app:create-admin-user
# Optimiser toutes les images du projet
php bin/console app:optimize-images
# Réchauffer le cache avec les données critiques
php bin/console app:cache:warmup
# Configuration complète de l'environnement de développement
./scripts/setup-dev-environment.sh
- GET
/recherche?query={term}
- Recherche de recettes par nom
- GET
/admin
- Dashboard administrateur - CRUD
/admin/recipe
- Gestion des recettes - CRUD
/admin/review
- Modération des avis - CRUD
/admin/user
- Gestion des utilisateurs - CRUD
/admin/contact
- Messages de contact
- GET
/sitemap.xml
- Plan du site XML automatique - GET
/sitemap-images.xml
- Sitemap des images - GET
/robots.txt
- Directives pour robots et IA - GET
/manifest.json
- Manifest PWA
# Cache
php bin/console cache:clear
# Base de données
php bin/console doctrine:schema:update --dump-sql
php bin/console doctrine:fixtures:load
# Assets
php bin/console importmap:update
# Tests (si configurés)
php bin/phpunit
Pour contribuer au projet :
- Forkez le repository
- Créez une branche feature (
git checkout -b feature/nouvelle-fonctionnalite
) - Committez vos changements (
git commit -am 'Ajout nouvelle fonctionnalité'
) - Pushez sur la branche (
git push origin feature/nouvelle-fonctionnalite
) - Créez une Pull Request
- Design moderne : Dégradés subtils et animations fluides
- Interface responsive : Optimisée mobile-first avec UIkit
- Formulaire de contact : Design glassmorphism avec effets visuels
- Chatbot stylisé : Interface néon avec animations interactives
- Lazy loading : Optimisation des performances images
- Vérifiez les logs dans
var/log/dev.log
ouvar/log/prod.log
- Consultez la documentation Symfony officielle
- Utilisez les commandes de débogage Symfony
- Vérifiez les permissions des répertoires
var/
etpublic/uploads/
- Email : support@kocinaspeed.fr
- GitHub Issues : Pour les bugs et améliorations
- Christophe Mostefaoui - Développeur - GitHub
- Framework Symfony et sa communauté
- UIkit pour l'interface utilisateur
- Toute la communauté PHP
KocinaSpeed - Cuisinez vite, cuisinez bien ! 🍽️✨