Vous devez au préalable avoir correctement installé les logiciels suivants :
- Git (2.6.4)
- Node.js (version utilisée disponible dans les fichiers .nvmrc) il est recommandé d'utiliser un gestionnaire de versions tel que nvm
- Docker (20.10)
⚠️ Les versions indiquées sont celles utilisées et préconisées par l'équipe de développement. Il est possible que l'application fonctionne avec des versions différentes.
Assurez-vous aussi de ne pas avoir de processus écoutant sur le port:
- 5432 (PostgreSQL), ou surchargez la variable
PIX_DATABASE_PORT
; - 6379 (redis), ou surchargez la variable
PIX_CACHE_PORT
.
Récupérer le code source en local
git clone [email protected]:1024pix/pix.git && cd pix
git clone --filter tree:0 [email protected]:1024pix/pix.git && cd pix
Définir dans .npmrc
l'invite de commande à utiliser pour lancer les script-shell.
Ouvrir une invite de commande (cmd.exe
) puis:
- installation 64bit :
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
- installation 32bit:
npm config set script-shell "C:\\Program Files (x86)\\git\\bin\\bash.exe"
Enfin, pour éviter les problèmes de retour ligne sous Windows:
git config --local core.autocrlf input
git rm -r --cached .
git reset --hard
Le script d'installation effectue les tâches suivantes :
- créer la base de données et le cache (conteneurs Docker)
- installer les librairies communes à tous les projets
Il prend moins de 5 minutes.
Exécutez-le avec npm run configure
Vérifiez que le script s'est bien terminé : le message "🎉 Congratulations! Your environment has been set up." doit être affiché. Si ce n'est pas le cas, contactez les équipes de développement en ouvrant une issue.
Pour les utilisateur de vscode, des fichiers de config sont disponibles dans le dossier .vscode
.
Pour les utiliser:
cp .vscode/sample.launch.json .vscode/launch.json
cp .vscode/sample.settings.json .vscode/settings.json
Les extensions recommandées peuvent se retrouver dans l'onglet extension en renseignant le filtre @recommanded
Pour démarrer l'ensemble des applications, exécuter npm run dev
Si cela pose problème, démarrer sélectivement les applications :
- Admin :
npm run dev:admin
- Api :
npm run dev:api
- App :
npm run dev:mon-pix
- Certif :
npm run dev:certif
- Orga :
npm run dev:orga
- Pix1d :
npm run dev:pix1d
- Pix Admin - port 4202 avec le compte
[email protected]
/pix123
- Pix API - port 3000
- Pix App - port 4200 avec le compte
[email protected]
/pix123
- Pix Orga - port 4201 avec le compte
[email protected]
/pix123
- Pix Certif - port 4203 avec le compte
[email protected]
/pix123
Le mot de passe est par défaut pix123
.
D'autres comptes sont disponibles dans les seeds.
Se connecter à la base de données :
- de test manuel :
docker exec -it pix-api-postgres psql -U postgres pix
; - de test automatique :
docker exec -it pix-api-postgres psql -U postgres pix_test
.
Se connecter au cache : docker exec -it pix-api-redis redis-cli
Pix s'appuie sur la bibliothèque Dotenv pour gérer les variables d'environnement en local.
Le script scripts/configure.sh
génère un fichier .env standard.
Vous pouvez l'adapter à vos besoins:
- activer le logging détaillé avec pretty-print :
LOG_ENABLED=true
LOG_LEVEL=debug
LOG_FOR_HUMANS=true
- permettre la suppression du schéma de la base de données sans arrêter l'API :
FORCE_DROP_DATABASE=true
- se connecter à un autre référentiel pédagogique que celui de base (test):
LCMS_API_KEY=<SOME_KEY>
LCMS_API_URL=<SOME_URL>
Il est possible d'accéder aux applications Pix avec des domaines *.dev.pix.<tld>
plutôt que localhost:port
:
- Mon Pix
- Orga
- Admin
- Certif
Pour configurer les domaines locaux, exécuter le script :
sudo npm run domains:install
Démarrer le conteneur docker :
npm run domains:start
Arrêter le conteneur :
npm run domains:stop
Le chargement des SSO OIDC lors du chargement des seeds est effectué depuis la
variable d’environnement OIDC_PROVIDERS
si elle définie. Si elle est définie
elle doit contenir du JSON. Écrire ce JSON est assez pénible car il y a beaucoup
de propriétés à fournir et qu’on ne peut actuellement pas utiliser de retours à
la ligne dans le fichier .env
(même si ce serait théoriquement possible avec
la notation here-document). Aussi un fichier d'exemple
OIDC_PROVIDERS.example.json
est fourni avec un mode opératoire facilité décrit
ci-dessous.
-
Copier et adapter le fichier
OIDC_PROVIDERS.example.json
à votre besoin :cp OIDC_PROVIDERS.example.json OIDC_PROVIDERS.json
-
Définir la variable d’environnement
OIDC_PROVIDERS
avec le contenu du fichierOIDC_PROVIDERS.json
:export OIDC_PROVIDERS=$(cat OIDC_PROVIDERS.json)
-
Exécuter le chargement des seeds avec du debug pour constater le bon chargement des SSO OIDC :
export DEBUG="pix:oidc-providers:*" npm run db:reset
Activer
Ce repository est configuré pour indiquer aux IDE Webstorm et Vscode la configuration du linter. Malgré cela, il peut arriver que des erreurs de lint soient introduites.
Pour tenter de les corriger automatiquement lors du commit, installer un hook de pre-commit.
npm run local:add-optional-checks
Si vous souhaitez désactiver
npm run local:remove-optional-checks
Installer un hook de pre-commit.
npm run local:add-optional-checks
Si vous souhaitez le désactiver
npm run local:remove-optional-checks
Il est possible de tester les envois d'e-mails avec Mailpit, un outil qui simule un serveur SMTP et offre une interface web permettant de voir les e-mails envoyés.
Il faut pour cela ajouter deux variables d'environnement au .env
:
MAILING_ENABLED=true
MAILING_PROVIDER=mailpit
Mailpit est inclus dans les images du fichier docker-compose.yml et sera donc lancé automatiquement.
On peut accéder à l'interface web Mailpit à l'adresse http://localhost:8025.
On peut également tracer de manière détaillée (debug) l'appel de l'API d'email avec la configuration d'une variable d'environnement :
export DEBUG="pix:mailer:email"
Cette variable d'environnement peut également être alimentée dans le fichier .env.