AUSUS
AUSUS est un framework PHP pour construire des applications d'entreprise — plateformes CRUD, outils de workflow, outils internes — à partir de graphes de métadonnées au lieu de contrôleurs et de vues écrits à la main.
Vous décrivez votre domaine (entités, champs, actions, workflows, politiques,
projections) sous forme de plugin. Un compilateur transforme cette description en un
MetadataGraph déterministe et adressable par contenu. Un runtime en couches exécute
les actions sur celui-ci ; une API HTTP l'expose ; un moteur de rendu React le dessine.
L'architecture d'abord
AUSUS est organisé comme une pile de couches dotées de contrats stables et unidirectionnels. Une couche ne dépend jamais d'une couche située au-dessus d'elle.
L7 Plugins user-authored domain logic
L6 Renderer (React) @ausus/renderer-react
L5 Presentation ProjectionRenderer -> ViewSchema (RFC-004)
L4 API Surface ausus/api-http (PSR-7/15)
L3 Drivers ausus/persistence-sql (and reserved drivers)
L2 Runtime ausus/runtime-default (Invoker chain)
L1 Compiler MetadataGraph synthesis
L0 Kernel ausus/kernel (contracts, value objects, DSL)
C'est l'idée centrale : le graphe de métadonnées est l'application. Les backends, les API et les interfaces utilisateur sont des rendus du même graphe plutôt que du code maintenu indépendamment.
Installation
Créez un nouveau projet à partir du modèle de démarrage :
composer create-project ausus/starter myapp
cd myapp && composer boot
# -> OK — ausus/starter boots cleanly.
Ajoutez le moteur de rendu React à un projet frontend :
npm install @ausus/renderer-react react@18 react-dom@18
Consultez Installation pour la procédure depuis les sources et les prérequis de version.
Un domaine minimal
Voici un plugin de domaine complet — une entité invoice avec trois actions et
un workflow de statut — écrit dans le DSL AUSUS :
use Ausus\{DslPlugin, Dsl, Field, Action};
final class HelloInvoiceDsl extends DslPlugin
{
public function name(): string { return 'billing'; }
public function phpNamespace(): string { return 'Acme\\Billing'; }
public function dsl(Dsl $dsl): void
{
$dsl->entity('invoice')
->fields([
'number' => Field::string()->unique()->max(32),
'customer_name' => Field::string()->max(200),
'amount' => Field::money()->currency('USD'),
'status' => Field::enum('DRAFT', 'ISSUED', 'CANCELLED')->default('DRAFT'),
'issued_at' => Field::datetime()->nullable(),
])
->actions([
'create' => Action::create('number', 'customer_name', 'amount')
->requireRole('invoice.creator'),
'issue' => Action::transition('status', from: 'DRAFT', to: 'ISSUED')
->stamp('issued_at')
->requireRole('invoice.issuer'),
'cancel' => Action::transition('status', from: 'DRAFT', to: 'CANCELLED')
->andTransition('status', from: 'ISSUED', to: 'CANCELLED')
->requireRole('invoice.canceler'),
])
->workflow('status')
->projection('summary',
fields: ['id', 'number', 'customer_name', 'status', 'amount'],
actions: ['create', 'cancel'],
role: 'invoice.viewer');
}
}
Découvrez ce processus de bout en bout dans le tutoriel HelloInvoice.
État actuel
:::info v0.1.0 — première version publique
Il s'agit d'une première version publique. Elle convient à l'évaluation, aux prototypes et à l'apprentissage du modèle. Les contrats publics sont encore en cours de stabilisation et peuvent changer avant la v1.0.
Ce qui est livré et fonctionne aujourd'hui :
- 4 bibliothèques PHP implémentées —
kernel,persistence-sql,runtime-default,api-http. - Un modèle de démarrage (
ausus/starter) et un métapaquet (ausus/standard-stack). - Un moteur de rendu React (
@ausus/renderer-react) pour le format de transport ViewSchema.
Ce qui n'est pas encore livré :
- 4 noms de paquets sont uniquement réservés —
tenancy-row,audit-database,auth-bridge,presentation-defaultne contiennent aucun code source dans la v0.1.0. Ils sont prévus pour la v0.2.0. - La persistance est validée sur SQLite ; MySQL et PostgreSQL sont prévus dans la conception mais ne sont pas validés.
- Le runtime est mono-processus, mono-tenant, mono-acteur par invocation. Il n'existe ni runtime distribué ni runtime multi-tenant.
- L'authentification se limite à un acteur stub ; il n'y a pas de pont d'authentification.
Consultez les notes de version v0.1.0 pour la matrice de compatibilité complète et les limites connues.
:::
Liens de l'écosystème
- GitHub — adonko3xBitters/ausus-framework
- Packagist — paquets
ausus/* - npm —
@ausus/renderer-react
Par où continuer
| Si vous voulez… | Commencez ici |
|---|---|
| Installer AUSUS | Démarrage → Installation |
| Comprendre le modèle | Concepts fondamentaux → Le graphe de métadonnées |
| Construire quelque chose | Tutoriel HelloInvoice |
| Voir ce qui est réel ou réservé | Paquets |
| Évaluer la maturité de la version | Notes de version v0.1.0 |