Build your frontend without waiting for the backend.
Defina o contrato da API uma vez e desenvolva o front sem esperar o backend: mock local, dados realistas (incluindo brasileiros), cenários de erro, documentação, OpenAPI e tipos TypeScript — tudo derivado do Schema.
Na Visual Studio Marketplace: procure DevMock na aba Extensions (Ctrl+Shift+X) e instale. Sem configuração adicional.
- Abra seu projeto e rode
DevMock: Initialize Project(Ctrl+Shift+P). DevMock: New Schema…— crie o modelUser(o Studio mostra preview dos dados na hora).DevMock: Start Mock Server→🟢 http://localhost:4010.- Aponte sua
baseURLparahttp://localhost:4010e desenvolva.
| Comando | O que faz |
|---|---|
| Initialize Project | Cria .devmock/ versionável no projeto |
| New Schema… / Edit Schema… | Studio: edita campos, preview com seed, salva |
| Create API… | From scratch, Import OpenAPI ou Detect from project |
| Import OpenAPI… | Gera Schemas de openapi.yaml/json |
| Generate / Save Fake Data… | Preview em aba ou salva em docs/examples/ |
| Start / Stop Mock Server | Sobe/derruba :4010; Stop mostra o request log |
| Switch Scenario… | Default, Empty, 401/403/500/429, Slow — lista todas as rotas e aplica por método, sem restart |
| Export Contract… | OpenAPI JSON+YAML, JSON Schema, types.ts, Markdown, HTML — por rota (custom, summary) |
| Validate Real API… | Compara a API real com o contrato (Compatible/Warning/Breaking); pula com aviso rotas sem kind: list |
| Show Request Log | Método, rota, status, ms, cenário e bodies (request/response, truncados em 1KB) |
Na Tree, o botão Ações concentra os comandos; clique num cenário para aplicá-lo a um ou mais Schemas. Cada endpoint (incluindo POST/PUT/PATCH/DELETE e rotas custom) tem seu próprio menu de cenário, cURL e abrir no browser.
Prefere terminal? Há CLI equivalente: devmock init|start|generate|export|import|validate (ver packages/cli).
Quer testar instabilidade? Defina errorRate (0–100) em .devmock/config.json para injetar falhas 500 de forma determinística — e use o Switch Scenario para os estados 403/429/slow. Para forçar um cenário só naquela chamada, use ?scenario= ou o header X-Mock-Scenario.
# com o servidor rodando:
curl "http://localhost:4010/users?page=1&limit=5"
curl -X POST http://localhost:4010/users -H "Content-Type: application/json" -d "{}"
curl -X PUT http://localhost:4010/users/1 -H "Content-Type: application/json" -d "{\"name\":\"Ana\"}"
curl -X PATCH http://localhost:4010/users/1 -H "Content-Type: application/json" -d "{\"name\":\"Ana\"}"
curl -X DELETE http://localhost:4010/users/1
# forçar um cenário só nesta chamada:
curl "http://localhost:4010/users?scenario=Empty"
curl -H "X-Mock-Scenario: Forbidden" "http://localhost:4010/users"Schema mínimo (.devmock/schemas/user.json):
{
"name": "User",
"fields": [
{ "name": "id", "type": "uuid", "required": true },
{ "name": "name", "type": "string", "generator": "br.nome" },
{ "name": "cpf", "type": "string", "generator": "br.cpf" }
]
}Sem routes, cada Schema expõe o CRUD padrão (GET/POST /users, GET/PUT/PATCH/DELETE /users/:id). Declare routes para caminhos e ações próprios:
{
"name": "User",
"fields": [{ "name": "id", "type": "uuid", "required": true }],
"routes": [
{ "method": "GET", "path": "/v1/users", "kind": "list", "summary": "Lista usuários" },
{ "method": "POST", "path": "/auth/login", "kind": "custom", "response": { "status": 200, "body": { "token": "abc" } } }
]
}kind: list, item, create, update, patch, delete ou custom (usa response.status/response.body). :param casa um segmento; rota estática vence param. Rotas inválidas/duplicadas falham no start (e no export).
Próximas versões são planejadas sem data e priorizadas por feedback — veja o Roadmap. Já publicado: Versões · Correções.
Última versão: v1.5.0 — rotas completas por Schema: mapa de rotas, POST/PUT/PATCH/DELETE e ações custom no mock, na Tree e nas docs.
Este repo é o monorepo (packages/core, packages/cli, apps/extension) + vault Obsidian de docs (DevMock Cerebro).Branches: des (diário) e main (estável, só via PR). Ver package.json (scripts build/test) e .github/workflows/.