Appearance
Public CRM Demo Walkthrough
The public CRM demo is a neutral OpenAPI contract for previewing Forge without private schemas or generated customer output.
Demo files:
examples/public-crm/openapi.yamlexamples/public-crm/archora-forge.config.tsexamples/public-crm/generatedexamples/public-crm/forge-check.html
Contract Shape
The schema includes the operation shapes frontend teams usually need to evaluate:
- CRUD resources: contacts and companies.
- Search resource:
GET /search. - Read-only dashboard endpoint:
GET /dashboard/summary. - Action operation:
POST /contacts/{contactId}/archive. - File/binary operation:
GET /files/{fileId}/download.
The schema is intentionally fictional. It does not include private names, customer data, screenshots or generated private output.
Run the Demo
From the repository root:
bash
pnpm build
node packages/cli/dist/index.js inspect --config examples/public-crm/archora-forge.config.ts
node packages/cli/dist/index.js lint --config examples/public-crm/archora-forge.config.ts --strict
node packages/cli/dist/index.js generate --config examples/public-crm/archora-forge.config.ts --dry-run
node packages/cli/dist/index.js check --config examples/public-crm/archora-forge.config.ts --report html --report-file examples/public-crm/forge-check.htmlCurrent demo check result:
- 6 detected resources.
- 93 generated files after a clean generation run.
- 0 diagnostics.
- 0 drift after generation.
- Health score 100.
What Forge Generates
The committed demo output shows the generated frontend resource layer:
txt
examples/public-crm/generated/src/
shared/api/generated/
components.types.ts
contacts/
contacts.client.ts
contacts.types.ts
contacts.query-keys.ts
index.ts
contactsArchive/
contactsArchive.client.ts
contactsArchive.types.ts
features/contacts/
api/
useContactsQuery.ts
useContactQuery.ts
useCreateContactMutation.ts
useUpdateContactMutation.ts
useDeleteContactMutation.ts
model/
contacts.config.ts
contacts.permissions.ts
contacts.i18n.ts
features/contactsArchive/
api/
useArchiveContactMutation.ts
shared/mocks/contacts/
contacts.fixtures.ts
contacts.handlers.ts
contacts.scenarios.tsFor Vue teams, the important integration point is the generated TypeScript contract, not a generated Vue component. The app can wrap contactsClient, contactsQueryKeys and contactsConfig in Vue composables, Pinia stores, TanStack Query adapters, or an internal resource module.
Example generated client surface:
ts
contactsClient.listContacts(params)
contactsClient.getContact(id)
contactsClient.createContact(payload)
contactsClient.updateContact(id, payload)
contactsClient.deleteContact(id)Example generated metadata surface:
ts
contactsConfig.fields
contactsConfig.filters
contactsConfig.columns
contactsConfig.paginationPreview Limits
This demo is for public preview and paid pilot evaluation. It is not a production-readiness claim.
Known limits still apply:
- Forge does not generate Vue pages or design-system components.
- Zod and Valibot generation are experimental opt-in modes.
- TanStack-style usage is an integration pattern, not a finished first-party adapter.
- Discriminator-heavy polymorphism and full OpenAPI serialization coverage are not claimed.
- Private schema adoption should start with a branch, generated diff review and CI drift check.