Florian Briand
d13f36c5e2
- Création de la crates/fsv-sys - Ajout des headers de la FSV 1.40.14.13 dans crates/fsv-sys/vendor - Génération des bindings depuis ces headers avec bindgen - Implémentation d'une structure de loading de la librairie au runtime - Implémentation d'une macro permettant de générer facilement la couche d'accès aux fonctions de la librairie
122 lines
4.5 KiB
Markdown
122 lines
4.5 KiB
Markdown
# Krys4lide
|
|
|
|
Logiciel de Pharmacie libre et open-source.
|
|
|
|
## Modules applicatifs
|
|
|
|
- `crates`: Dossier racine des modules Rust
|
|
- `crates/backend`: Serveur backend propulsé par Axum, exposant une API REST
|
|
- `crates/desktop`: Client desktop propulsé par Tauri, exposant le `frontend`
|
|
- `crates/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 utilitaires
|
|
- `crates/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](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
|
|
|
|
#### 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](https://bun.sh/docs/installation), un gestionnaire de paquets, équivalent à `npm` en 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 :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```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`.
|
|
|
|
#### 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](crates/sesam-vitale/README.md) de la crate `fsv-sys`.
|
|
|
|
#### Backend Hot-reload
|
|
|
|
Voir le [README](crates/backend/README.md) 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 :
|
|
|
|
```bash
|
|
# Lancement du serveur backend
|
|
systemfd --no-pid -s http::8080 -- cargo watch -w crates/backend -x 'run --bin backend'
|
|
```
|
|
|
|
```bash
|
|
# 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 `backend` n'est rechargé que si des modifications sont détectées dans le dossier précisé par `-w crates/backend`
|
|
> - le rechargement du `desktop` est désactivé par l'option `--no-watch` ; en effet, le rechargement du `frontend` est déjà pris en charge par `bun` et ne nécessite pas de rechargement du `desktop`
|
|
|
|
## 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 :
|
|
|
|
```bash
|
|
cargo tauri build
|
|
```
|
|
|
|
## Gestion de la base de données
|
|
|
|
### Création d'une migration
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
sea-orm-cli migrate up
|
|
```
|
|
|
|
### Génération des entitées
|
|
|
|
```bash
|
|
sea-orm-cli generate entity -o entity/src/entities --with-serde both
|
|
``` |