Portfolio personnel développé avec Symfony 7.3, Stimulus et Webpack Encore.
- Prérequis
- Installation
- Développement
- Tests et qualité
- Déploiement
- Structure du projet
- Technologies
- License
- Docker et Docker Compose (recommandé)
- PHP 8.4+ (si installation native)
- Composer 2.x
- Node.js 20+ et Yarn
- PostgreSQL 17
- Redis 7
git clone https://github.com/florianorineveu/v3.git
cd v3cp .env .env.local
# Éditer .env.local avec vos valeursdocker compose up -d# PHP
docker compose exec php composer install
# JavaScript
yarn installdocker compose exec php php bin/console doctrine:database:create
docker compose exec php php bin/console doctrine:migrations:migrateyarn buildVotre application est maintenant accessible sur https://v3.local (ou l'URL configurée).
# Lancer l'environnement Docker
docker compose up -d
# Arrêter l'environnement
docker compose down
# Voir les logs
docker compose logs -f php
docker compose logs -f nginx# Mode développement (compile une fois)
yarn dev
# Mode watch (recompile automatiquement à chaque modification)
yarn watch
# Build production (minifié, optimisé)
yarn build
# Linter JavaScript
yarn lint
yarn lint:fix# Créer une entité
docker compose exec php php bin/console make:entity
# Créer un controller
docker compose exec php php bin/console make:controller
# Créer une migration
docker compose exec php php bin/console make:migration
docker compose exec php php bin/console doctrine:migrations:migrate
# Voir les routes
docker compose exec php php bin/console debug:router
# Vider le cache
docker compose exec php php bin/console cache:clear# Créer la base
docker compose exec php php bin/console doctrine:database:create
# Supprimer et recréer
docker compose exec php php bin/console doctrine:database:drop --force
docker compose exec php php bin/console doctrine:database:create
# Mettre à jour le schéma
docker compose exec php php bin/console doctrine:schema:update --force
# Charger des fixtures (si configuré)
docker compose exec php php bin/console doctrine:fixtures:load# Lancer tous les tests
docker compose exec php vendor/bin/phpunit
# Tests avec couverture
docker compose exec php vendor/bin/phpunit --coverage-text
# Tests d'un fichier spécifique
docker compose exec php vendor/bin/phpunit tests/Unit/Entity/UserTest.php# PHPStan (niveau 9)
vendor/bin/phpstan analyse
# PHP CS Fixer (vérification)
vendor/bin/php-cs-fixer fix --dry-run --diff
# PHP CS Fixer (correction automatique)
vendor/bin/php-cs-fixer fix
# Audit de sécurité Composer
composer audit# ESLint
yarn lint
yarn lint:fix# Tester les performances (nécessite Chrome)
yarn lighthouse# 1. Linter et corriger
vendor/bin/php-cs-fixer fix
yarn lint:fix
# 2. Analyse statique
vendor/bin/phpstan analyse
# 3. Tests
docker compose exec php vendor/bin/phpunit
# 4. Build production
yarn build
# 5. Audit sécurité
composer auditgit push origin develop
# Le workflow deploy-preprod.yaml se déclenche automatiquement# Créer une PR vers main
# Une fois mergée, le workflow deploy-prod.yaml se déclenche
# Lighthouse CI bloquera le merge si :
# - Performance < 95/100
# - Accessibility < 100/100
# - Best Practices < 100/100
# - SEO < 100/100Configurez les secrets GitHub dans Settings > Secrets > Actions :
APP_SECRET
DATABASE_URL
MAILER_DSN
REDIS_URL
# ... autres secrets
.
├── assets/ # Assets frontend (JS, SCSS)
│ ├── app.js # Point d'entrée Webpack
│ ├── bootstrap.js # Configuration Stimulus
│ ├── controllers/ # Controllers Stimulus
│ └── styles/ # Fichiers SCSS
├── config/ # Configuration Symfony
│ ├── packages/ # Configuration des bundles
│ └── routes/ # Routes
├── docker/ # Configuration Docker
│ ├── nginx/ # Config Nginx
│ └── php/ # Config PHP-FPM
├── migrations/ # Migrations Doctrine
├── public/ # Fichiers publics
│ ├── build/ # Assets buildés (généré)
│ └── index.php # Front controller
├── src/ # Code source PHP
│ ├── Controller/ # Controllers
│ ├── Entity/ # Entités Doctrine
│ ├── Repository/ # Repositories
│ └── ...
├── templates/ # Templates Twig
│ └── base.html.twig # Template de base
├── tests/ # Tests PHPUnit
├── var/ # Fichiers temporaires (cache, logs)
├── vendor/ # Dépendances PHP
├── .github/ # Workflows GitHub Actions
│ └── workflows/
│ ├── ci.yaml # Tests et qualité
│ ├── deploy-preprod.yaml
│ └── deploy-prod.yaml
├── .lighthouserc.json # Configuration Lighthouse
├── composer.json # Dépendances PHP
├── package.json # Dépendances JavaScript
└── webpack.config.js # Configuration Webpack Encore
- Symfony 7.3 - Framework PHP
- Doctrine ORM - Gestion de base de données
- PostgreSQL 17 - Base de données
- Redis 7 - Cache et sessions
- Messenger - Gestion des queues asynchrones
- Webpack Encore - Build tool
- Stimulus - JavaScript framework léger
- Turbo - Navigation SPA
- Sass/SCSS - Préprocesseur CSS
- PHPUnit - Tests unitaires et fonctionnels
- PHPStan (niveau 9) - Analyse statique
- PHP CS Fixer - Code style (Symfony + PSR-12)
- ESLint - Linter JavaScript
- GrumpPHP - Git hooks automatiques
- Lighthouse CI - Tests de performance web
- Docker & Docker Compose - Conteneurisation
- GitHub Actions - CI/CD
- Nginx - Serveur web
- PHP-FPM - Process manager PHP
Ce projet maintient des standards de qualité élevés :
- ✅ PHPStan niveau 9 - Analyse statique stricte
- ✅ PSR-12 - Code style Symfony
- ✅ 100% type coverage - Typage strict PHP
- ✅ Lighthouse scores - 95+/100/100/100 (Performance/A11y/BP/SEO)
- ✅ Git hooks - Vérifications automatiques avant commit
- ✅ CI/CD - Tests automatiques sur toutes les PR
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Florian "Ori" Neveu
Développeur full-stack passionné par la qualité du code et les performances web.
- 🌐 Site: https://florianorineveu.com
- 💻 GitHub: @florianorineveu
- 💼 LinkedIn: in/florianorineveu
- 📸 Instagram: @florianorineveu
- 🦋 Bluesky: @florianorineveu.com
Ce projet est mon portfolio personnel. Si vous souhaitez discuter de collaboration ou de questions techniques, n'hésitez pas à me contacter !