Le service que j'avais utilisé pour générer des avatars aléatoires pour cette démo a cessé de fonctionner aujourd'hui ... XD Je le remplace donc par un autre service ^^ Reviewed-on: P4Pillon/Krys4lide#68 Reviewed-by: kosssi <simon@p4pillon.org>
Krys4lide
Logiciel de Pharmacie libre et open-source.
Modules applicatifs
crates: Dossier racine des modules Rustcrates/backend: Serveur backend propulsé par Axum, exposant une API RESTcrates/desktop: Client desktop propulsé par Tauri, exposant lefrontendcrates/sesam-vitale: Bibliothèque de gestion des services SESAM-Vitale (Lecture des cartes CPS et Vitale, téléservices ...)crates/utils: Bibliothèque de fonctions utilitairescrates/fsv-sys: Bindings Rust pour les librairies dynamiques FSV (SESAM-Vitale)
frontend: Interface web du logiciel, propulsée par Nuxt.js
Installation
Fichiers de configuration
Certaines librairies nécessitent de définir certaines paramètres de configuration pour fonctionner correctement, en particulier le moteur SESAM-Vitale.
Ces paramètres sont définis dans un fichier de configuration .env situé dans un des dossiers suivant (par ordre de priorité) :
- dans le dossier courant (
./.env) - dans le dossier du manifeste (par exemple
crates/sesam-vitale/.env) - dans le dossier de configuration standard de l'OS (par exemple, sur linux,
~/.config/krys4lide/.env- plus d'info)
Des exemples de fichiers de configuration sont disponibles à la racine du projet : .env.linux.example et .env.win.example.
Development
Pré-requis
Frontend (Nuxt + Typescript)
Le frontend est propulsé par Nuxt.js, un framework TypeScript pour Vue.js. Pour le développement, il est nécessaire d'installer les dépendances suivantes :
- Bun, un gestionnaire de paquets, équivalent à
npmen plus performant
Tauri CLI
TODO: Tauri CLI, réellement nécessaire ?
La CLI Tauri est nécessaire au lancement du client desktop. Elle peut être installée via Cargo :
cargo install tauri-cli --version "^2.0.0-rc"
SeaORM CLI
SeaORM est notre ORM. Le CLI SeaORM est nécessaire pour la génération des modèles de la base de données et des migrations associées. Elle peut être installée via Cargo :
cargo install sea-orm-cli
L'applicatif va chercher les informations de connexion à la base de données dans la variable DATABASE_URL importée depuis les fichiers de configuration.
DATABASE_URL=sqlite://p4pillon.sqlite?mode=rwc
Toutefois, l'usage de la CLI de SeaORM nécessite de renseigner les informations de connexion à la base de données dans un fichier .env situé à la racine du projet.
Astuce : utilisé un lien symbolique pour éviter de dupliquer le fichier
.env.
FSV-sys
La crate fsv-sys nécessite la présence des librairies fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le README de la crate fsv-sys.
Backend Hot-reload
Voir le README de la crate backend pour les prérequis de développement du serveur backend.
Lancement
Pour lancer l'application en mode développement, il est nécessaire d'exécuter plusieurs composants simultanément :
# Lancement du serveur backend
systemfd --no-pid -s http::8080 -- cargo watch -w crates/backend -x 'run --bin backend'
# Lancement de l'interface utilisateur (frontend ou desktop)
# - frontend (serveur web, accessible via navigateur)
bun run --cwd frontend/ dev
# - desktop (client desktop, basé sur Tauri)
cargo tauri dev --no-watch
Pour circonscrire les hot-reloads intempestifs mais peu utiles :
- le
backendn'est rechargé que si des modifications sont détectées dans le dossier précisé par-w crates/backend- le rechargement du
desktopest désactivé par l'option--no-watch; en effet, le rechargement dufrontendest déjà pris en charge parbunet ne nécessite pas de rechargement dudesktop
Build
Pour packager le client desktop, il est nécessaire de faire appel à la CLI Tauri, qui se charge de gérer le build du frontend et son intégration au bundle :
cargo tauri build
Gestion de la base de données
Création d'une migration
sea-orm-cli migrate generate <nom_de_la_migration>
Cette commande génère un fichier de migration à adapter dans le dossier migration/src.
Appliquer les migrations
sea-orm-cli migrate up
Génération des entitées
sea-orm-cli generate entity -o entity/src/entities --with-serde both