Mockomat
Architecture

Un modèle que tu écris une fois.
Des surfaces qui restent synchronisées.

Mockomat est construit autour de quatre idées. Ensemble, elles font en sorte que les données fictives se ressentent comme une extension de ta base de code, pas un projet parallèle. Voici comment le système raisonne — et ce qu'il t'apporte.

The pipeline

Des entités à deux surfaces en direct.

Tu décris des entités et des attributs ; Mockomat compile un schéma GraphQL typé, lie les attributs au pool de données et sert à la fois un endpoint JSON et un aperçu rendu à partir du même artefact compilé.

DESIGN COMPILE SERVE CONSUME Your model User · email · fullName · avatarUrl Order · orderNo · total · status Compiler schema · types · resolvers pool ↔ field mappings seed plan DETERMINISTIC Runtime stateless · seedable resolver per type renderer per type seed = sha(...) POST /graphql application/json For your code, your CI, your AI agents GET /preview text/html For PMs, designers, stakeholders mockomat.pool 37 columns · 2.4M rows · public + per-tenant
Les quatre idées

Des principes, pas des patterns.

Nous n'avons pas construit Mockomat en accumulant des fonctionnalités. Chaque capacité découle de l'un de ces quatre engagements. Si tu les comprends, tu peux prédire le comportement du reste du système.

01

Schema-first.

Tu conçois le modèle. Mockomat le compile.

Tout part de tes entités et attributs. Les données fictives, le schéma GraphQL, la documentation, l'aperçu rendu — tout dérive d'une source unique de vérité. Modifie le modèle, tout en aval se régénère.

seed
02

Rejeu déterministe.

Même seed en entrée. Mêmes données en sortie. À chaque fois.

Le moteur est sans état et piloté par le seed. Une requête vers /graphql à tout moment rejoue à partir du même seed convenu par ton équipe — un instantané aujourd'hui correspond à un instantané en CI demain. Pas de fixtures instables, pas de dérive entre environnements.

03

Multi-tenant par défaut.

Espaces de travail, projets, rôles, clés délimitées.

Chaque compte est une frontière de tenant. À l'intérieur, les projets délimitent les schémas ; les rôles délimitent les droits d'édition ; les clés API délimitent l'accès externe. La configuration est isolée par tenant dès le premier octet — jamais ajoutée après coup.

JSON UI
04

Deux surfaces, un modèle.

Lisible par la machine pour le code. Lisible par l'humain pour la revue.

Le même modèle sert /graphql pour ton application et /preview pour les parties prenantes. Les ingénieurs consomment du JSON ; les designers et les chefs de projet voient un tableau ou une liste rendus des mêmes données. Pas de seconde source de vérité pour les revues produit.

Code generation

Exporte ton modèle en tant que vrai projet.

Quand le prototypage se termine et que la livraison commence, ton schéma Mockomat ne reste pas enfermé dans notre service. Un clic génère un client Angular entièrement typé et un socle serveur NestJS — tous deux câblés au même contrat GraphQL que tu as déjà validé.

FRONTEND Angular 17 · standalone components · Apollo client
BACKEND NestJS 10 · GraphQL code-first · resolver stubs
SCHEMA GraphQL SDL · re-generated on each export
Voir un projet exporté
codegen.pipeline · deterministic · idempotent
schema.graphql
your model · 38 types · 142 fields
compile
frontend/ — Angular
typed queries · components
backend/ — NestJS
resolvers · DTOs · modules
MY-PROJECT.ZIP
📁 my-project/
📁 frontend/
📄 src/app/users/users.component.ts
📄 src/app/users/users.queries.ts ← typed Apollo queries
📄 src/app/graphql.types.ts
📁 backend/
📄 src/users/users.resolver.ts
📄 src/users/user.dto.ts
📄 src/users/users.module.ts
📄 schema.graphql ← single source of truth
📄 package.json
📄 README.md
Why determinism matters

Même entrée.
Même sortie.
Toujours.

Les données fictives avec des seeds aléatoires cassent les tests, cassent les revues et érodent la confiance. Le moteur de Mockomat indexe chaque réponse sur le même seed choisi par ton équipe. Récupère un enregistrement le mois prochain — même structure, mêmes valeurs, mêmes relations.

# request the same user, twice, three months apart
$ curl mockomat.app/p/abc/graphql -d '{ user(id:42) { email } }'
{ "data": { "user": { "email": "ada@bessemer.com" } } }
# 90 days later, same query…
$ curl mockomat.app/p/abc/graphql -d '{ user(id:42) { email } }'
{ "data": { "user": { "email": "ada@bessemer.com" } } }