crabster

Vision et objectifs

{% raw %}

Pourquoi Crabster ?🔗

Un générateur d'application « batteries included » produit, à partir d'un modèle de domaine, une application complète — persistance, API, sécurité, tests, conteneurisation, CI — au lieu d'une page blanche ou d'un squelette minimal. Plusieurs écosystèmes en ont un ; celui de Rust n'en a pas.

Les développeurs Rust qui veulent démarrer un service web de production doivent aujourd'hui assembler manuellement : framework web, ORM, migrations, authentification, validation, documentation OpenAPI, observabilité, conteneurisation — un travail répétitif, sujet à erreurs, et qui diverge d'un projet à l'autre.

Crabster vise à combler ce vide : un générateur qui produit du code Rust idiomatique, compilable, testé et prêt pour la production, à partir d'une description de haut niveau du domaine métier.

Principes directeurs🔗

  1. Code généré = code possédé. Le code généré appartient entièrement au développeur : pas de dépendance runtime vers un framework "magique" propriétaire. Le code produit est du Rust standard, lisible, modifiable, et ne nécessite pas Crabster pour compiler ou tourner une fois généré.
  2. Idiomatique avant tout. On ne calque pas mécaniquement les patterns Java/Spring (annotations, réflexion, injection de dépendances runtime). On choisit les patterns Rust adaptés : traits, macros procédurales (avec parcimonie), composition explicite, gestion d'erreurs par Result.
  3. Convention over configuration, mais sans magie noire. Des choix par défaut raisonnables et documentés, avec la possibilité de personnaliser via des templates (mécanisme de blueprints, cf. Architecture technique).
  4. Production-ready dès la génération. Un projet généré doit démarrer, avoir des tests qui passent, un Dockerfile fonctionnel, une CI, et des health-checks — pas un squelette à compléter à moitié.
  5. Évolutif et incrémental. Crabster doit permettre d'ajouter ou de modifier des enregistrements sur un projet existant sans tout régénérer, via un mécanisme de fusion (voir Phase 11, en V2).
  6. API-first, frontend différé. La V1 se concentre exclusivement sur la génération backend (API REST + persistance + sécurité + docs). C'est un choix assumé : livrer un cœur de générateur solide et bien testé avant d'ouvrir le chantier frontend, plutôt que de diluer l'effort. Voir ADR-0001 ci-dessous.
  7. Communauté et extensibilité. La valeur à long terme vient de l'écosystème de blueprints (support NoSQL, Kubernetes, providers cloud spécifiques…), pas uniquement du cœur.

Ce que Crabster n'est pas🔗

Public cible🔗

Objectifs mesurables (V1)🔗

ADR-0001 — API-only en V1🔗