1.9 KiB
1.9 KiB
Frontend – Convenções Anti-Erro
1) Chamadas de API (padrão obrigatório)
Use src/lib/api.ts como única porta de entrada para HTTP.
Padrão atual:
- Use
apiRequest<T>(endpoint, options)para qualquer fetch. - Token vem do
localStorage(auth_tokenoutoken) e é enviado no headerAuthorization: Bearer. Content-Typeé JSON sempre que houverbody.credentials: "include"está ativado (cookies compartilhados).- Erros retornam
Errorcommessagedo backend, quando disponível.
Não chame
fetchdireto em páginas/componentes.
Sempre centralize novas rotas emsrc/lib/api.ts(ex.:usersApi,jobsApi, etc.).
Referência: frontend/src/lib/api.ts.
2) Traduções (i18n sem quebra de build)
UI do frontend (Next.js)
- As strings usadas por
useTranslationestão emfrontend/src/i18n(en.json,es.json,pt-BR.json). - Regra: qualquer nova chave deve existir em todos os arquivos de idioma para evitar fallback inconsistente.
Catálogo geral
- Existe um catálogo amplo em
frontend/messages(ex.:pt-BR.json,en-US.json,es-ES.json,ja-JP.json). - Se você adicionar uma nova chave nesse catálogo, replique nas outras línguas no mesmo caminho de objeto.
Referências: frontend/src/lib/i18n.tsx, frontend/src/i18n/*.json, frontend/messages/*.json.
3) Componentes de formulário (padrão JobFormBuilder)
Todos os formulários com perguntas dinâmicas devem seguir o padrão de JobFormBuilder:
- Tipo
Questioncomid,type,label,requiredeoptions(quando aplicável). typepermitido:text,long_text,yes_no,multiple_choice,select.optionsexiste apenas paramultiple_choiceeselect.- Respeite o limite
maxQuestions(default 7). - UI deve usar componentes de
components/uie manter o campo fixo de currículo (CV) como referência visual.
Referência: frontend/src/components/job-form-builder.tsx.