Ce site a pour objectif de recenser un maximum d'œuvres d'art présentes dans des jeux vidéo. On y trouvera la liste des artistes, des jeux et des œuvres ainsi que de leurs lieux de conservation.
Site en production : https://everygameamuseum.com
Simplicité est le maître mot de ce site, ainsi qu'une recherche de légèreté et d'accessibilité. Le projet privilégie une approche minimaliste avec :
- Du code propre et maintenable
- Des performances optimales
- Une accessibilité maximale
- Un design épuré et efficace
- Drupal 11 - CMS moderne avec système d'entités personnalisées
- PHP 8.2+ - Langage serveur
- MariaDB - Base de données
- Composer - Gestion des dépendances PHP
- TailwindCSS - Framework CSS utilitaire
- Alpine.js - Interactions JavaScript légères
- Twig - Moteur de templates
- PhotoSwipe 5.4.4 - Galeries d'images
- Swiper 11.0.6 - Carrousels d'images
- Docker - Environnement de développement local
- GitHub Actions - CI/CD automatisé
- Drush - CLI Drupal pour les tâches d'administration
- Docker et Docker Compose
- Git
- Cloner le projet
git clone [repository-url]
cd every_game_drupal- Copier le fichier d'environnement
cp .env.example .env- Configurer les variables d'environnement
Éditer
.envavec vos paramètres locaux :
PROJECT_NAME=egam
PROJECT_BASE_URL=egam.localhost
DB_NAME=drupal
DB_USER=drupal
DB_PASSWORD=drupal
DB_ROOT_PASSWORD=password
DB_HOST=egam_mariadb- Démarrer Docker
docker-compose up -d- Installer les dépendances
docker exec -u wodby egam_php composer install- Importer la base de données
Placer votre dump SQL dans
.docker/mariadb-init/et redémarrer le conteneur DB, ou :
docker exec -i egam_mariadb mysql -u root -p[password] drupal < backup.sql- Importer la configuration
docker exec -u wodby egam_php vendor/bin/drush config:import -y
docker exec -u wodby egam_php vendor/bin/drush cr- Accéder au site
- Site : http://egam.localhost
- MailHog (emails) : http://egam.localhost:8025
cd web/themes/custom/egam
# Installer les dépendances npm
npm install
# Mode développement avec watch
npm run watch
# Build de production
npm run build:prodLe site est construit autour de 5 types d'entités custom :
- Artwork (
egam_artwork) - Les œuvres d'art trouvées dans les jeux - Artist (
egam_artist) - Les artistes créateurs des œuvres - Game (
egam_game) - Les jeux vidéo contenant les œuvres - Museum (
egam_museum) - Les musées où se trouvent les œuvres originales - Screenshot (
egam_screenshot) - Les captures d'écran des jeux
Toutes les entités :
- Étendent
RevisionableContentEntityBase - Supportent les révisions et traductions
- Ont des handlers de formulaires personnalisés
- Utilisent
EntityChangedTraitetEntityOwnerTrait
web/modules/custom/
├── egam_global/ # Module partagé central
│ ├── src/
│ │ ├── Entities.php # Enum central pour toutes les entités
│ │ ├── Service/ # Services partagés
│ │ └── Form/ # Formulaires partagés
│ └── ...
├── egam_artwork/ # Module Artwork
├── egam_artist/ # Module Artist
├── egam_game/ # Module Game
├── egam_museum/ # Module Museum
└── egam_screenshot/ # Module Screenshot
Le module egam_global fournit des fonctionnalités partagées :
Entitiesenum : Méthodes centralisées pour toutes les entités (comptage, chargement, routes)CustomEntityListBuilder: Classe de base pour les listes d'entitésRelatedContentHandler: Gestion des relations entre entitésHomeCoverHandler: Gestion de l'image de couverture de la page d'accueilContextManager: Service de gestion du contexteListFilterForm: Système de filtrage pour les listes
Le thème utilise :
- Base theme : Stable9
- TailwindCSS : Configuration dans
tailwind.config.js - Templates Twig : Organisation par type (block, content, field, etc.)
- Alpine.js : Interactions JS minimales (menu burger, modales, etc.)
Structure des templates :
web/themes/custom/egam/templates/
├── block/ # Blocs
├── content/ # Entités de contenu
├── field/ # Champs
├── layout/ # Layouts
├── media/ # Médias
├── navigation/ # Menus
├── views/ # Vues
└── webform/ # Formulaires
# Vider le cache
vendor/bin/drush cr
# Exporter la configuration
vendor/bin/drush config:export
# Importer la configuration
vendor/bin/drush config:import
# Mettre à jour la base de données
vendor/bin/drush updatedb
# Reconstruire les caches d'entités
vendor/bin/drush entity:updates
# État du site
vendor/bin/drush status# Démarrer les conteneurs
docker-compose up -d
# Arrêter les conteneurs
docker-compose down
# Voir les logs
docker-compose logs -f
# Accéder au conteneur PHP
docker exec -it egam_php bash
# Exécuter une commande Drush
docker exec -u wodby egam_php vendor/bin/drush [commande]# Installer les dépendances
composer install
# Mettre à jour Drupal core
composer update drupal/core-recommended --with-all-dependencies
# Ajouter un module
composer require drupal/[module_name]- admin_toolbar (3.4) : Barre d'administration améliorée
- gin (5.0) + gin_toolbar (3.0) : Thème d'administration moderne
- pathauto (1.11) : Génération automatique d'alias d'URL
- metatag (2.0) : Gestion des balises meta SEO
- search_api (1.29) : Fonctionnalités de recherche
- focal_point (2.1) : Point focal pour images responsives
- swiper_formatter (2.0-beta) : Formateur de champ Swiper
- views_infinite_scroll (2.0) : Défilement infini pour les vues
- simple_sitemap (4.2) : Génération de sitemap XML
- webform (6.3-beta) : Constructeur de formulaires
- antibot (2.0) + honeypot (2.2) : Protection anti-spam
- Créer une branche feature depuis
main - Faire les modifications de code
- Tester localement
- Exporter la configuration :
vendor/bin/drush config:export - Commit et push
- Créer une Pull Request
- Après merge dans
main, déploiement automatique via GitHub Actions
Le projet utilise GitHub Actions pour le déploiement automatique :
- Déclenchement automatique sur push vers
main - Déploiement sur VPS Docker
- Scripts de déploiement manuel disponibles à la racine du projet (
deploy.sh,rollback.sh,webhook-listener.sh)
Pour plus de détails, consulter CLAUDE.md section "Deployment & CI/CD".
Les contributions sont les bienvenues ! Merci de :
- Respecter les conventions de code Drupal
- Tester vos modifications localement
- Documenter les nouvelles fonctionnalités
- Exporter la configuration avant de commit
Pour toute question ou problème :
- Consulter
CLAUDE.mdpour les détails techniques - Vérifier la documentation Drupal : https://www.drupal.org/docs
- Ouvrir une issue sur le repository