Organisation des fichiers
Castopod s'appuie sur le framework CodeIgniter, qui possède un modèle MVC consistant à diviser les différentes parties d'un projet sous trois formes :
- Les vues
- Les controlleurs
- Les modèles
Il existe également les entités qui sont des classes permettants de manipuler plus facilement des objets comme des utilisateurs ou des fichiers.
Pour en savoir plus sur ce modèle, nous vous invitons à vous diriger vers la page correspondante à l'explication de CodeIgniter ainsi qu'à la documentation officielle.
Une fois ce modèle bien compris, nous pouvons donc analyser la structure de Castopod, qui possède ces différents éléments.
Structure générale
Voici la structure générale du projet Castopod, qui sera détaillé plus en profondeur ensuite :
Docker 🐋
Pour gérer Docker, Castopod s'appuie sur des fichiers décrivants les différents containeurs à construire pour gérer le projet.
On a un fichier nommé docker-compose.yml qui décrit les containeurs à construire pour le projet, qui sont au nombre de 5 :
- Le containeur Castopod : Il va contenir l'ensemble des fichiers de CodeIgniter qui vont permettre de gérer le front-end et le back-end du projet
- Le containeur Redis : C'est un système de gestion de base de données. Il stocke les données en mémoire vive, ce qui le rend extrêmement rapide pour les opérations de lecture et d'écriture.
- Le containeur MariaDB : On retrouve la base de données générale du projet. Contrairement à Redis, elle est utilisé pour gérer des ensembles de données complexes avec des relations entre les tables.
- Le containeur PHP My Admin : Ce containeur va permettre d'avoir une gestion graphique de la base de données, en accédant à la page localhost:8888 (modifiable dans le .env du projet)
- Le containeur S3 Mock : C'est un outil qui simule le service de stockage d'objets d'Amazon Web Services (AWS) appelé Amazon S3
Ce fichier va permettre de gérer les ports sur lequel les containeurs vont être reliés à la machine hôte, de gérer différents paramètres des applications, les commandes qui vont être lancés au démarrage et le nom des volumes.
On a également un dossier Docker, qui contient un fichier dans le sous-dossier développement, qui va décrire la construction du containeur de Castopod.
Pour en savoir plus sur la gestion des fichiers Docker, nous vous invitons à lire la documentation officielle de Docker, qui contiendra plus d'informations sur le déploiement des containeurs.
Composer
Composer est un logiciel gestionnaire de dépendances libre écrit en PHP. Castopod s'appuyant sur de nombreuses bibliothèques pour fonctionner, Composer lui permet lors de son déploiement d'installer ces bibliothèques.
Pour cela, les bibliothèques PHP nécessaire sà Castopod sont listés dans un fichier nommé composer.json, qui indique également les versions à installer de ces bibliothèques, et qui créé des alias pour des commandes liées à ces bibliothèques dans la partie scripts du fichier.
Ces bibliothèques seront ensuite installées dans le dossier vendor une fois cette commande utilisée :
composer install
Encore une fois, pour avoir de plus ample informations, nous vous renvoyons vers la documentation de Composer qui vous décrira son fonctionnement.
Node
Node est, à l'instar de Composer, un gestionnaire de paquet mais en javascript, qui permet l'installation de bibliothèques en JS lors du déploiement du projet, ainsi que la gestion côté serveur.
L'ensemble de ces paquets sont détaillés dans le fichier package.json, ainsi que les alias qui pourront être utilisé via npm. Il permet par exemple l'utilisation de Vite, une bibliothèque permettant le développement en local de site internet.
Le dossier node_modules contient l'ensemble des bibliothèques JS installées, qui peuvent être téléchargées et installées via la commande :
npm install
Fichier .env
Ce fichier va décrire la manière donc le projet doit fonctionner. C'est un fichier phare du projet, qui est directement lié à CodeIgniter car c'est un fichier que l'on retrouve sur les projets utilisants ce framework.
Dans ce fichier, vous allez pouvoir indiquer des paramètres pour le fonctionnement de Castopod, comme :
- Le type de déploiement (production ou développement, ce qui va jouer les performances du projet)
- L'URL du projet (celle de l'application, et celle où les médias seront enregistrés)
- Les informations de la base de données
- Le préfix pour les enregistrement dans la base de données
- Les identifiants SMTP pour la gestion des emails
- La gestion d'une API REST sur Castopod
- Des configurations pour les containeurs du projet, tels que S3 ou Redis
Si vous souhaitez avoir plus d'informations sur ce fichier, nous vous invitons à vous diriger vers la documentation de CodeIgniter, qui décrit plus en profondeur les possibilités de ce fichier.
Tests
Dans ce dossier, vous allez retrouver les différents tests qui seront effectués durant le développement du projet. Pour cela, Castopod s'appuie sur la bibliothèque PHP Unit qui permet d'effectuer des tests unitaires sur des projets PHP.
Dans ce dossier, vous pouvez configurer votre propre test dans ce dossier, et des tests sont déjà effectués par défaut par PHP Unit. Le fichier README du dossier vous explique les étapes à effectuer pour lancer les tests, ou pour créer les votre directement.
Il existe deux manières de lancer ces tests, selon votre système d'exploitation :
./phpunit # Sur Linux et Mac
vendor\bin\phpunit # Sur Windows
Et vous pouvez spécifier un dossier particulier pour lancer les tests, en rajoutant en paramètre de la commande l'emplacement du dossier.