|
|
||
|---|---|---|
| .forgejo/workflows | ||
| api | ||
| backup | ||
| client | ||
| .editorconfig | ||
| .env.dist | ||
| .env.production | ||
| .env.staging | ||
| .gitignore | ||
| .nvmrc | ||
| blue-green-deploy.sh | ||
| compose.override.yml | ||
| compose.yml | ||
| example.env | ||
| package.json | ||
| README.md | ||
| souplotheque.code-workspace | ||
| vetur.config.js | ||
Cyclone Souplothèque
Application web pour la gestion des membres et de l'inventaire de la Souplothèque
Développement
Prérequis
- Git
- Un IDE (VSCodium par exemple)
- Docker et Docker Compose
Cloner le dépôt
git clone git@git.sr.ht:~hicham/cyclone-souplotheque
# git clone https://git.sr.ht/~hicham/cyclone-souplotheque
Démarrer les services
cd cyclone-souplotheque
cp example.env .env
docker compose up
Cette commande aura pour effet de mettre en place un environnement avec les services suivants :
- Une base de données (PostgreSQL)
- Une API (NestJS)
- Un client en mode "watch" (VueJS)
- Un service de sauvegarde
L'application est disponible à l'adresse http://localhost:3001/
Guide pratique
Déploiement de l'application
Prérequis pour le déploiement
- Un serveur type VPS avec :
- Un accès SSH
- Le proxy inverse Traefik installé
La configuration de Traefik pour l'application est définie dans les labels de l'API du fichier
docker-compose.yml- Une configuration de resolver pour générer des certificats HTTPS
- Un point d'entrée web
rsync
- Un nom de domaine défini par la variable
DOMAINdans le fichier.envqui pointe vers le serveur VPS
Le déploiement est effectué par le CI de sourcehut. Les étapes sont définies dans le fichier .build.yml. Les étapes sont les suivantes :
- Compiler le client et l'API
- Pousser les artefacts vers le serveur voulu
- Reconstruire les containers Docker
Traefik s'occupe de rendre le container disponible sur le web et de générer un certificat HTTPS.
Modifier la structure d'une entité (Matériau, Membre, ...)
-
Les entités sont définies dans les fichiers
src/**/entities/*.entity.ts: modifier ces fichiers met à jour le modèle dans l'API -
Pour que ces changements soient aussi présents en base de données s'il s'agit d'une propriété à persister, il est nécessaire de créer une migration
cd api # Définir des variables environnement avec les identifiants PostgreSQL export $(grep -v '^#' ../.env | xargs) # Créer une migration à partir des différences entre le schéma actuel et celui désiré npx mikro-orm migration:create --path src/migrations/