PROTOTYPE Cette application est encore au stade d'expérimentation, avant de pouvoir être proposée sérieusement à des groupes.
Cette application vise à exposer en un seul endroit l'ensemble des données de La Chouette Coop. Elle permet un accès homogène à des données issues de diverses applications / fichiers, ouvrant la possibilité à des croisements de données et à la construction d'applications spécifiques rapidement.
De manière plus technique, c'est une API GraphQL permettant d'accéder aux données suivantes :
- Authentification via le LDAP
- Annuaire des coopérateurs et coopératrices de la SAS
- Planning du Lab
Les données accessibles dépendent des permissions de la personne connectée.
L'API déployée est une API GraphQL. Le but principal de celle-ci est d'être utilisée par des applications tierces.
En accédant à celle-ci depuis un navigateur web, une instance du logiciel GraphQL Playground permet d'exécuter des requêtes pour « explorer l'API ».
Un onglets « Docs » permet de naviguer dans les requêtes et champs disponibles, ainsi que leurs documentations respectives :
Attention : la plupart des informations ne sont pas accessibles au public ! Il vous faudra donc effectuer vos requêtes en tant qu'un utilisateur ou qu'une utilisatrice ayant les droits suffisants (toute personne ayant accès à l'espace membres peut se connecter).
Pour en savoir plus sur cela, voir la page Authentification.
Pas encore ¯\_(ツ)_/¯
npm install- créer un fichier
.envavec les accès aux services tiers (exemple de fichier disponible dans.env.dist)
- En mode développeur :
npm run dev - En production :
npm run start
Les tests automatisés se lancent avec la commande : npm run test
Nous suivons la convention https://www.conventionalcommits.org/ pour les messages de commits, afin de permettre une publication simple des nouvelles versions et des changelogs. Nous pensons que cela facilite le suivi du projet et sa maintenance/reprise sur le long terme.
Cela n’est pas très compliqué ! Au lieu de faire git commit, exécutez
npm run commit et laissez-vous guider !
GITHUB_TOKEN="xxxxxx" npm run release
Vous pouvez ajouter le suffixe -- -n à la commande pour une release
entièrement automatisée, si vous osez !
Une image Docker (lachouettecoop/api) est construite à chaque nouveau
changement ou nouvelle version (via les Actions Github décrites dans le dossier
.github/workflows du dépôt).
La branche master est disponible via le tag latest, et les tags (versions)
via leurs tags respectifs.
Il est donc possible de lancer l'application en mode production grâce à Docker.
Le port 4000 est exposé, et il faut rendre disponible les variables d'environnement
contenant les secrets / configurations dans le conteneur (voir la section d'installation).
Par exemple, la commande Docker pour lancer l'application serait :
docker run --rm -P --env-file=/chemin/vers/.env lachouettecoop/api:latest
Regardez ensuite le port de votre machine sur lequel a été mappé le port 4000 du
conteneur grâce à la commande docker ps et accédez à http://0.0.0.0:32768/
(en remplaçant par le numéro de port correct).
Pour une utilisation en production, voici un exemple de fichier docker-compose.yml
avec une configuration Traæfik.
version: "2.1"
services:
web:
image: lachouettecoop/api:latest
restart: unless-stopped
env_file: .env
networks:
default:
inverseproxy_shared:
labels:
traefik.docker.network: "inverseproxy_shared"
traefik.enable: "true"
traefik.frontend.passHostHeader: "true"
traefik.port: "4000"
traefik.frontend.rule: "Host:api.acme.org"
networks:
default:
internal: true
driver_opts:
encrypted: 1
inverseproxy_shared:
external: true