Mockomat
Architettura

Un modello che scrivi una volta.
Superfici che restano sincronizzate.

Mockomat è costruito attorno a quattro idee. Insieme rendono i dati mock un'estensione naturale del tuo codebase, non un progetto secondario. Ecco come ragiona il sistema — e cosa ti restituisce.

The pipeline

Dalle entità a due superfici live.

Descrivi entità e attributi; Mockomat compila uno schema GraphQL tipizzato, collega gli attributi al pool di dati e serve sia un endpoint JSON che un'anteprima renderizzata dallo stesso artefatto compilato.

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
Le quattro idee

Principi, non pattern.

Non abbiamo costruito Mockomat accumulando funzionalità. Ogni capacità deriva da uno di questi quattro impegni. Se li comprendi, puoi prevedere come si comporta il resto del sistema.

01

Schema-first.

Tu progetti il modello. Mockomat lo compila.

Tutto parte dalle tue entità e attributi. I dati mock, lo schema GraphQL, la documentazione, l'anteprima renderizzata — tutto deriva da un'unica fonte di verità. Modifica il modello, tutto ciò che è a valle si rigenera.

seed
02

Replay deterministico.

Stesso seed in ingresso. Stessi dati in uscita. Ogni volta.

Il runtime è stateless e guidato dal seed. Una richiesta a /graphql in qualsiasi momento riproduce dallo stesso seed concordato dal tuo team — così uno snapshot di oggi corrisponde a uno snapshot in CI domani. Niente fixture instabili, niente drift tra gli ambienti.

03

Multi-tenant di default.

Workspace, progetti, ruoli, chiavi con scope.

Ogni account è un confine di tenant. All'interno, i progetti delimitano gli schemi; i ruoli delimitano i diritti di modifica; le API key delimitano l'accesso esterno. La configurazione è isolata per tenant fin dal primo byte — mai aggiunta a posteriori.

JSON UI
04

Due superfici, un modello.

Leggibile dalle macchine per il codice. Leggibile dalle persone per la revisione.

Lo stesso modello serve /graphql per la tua applicazione e /preview per gli stakeholder. Gli ingegneri consumano JSON; designer e PM vedono una tabella o lista renderizzata degli stessi identici dati. Nessuna seconda fonte di verità per le revisioni di prodotto.

Code generation

Esporta il tuo modello come un progetto reale.

Quando il prototipo finisce e inizia la distribuzione, il tuo schema Mockomat non resta bloccato nel nostro servizio. Un click genera un client Angular completamente tipizzato e uno scaffold server NestJS — entrambi collegati allo stesso contratto GraphQL che hai già validato.

FRONTEND Angular 17 · standalone components · Apollo client
BACKEND NestJS 10 · GraphQL code-first · resolver stubs
SCHEMA GraphQL SDL · re-generated on each export
Vedi un progetto esportato
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

Stesso input.
Stesso output.
Sempre.

I dati mock con seed casuali rompono i test, rompono le revisioni ed erodono la fiducia. Il runtime di Mockomat lega ogni risposta allo stesso seed scelto dal tuo team. Richiedi un record il mese prossimo — stessa forma, stessi valori, stesse relazioni.

# 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" } } }