# Krys4lide Logiciel de Pharmacie libre et open-source. ## Crates - `app`: Interface du logiciel, servie par un serveur web propulsé par Axum. Utilisable en mode endpoint ou encapsulé dans le client `desktop` - `desktop`: Client desktop propulsé par Tauri, encapsulant le serveur web `app` - `sesam-vitale`: Bibliothèque de gestion des services SESAM-Vitale (Lecture des cartes CPS et Vitale, téléservices ...) - `utils`: Bibliothèque de fonctions utilitaires ## 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](https://github.com/dirs-dev/directories-rs?tab=readme-ov-file#projectdirs)) Des exemples de fichiers de configuration sont disponibles à la racine du projet : `.env.linux.example` et `.env.win.example`. ## Development ### Pré-requis #### Tauri CLI La CLI Tauri est nécessaire au lancement du client `desktop`. Elle peut être installée via Cargo : ```bash cargo install tauri-cli --version "^2.0.0-beta" ``` #### Tailwindcss CLI Le CLI Tailwindcss est nécessaire pour la génération du fichier `crates/app/assets/css/style.css`. La documentation d'installation est disponible sur le site officiel de Tailwindcss : https://tailwindcss.com/blog/standalone-cli La version actuellement utilisée est la [`v3.4.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.7) #### 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 : ```bash 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](#fichiers-de-configuration). ```.env 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`. #### SESAM-Vitale La crate `sesam-vitale` nécessite la présence des librairies dynamiques fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le [README](crates/sesam-vitale/README.md) de la crate `sesam-vitale`. ### Lancement Le logiciel dans sa globalité peut être lancé via la commande suivante : ```bash cargo tauri dev ``` /!\ Attention, le lancement du client `desktop` ne génère pas le fichier `crates/app/assets/css/style.css` automatiquement pour le moment. En cas de modification des interfaces web, il est donc nécessaire de procéder à sa génération comme indiqué dans le [README](crates/app/README.md) de la crate `app`. Si vous souhaitez lancer les composants séparément, les indications de lancement sont disponibles dans les README des différents crates. - [app](crates/app/README.md) - [sesam-vitale](crates/sesam-vitale/README.md) ## Rechargement automatique Pour permettre de développer plus rapidement, il existe une librairie qui recompile automatiquement nos modifications en cours : [`cargo-watch`](https://github.com/watchexec/cargo-watch) permet de relancer une commande `cargo` lorsqu'un fichier est modifié (example: `cargo run` --> `cargo watch -x run`). Voici la commande pour l'installer dans un _package_ : ```bash cargo add cargo-watch --dev --package app ``` Le fichier [`.ignore`](./ignore) permet d'ignorer certains fichiers pour éviter de relancer la recompilation inutilement. ⚠️ La librairie n'est pas compatible avec _Windows 7_ et les versions antérieurs de _Windows_. ## Build Packager le client desktop ```bash cargo tauri build ``` ## Gestion de la base de données ### Création d'une migration ```bash sea-orm-cli migrate generate ``` Cette commande génère un fichier de migration à adapter dans le dossier `migration/src`. ### Appliquer les migrations ```bash sea-orm-cli migrate up ``` ### Génération des entitées ```bash sea-orm-cli generate entity -o entity/src/entities ```