Le Monde GC constitue l'application Web de référence du Monde de Génération City, un monde virtuel reposant sur les jeux de construction de ville et le jeu de rôle entre nations.
- Système de cartographie basé sur OpenLayers 2
- Gestion économique des pays, impliquant des infrastructures, les quêtes, la cartographie
- Groupes de pays : les organisations
- Interactivité via les communiqués, les réactions, les notifications et le système de vote intégré à l'Assemblée générale
Liens : Site du Monde GC - Le forum de la communauté - Discord
Le site du Monde GC est une application développée par Calimero, et lancée en 2013. Son développement a été repris par Sakuro et Roxayl, avec la contribution de Myname et de vallamir. L'aspect graphique est réalisé par Lesime et Roxayl.
Le site du Monde GC, depuis la version 2.5 (juillet 2020), repose sur le framework Laravel, et les nouvelles fonctionnalités du site reposent sur ce framework. La documentation de Laravel est riche et n'hésitez pas à vous renseigner sur son fonctionnement, intuitif et puissant. Les sources sont accessibles à tous depuis avril 2023 : venez vous aussi contribuer au projet phare de la communauté Génération City.
Le Monde GC s'exécute sur un environnement de développement comprenant les logiciels suivants :
- PHP 8.1
- Un moteur de base de données : MySQL (5.7 ou supérieur) ou MariaDB (10.3 ou supérieur)
- Un serveur Web : Apache (2.4, fortement conseillé) ou nginx (nécessite d'adapter les règles de réécriture d'URL)
- Composer 2, le gestionnaire de dépendances pour PHP
- Node.js 16 et npm, un moteur JavaScript et un gestionnaire de dépendances pour des environnements JavaScript
L'application fournit une configuration permettant d'exécuter l'application de manière conteneurisée, via Docker. La configuration est décrite dans les fichiers docker-compose.yml et Dockerfile.
Ce guide fournit les étapes pour démarrer l'application Web sur votre machine. Elle détaille :
- l'installation de Docker et Docker Compose
- sur Windows
- sur les systèmes Linux
- l'installation et l'initialisation de l'application
Docker Desktop constitue l'outil idéal pour gérer des applications conteneurisées facilement sur Windows.
L'installation de Docker Desktop est détaillée dans ce tutoriel.
La documentation de Docker détaille la procédure pour installer Docker, selon la distribution Linux que vous utilisez. Vous devez installer :
- Docker Engine, le coeur de Docker ;
- Docker Compose, permettant de gérer un ensemble d'applications conteneurisées.
Une fois que tout est installé, vous êtes prêt pour déployer l'application Web via Docker.
-
Clonez le dépôt Git dans un répertoire sur votre machine, en ligne de commande :
git clone git@github.com:Roxayl/mondegc.git
-
Lancez les conteneurs Docker de l'application via la commande suivante, depuis le répertoire
.devcontainer
:cd .devcontainer docker compose -p mondegc_dev up -d
-
Accédez au conteneur de l'application via la commande à saisir dans un terminal.
docker compose -p mondegc_dev exec app /bin/bash
-
Dans le conteneur de l'application, exécutez la commande permettant d'installer les dépendances et bibliothèques externes PHP (gérée par Composer).
composer install
-
Toujours dans le conteneur de l'application, exécutez la commande d'initialisation. Cette commande va notamment générer des clés et d'autres variables d'environnement.
php artisan monde:init-env
-
Initialisez ensuite la base de données. Enfin, vous pouvez sortir du conteneur via la commande
exit
.php artisan monde:init-db exit
-
Vwalà ! Retrouvez le Monde GC à l'adresse suivante : http://localhost. La base de données est initialisée avec un utilisateur par défaut, dont vous pouvez utiliser les identifiants pour vous connecter (nom d'utilisateur :
Admin
, mot de passe :password
).
La carte interactive repose sur une matrice de tuiles. Vous pouvez télécharger l'ensemble des images qui composent la carte à partir des liens ci-dessous. Deux archives sont proposés, une archive complète et une archive allégée, contenant uniquement les tuiles correpondant aux niveaux de zoom les plus faibles. Vous pouvez télécharger et extraire le contenu de ces archives dans le répertoire racine.
Type d'archive | Téléchargement | Taille | Niveaux de zoom |
---|---|---|---|
Archive complète | carto-full.zip | 1 135 Mo | 1-7 |
Archive allégée | carto-light.zip | 168 Mo | 1-4 |
Vous pouvez arrêter l'application via la commande docker-compose -p mondegc_dev down
, à partir du répertoire racine. Relancez-la à
tout moment avec docker-compose -p mondegc_dev up -d
.
Le processus de développement suit les règles décrites par GitHub Flow. Pour plus d'informations, cet article donne des détails sur le cadre posé par cette stratégie de branche. Pour plus d'informations sur les modalités de contribution, consultez le document CONTRIBUTING.md.
Les sources du site sont gérées par Git, hébergées sur un certain nombre de plateformes.
Plateforme | Dépôt | Complet ? | Visibilité | Commentaires |
---|---|---|---|---|
GitHub | Roxayl/mondegc | Oui | Public | Dépôt principal |
Bitbucket | Roxayl/mondegc | Oui | Privée | Miroir du dépôt principal, lecture seule |
Pour accéder au répertoire de l'application au sein du conteneur principal mondegc_app
, vous pouvez taper les
commandes suivantes dans un terminal dans le répertoire .devcontainer
:
docker compose -p mondegc_dev exec app /bin/bash
À partir de là, vous pouvez accéder à l'interface en ligne de commande fournie par Artisan, gérer les dépendances NPM et Composer, et exécuter les tests.
L'application utilise Composer afin d'installer et mettre à jour les bibliothèques qu'elle utilise.
Dans le conteneur principal (app), vous pouvez mettre à jour les bibliothèques externes décrites dans le fichier
composer.json via la commande composer update
.
Lorsque vous modifiez les assets JavaScript et CSS/SCSS situés dans le dossier resources/, vous devez les compiler afin qu'ils soient générés dans le dossier public/ et accessibles via le navigateur Web.
Pour ce faire, toujours dans le conteneur principal, les bibliothèques JavaScript décrits dans le fichier
package.json peuvent être installés avec la commande npm install
.
Vous pouvez ensuite compiler les assets CSS/SCSS et JavaScript en exécutant npm run dev
. Le comportement de la
compilation des assets est décrit dans le fichier webpack.mix.js. Notez que les assets situés
dans le répertoire assets/ ne nécessitent pas d'être compilés.
Vous pouvez exécuter les tests unitaires et fonctionnels via PHPUnit, en exécutant dans le
conteneur principal php artisan test
. L'environnement de test utilise les variables présentes dans le fichier
.env.testing
, que vous pouvez générer via la commande php artisan monde:init-testing
. Par défaut, les tests
utilisent une base de données dédiée, nommée mondegc_testing
. Leur exécution n'affectera donc pas les données
présentes sur votre base de données de développement.
L'application utilise un outil d'analyse statique du
code fournie par Psalm. La commande ./vendor/bin/psalm
permet d'analyser les sources à la
recherche de problèmes liés à des erreurs de typage.
L'application utilise barryvdh/laravel-ide-helper afin de générer des helpers, sous forme de commentaires PHPDoc, permettant d'aider les logiciels de développement intégré à analyser le code et contribuer à l'autocomplétion. Il est possible de générer les propriétés et méthodes liées aux modèles Eloquent via la commande suivante. Les commentaires décrivant les propriétés et méthodes des modèles sont intégrés dans le bloc PHPDoc de la classe concernée.
php artisan ide-helper:models --write
Il est également possible de générer un helper pour les façades Laravel, ainsi qu'un fichier dédié à l'autocomplétion par PhpStorm. Les commandes pour le faire sont décrits sur la documentation de la librairie.
Vous pouvez accéder au site via l'adresse : http://localhost. Par ailleurs, le fichier de configuration Docker installe des services annexes permettant de faciliter la gestion des données du site Web, décrits ci-dessous.
Vous pouvez accéder à une instance de PHPMyAdmin, qui fournit une interface Web pour gérer la base de données, à l'adresse : http://localhost:8080. Les identifiants d'accès sont précisés dans le fichier .env généré lors de l'installation de l'application.
MailHog fournit un serveur mail permettant de tester l'envoi de courriers électroniques sortants générés par l'application. MailHog est configuré pour fonctionner dès l'initialisation du conteneur Docker. Vous pouvez accéder à son interface Web à l'adresse : http://localhost:8025.
Le site du Monde GC fournit un service permettant d'accéder aux données de l'application, en vue d'être utilisées par d'autres services.
Chaque utilisateur peut générer un jeton d'authentification à partir de son compte (dans le menu "Mes pays" sur l'interface Web, "Gérer mon compte", puis dans la section "Outils avancés", appuyer sur "Générer").
Vous pouvez accéder à une ressource en passant le jeton en tant que "Bearer Token". Un exemple de requête en ligne de commande avec cURL serait le suivant :
curl -i http://localhost/api/resource/fetch/pays \
-H "Authorization: Bearer Rn4u3IA3bqPqNSqhbGJkcpQFOAq2K30T5OI20wJ2D9Q55BpMco7tV1ppU0QT"
Pour plus d'informations sur l'API, consultez la page dédiée !