Mockomat
Mimari

Bir kez yazdığın bir model.
Senkron kalan yüzeyler.

Mockomat dört fikir üzerine inşa edilmiştir. Birlikte, sahte verinin kod tabanının bir uzantısı gibi hissettirmesini sağlarlar — bir yan proje gibi değil. Sistemin nasıl düşündüğünü ve sana ne geri verdiğini burada bulabilirsin.

The pipeline

Varlıklardan iki canlı yüzeye.

Varlıkları ve öznitelikleri tanımlarsın; Mockomat tipli bir GraphQL şeması derler, öznitelikleri veri havuzuna bağlar ve aynı derlenmiş yapıdan hem bir JSON endpoint hem de render edilmiş bir önizleme sunar.

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
Dört fikir

İlkeler, kalıplar değil.

Mockomat'ı özellik biriktirerek inşa etmedik. Her yetenek, bu dört taahhütten birinden kaynaklanır. Bunları anlarsan, sistemin geri kalanının nasıl davrandığını tahmin edebilirsin.

01

Önce şema.

Modeli sen tasarlarsın. Mockomat derler.

Her şey varlıkların ve özniteliklerinle başlar. Sahte veriler, GraphQL şeması, dokümantasyon, render edilmiş önizleme — hepsi tek bir doğru kaynaktan türetilir. Modeli değiştir, aşağı akıştaki her şey yeniden oluşturulur.

seed
02

Deterministik tekrar.

Aynı tohum girer. Aynı veri çıkar. Her seferinde.

Çalışma zamanı durumsuz ve tohum güdümlüdür. /graphql'e yapılan bir istek her an ekibinin üzerinde anlaştığı aynı tohumdan tekrar oynatılır — bugünkü bir anlık görüntü, yarın CI'daki bir anlık görüntüyle eşleşir. Güvenilmez fixture'lar yok, ortamlar arası kayma yok.

03

Doğuştan çok kiracılı.

Çalışma alanları, projeler, roller, kapsamlı anahtarlar.

Her hesap bir kiracı sınırıdır. İçinde projeler şemaları kapsar; roller düzenleme haklarını kapsar; API anahtarları dış erişimi kapsar. Yapılandırma, ilk bayttan itibaren kiracı başına izole edilmiştir — sonradan eklenmez.

JSON UI
04

İki yüzey, bir model.

Kod için makine okunabilir. İnceleme için insan okunabilir.

Aynı model, uygulaman için /graphql'i ve paydaşlar için /preview'ı sunar. Mühendisler JSON tüketir; tasarımcılar ve PM'ler aynı verinin render edilmiş bir tablosunu veya listesini görür. Ürün incelemeleri için ikinci bir doğru kaynak yok.

Code generation

Modelini gerçek bir proje olarak dışa aktarın.

Prototipleme bitip üretime geçildiğinde, Mockomat şeman servisimizde kilitli kalmaz. Tek tıkla, zaten doğruladığın aynı GraphQL sözleşmesine bağlı, tam tipli bir Angular istemcisi ve bir NestJS sunucu iskeleti oluşturulur.

FRONTEND Angular 17 · standalone components · Apollo client
BACKEND NestJS 10 · GraphQL code-first · resolver stubs
SCHEMA GraphQL SDL · re-generated on each export
Dışa aktarılmış bir projeyi gör
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

Aynı girdi.
Aynı çıktı.
Her zaman.

Rastgele tohumlu sahte veriler testleri bozar, incelemeleri bozar ve güveni aşındırır. Mockomat'ın çalışma zamanı her yanıtı ekibinin seçtiği aynı tohumdan türetir. Gelecek ay bir kaydı tekrar çekin — aynı yapı, aynı değerler, aynı bağlantılar.

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