But : refaire le concours bac+2 en utilisant Rust
Avec comme maîtres mots :
- KISS : keep it simple, stupid
- Less is more
- Non bloated
- Non over-engineering
Contraintes techniques :
Aller au plus simple :
- pas de webapp, mais un site classique
- pas de framework JS, voire pas de javascript du tout
- un peu de css, mais pas de sass ou autre techno
- pas de fonctionnalités inutiles
- un framework simple, robuste avec de la documentation : axum (voire blessed.rs) -> voir projectc-dropped et suiviconcours-dropped
- moteur de template : tera -> suiviconcours-dropped
- pour la partie sql : sqlx -> suiviconcours-dropped
Dossier PDF
J'ai cherché fouillé beaucoup de possibilités. Mais, la manipulation du PDF semble très scabreuse.
Initialement, je voulais avoir un PDF pré fait avec des tags à remplacer. Mais, je n'ai pas trouvé de bibliothèque permettant ce genre de manipulation. Sauf lopdf mais qui s'avérait avoir un bug sur le remplacement de texte. Une possibilité aurait été de coder en Rust l'intégralité du PDF avec notamment la bibliothèque printpdf.
Finalement, je suis parti pour faire le dossier en HTML, qui sera ensuite converti en PDF via pandoc. La solution sera bien plus pérenne, les bibliothèques tournant autours du PDF ont une durée de vie assez limité.
La génération du PDF se fait juste après l'insertion des données dans la base de données. Donc le PDF est fait une fois pour toute et est disponible en téléchargement direct via un dossier spécial.
Todo fonctionnel
Poc :
- formulaire de quelques champs, avec validation des données
- récupération de ces données et les injecter dans la base
- génération PDF du dossier
- lien vers le dossier pdf
- transfert vers la page de paiement au besoin
- s'identifier via ldap, voir le logiciel du magasin pour la configuration
- envoie de mail de confirmation
Plus tard :
- saisi du mail
- validation du mail
- gestion des 3 années avec même formulaire
- demande du renvoi de mail avec les informations
- test fonctionnel sur les requêtes sql
- intégrer les tpl au binaire
Deuxième étape :
- interface admin, évolution statut de la demande
- upload des pièces justificative