Este guia orienta uma LLM a gerar o frontend Angular canonico para um
recurso CRUD que ja publica corretamente o contrato metadata-driven do
praxis-metadata-starter.
O objetivo nao e montar “qualquer tela Angular que compile”. O objetivo e gerar um host alinhado ao runtime oficial da plataforma:
@praxisui/crud como shell canonico de CRUD@praxisui/table como superficie canonica de listagem e
filtro@praxisui/dynamic-form como superficie canonica de
formularioGenericCrudService consumindo
GET {resource}/schemas e
/schemas/filteredresourcePath, idField, ETag e
X-Schema-Hash usados de forma coerenteEste guia so deve ser usado depois que o backend ja publicar corretamente o contrato metadata-driven.
Use esta ordem:
GUIA-01-AI-BACKEND-APLICACAO-NOVA.mdGUIA-02-AI-BACKEND-CRUD-METADATA.mdCHECKLIST-VALIDACAO-IA.mdNenhum passo deste guia depende de consultar app externo.
praxis-metadata-starter
x-ui, /schemas/filtered,
idField e o contrato metadata-drivenpraxis-ui-angular
@praxisui/core,
@praxisui/table, @praxisui/dynamic-form e
@praxisui/crudO starter nao redefine semantica de frontend. Ele orienta o consumo correto do runtime oficial Angular.
Use este guia quando a LLM precisar gerar a parte frontend de um recurso CRUD ja exposto pelo backend Praxis.
Este guia cobre:
praxis-tablecreate, view, edit e
deletepraxis-crudEste guia nao e o lugar correto para:
Se o pedido for apenas uma lista remota simples,
praxis-table pode bastar. Se o pedido for um CRUD completo,
prefira praxis-crud.
No minimo:
resourcePath canonico do backendidFieldmodal, route ou
drawerendpointKey quando houver mais de uma API
configuradaExemplo:
Gere o frontend Angular de CRUD completo para o recurso abaixo.
Entrada:
- Recurso: Funcionarios
- resourcePath: human-resources/funcionarios
- idField: id
- endpointKey: HumanResources
- rota da lista: /funcionarios
- rota de visualizacao: /funcionarios/view/:id
- openMode padrao: modal
Para um CRUD completo:
npm i @angular/animations @angular/cdk @angular/material
npm i @praxisui/core @praxisui/table @praxisui/dynamic-form @praxisui/crudPara um app Angular novo, a prova operacional desta rodada mostrou que o baseline real tambem precisa incluir:
npm i @praxisui/ai @google/generative-aiMotivo:
@praxisui 3.0.0-beta.10 ainda
puxam @praxisui/ai no grafo de bundle de algumas libs@praxisui/ai referencia
@google/generative-aiNao assumir que as quatro libs principais bastam sozinhas em um app Angular novo.
Referencia operacional validada nesta rodada:
praxis-metadata-starter 5.0.0-rc.2@praxisui 3.0.0-beta.10resourcePathNo runtime Angular atual, o resourcePath segue o
formato:
human-resources/funcionarios
Se API_URL ja aponta para /api, mantenha o
resourcePath relativo ao dominio do recurso e nao repita o
prefixo api/.
API_URLO app host precisa fornecer o token API_URL.
Exemplo minimo:
import { ApplicationConfig } from '@angular/core';
import { API_URL, type ApiUrlConfig } from '@praxisui/core';
export const appConfig: ApplicationConfig = {
providers: [
{
provide: API_URL,
useFactory: (): ApiUrlConfig => {
const origin =
typeof window !== 'undefined' && window.location
? window.location.origin
: 'http://127.0.0.1:4200';
return {
default: { baseUrl: origin, path: '/api', version: '' },
} as ApiUrlConfig;
},
},
],
};Se houver endpoint dedicado por dominio:
{
provide: API_URL,
useFactory: (): ApiUrlConfig => {
const origin =
typeof window !== 'undefined' && window.location
? window.location.origin
: 'http://127.0.0.1:4200';
return {
default: { baseUrl: origin, path: '/api', version: '' },
humanResources: { baseUrl: origin, path: '/api', version: '' },
} as ApiUrlConfig;
},
}Para app Angular novo fora do workspace oficial, prefira
baseUrl = window.location.origin.
Para app novo, o bootstrap tambem deve prover:
provideHttpClient()provideAnimationsAsync() ou equivalenteprovidePraxisGlobalConfigBootstrap()Nao faz parte do baseline minimo de um host CRUD novo.
So use esse bootstrap quando o host realmente integrar
praxis-config-starter e precisar de config remota em
/api/praxis/config/**.
GenericCrudServiceRegras canonicas:
praxis-table e self-hosted para
GenericCrudServicepraxis-dynamic-form e host-driven para
GenericCrudServicepraxis-crud e o shell recomendado para CRUD
completoO frontend oficial consome:
GET {resource}/schemas/schemas/filtered?path=.../all&operation=get&schemaType=response/schemas/filtered?path=.../filter&operation=post&schemaType=requestTambem usa:
If-None-MatchETagX-Schema-Hashx-ui.resource.idFieldlista + acoes:
praxis-crud
-> praxis-table
-> crudContext estavel
-> create/view/edit/delete
formulario:
praxis-dynamic-form
-> schema-driven
-> usa GenericCrudService quando depende de resourcePath/resourceId
Para um app Angular novo, gere no minimo:
src/app/app.config.tssrc/app/app.routes.tspraxis-crudpraxis-dynamic-form, quando houver rotasrc/styles.scss com tema Materialproxy.conf.jsangular.json com
serve.options.proxyConfigVoce esta gerando o frontend Angular canonico para um recurso CRUD Praxis.
Use apenas o contrato metadata-driven ja publicado pelo backend.
Considere praxis-ui-angular como runtime canonico.
Gere:
- host com praxis-crud para a lista principal
- praxis-dynamic-form para view/edit quando houver rota
- API_URL coerente
- resource.path e idField corretos
- create/view/edit/delete conectados ao fluxo canonico
Nao invente wrappers locais nem duplicacoes de contrato.
Entrada:
- resourcePath: {resource-path}
- idField: {id-field}
- endpointKey: {endpoint-key}
- rota da lista: {list-route}
- rota de view: {view-route}
- openMode padrao: {open-mode}
Antes de concluir:
praxis-crud para a lista principalresource.path e idField estao corretos no
metadataGenericCrudService foi provido ou configurado no host
corretopraxis-dynamic-form quando o
fluxo exigir routecreate, view, edit e
delete estao conectados ao fluxo corretoQuando o workspace Angular tiver node_modules de
Windows, prefira executar via cmd.exe /c.
Quando a prova usar um app Angular novo fora do workspace oficial, a validacao minima deve incluir:
npm run build
npm start -- --host 127.0.0.1 --port 4305Evidencias esperadas:
/funcionarios responde 200/api e
/schemasPOST /api/.../filter?page=0&size=10 responde
200 no mesmo origin do hostSe houver trilha browser-level complementar, trate-a como validacao separada do baseline material acima.
https://github.com/codexrodrigues/praxis-ui-angular@praxisui/core,
@praxisui/table, @praxisui/dynamic-form,
@praxisui/crudpraxis-metadata-starter/docs/guides/GUIA-01-AI-BACKEND-APLICACAO-NOVA.mdpraxis-metadata-starter/docs/guides/GUIA-02-AI-BACKEND-CRUD-METADATA.md