Screen map¶
Este mapa define as telas do frontend moderno integrado em apps/web. A experiência visual pode
evoluir, desde que preserve dados, contratos e regras.
1. Landing / Home¶
- Objetivo: apresentar SotuHire, local-first, Análise de Compatibilidade, GitHub Analyzer e demo.
- Dados necessários: copy pública, links de docs, screenshots, release atual.
- Endpoint futuro: nenhum obrigatório.
- Estados vazios: não aplicável.
- Estados de erro: links indisponíveis devem degradar para navegação de docs.
- Liberdade visual: total para hero, cards, animações e CTA.
- Regras: não prometer que GitHub Pages roda backend.
2. Dashboard¶
- Objetivo: resumir perfil, análises recentes, vagas salvas e próximos passos.
- Dados necessários: perfil, métricas do tracker, análises recentes, gaps recorrentes.
- Endpoint:
GET /api/v1/tracker/metrics. - Estados vazios: primeira análise ainda não executada.
- Estados de erro: API local indisponível ou storage não iniciado.
- Liberdade visual: cards KPI, charts, feed e atalhos.
- Regras: não calcular métricas críticas no frontend.
3. Upload/colagem de currículo¶
- Objetivo: receber currículo em texto ou arquivo.
- Dados necessários: texto bruto ou arquivo suportado.
- Endpoint:
POST /api/v1/resume/extract. - Estados vazios: nenhum currículo carregado.
- Estados de erro: arquivo inválido, tipo não suportado, texto insuficiente.
- Liberdade visual: dropzone, editor, progresso e preview.
- Regras: não enviar dados a serviço externo sem consentimento explícito.
4. Perfil profissional¶
- Objetivo: mostrar perfil estruturado extraído e editável.
- Dados necessários: skills, experiências, formação, projetos, links e preferências.
- Endpoint:
POST /api/v1/resume/extract. - Estados vazios: perfil não extraído.
- Estados de erro: baixa confiança de extração.
- Liberdade visual: abas, cards, tabelas ou timeline.
- Regras: diferenciar dado extraído de dado confirmado pela pessoa usuária.
5. Entrada de vaga¶
- Objetivo: receber descrição de vaga, link ou texto público.
- Dados necessários: texto da vaga e metadados opcionais.
- Endpoint:
POST /api/v1/job/extract. - Estados vazios: nenhuma vaga informada.
- Estados de erro: vaga incompleta, descrição curta, fonte indisponível.
- Liberdade visual: editor, URL input, preview e checklist.
- Regras: não acessar área autenticada sem ação explícita da pessoa usuária.
6. Análise de Compatibilidade¶
- Objetivo: mostrar Pontuação de compatibilidade, Confiança, evidência, gaps e ações seguras.
- Dados necessários: análise de currículo, vaga e evidências.
- Endpoint:
POST /api/v1/match/analyze. - Estados vazios: currículo ou vaga ausente.
- Estados de erro: extração falhou, evidência insuficiente, baixa confiança.
- Liberdade visual: scorecards, breakdown, timeline, accordion e charts.
- Regras: a pontuação real vem do backend/core.
7. ATS Review¶
- Objetivo: separar keywords presentes, seguras se verdadeiras e sem evidência.
- Dados necessários: currículo, vaga, keywords e match signals.
- Endpoint:
POST /api/v1/ats/analyze. - Estados vazios: análise de match ainda não executada.
- Estados de erro: keywords insuficientes ou baixa confiança.
- Liberdade visual: listas, tags, heatmap e comparação.
- Regras: não sugerir keyword como fato sem evidência.
8. Resume Tailor¶
- Objetivo: sugerir ajustes seguros de currículo para a vaga.
- Dados necessários: perfil, vaga, ATS review e evidências.
- Endpoint:
POST /api/v1/resume/tailor. - Estados vazios: sem análise ou sem evidências.
- Estados de erro: tentativa de gerar afirmação sem base.
- Liberdade visual: editor comparativo, sugestões aceitas/rejeitadas e checklist.
- Regras: nunca inventar experiência, credencial, cargo, empresa ou registro.
9. GitHub Analyzer¶
- Objetivo: analisar repositório público como evidência profissional.
- Dados necessários: URL ou owner/repo.
- Endpoint:
POST /api/v1/github/repo/analyze. - Estados vazios: nenhum repositório informado.
- Estados de erro: repo privado, rate limit, URL inválida.
- Liberdade visual: scorecards, linguagens, evidências, arquivos e riscos.
- Regras: não exigir token para análise pública básica.
10. Portfolio Evidence¶
- Objetivo: consolidar projetos, links e evidências reutilizáveis.
- Dados necessários: GitHub, currículo, portfolio, memória local.
- Endpoint futuro: futuro endpoint de evidências.
- Estados vazios: nenhuma evidência conectada.
- Estados de erro: link indisponível ou evidência ambígua.
- Liberdade visual: biblioteca, tags e filtros.
- Regras: diferenciar evidência pública de dado privado/local.
11. Kanban de candidaturas¶
- Objetivo: acompanhar vagas por status.
- Dados necessários: jobs, status, fonte, datas, match e notas.
- Endpoint:
GET/POST/PATCH /api/v1/tracker/jobs. - Estados vazios: nenhuma vaga salva.
- Estados de erro: conflito de atualização, job inexistente.
- Liberdade visual: board, listas, cards compactos e filtros.
- Regras: status e histórico devem persistir no backend/storage.
12. Application Intelligence / gráficos¶
- Objetivo: mostrar métricas e padrões das candidaturas.
- Dados necessários: métricas, requisitos, fontes, funil, gaps e timeline.
- Endpoint:
GET /api/v1/tracker/metrics,/requirements,/funnel,/sources. - Estados vazios: dados insuficientes.
- Estados de erro: métricas indisponíveis ou storage corrompido.
- Liberdade visual: KPIs, barras, donut, funil, heatmap e tabelas.
- Regras: agregações oficiais devem vir da API.
13. Histórico¶
- Objetivo: listar análises, vagas e decisões anteriores.
- Dados necessários: eventos locais, análises e candidaturas.
- Endpoint futuro: futuro endpoint de histórico.
- Estados vazios: sem histórico.
- Estados de erro: falha ao carregar storage local.
- Liberdade visual: timeline, busca e filtros.
- Regras: respeitar privacidade e permitir limpeza local.
14. Configurações locais¶
- Objetivo: configurar provider opcional, storage, idioma e preferências.
- Dados necessários: status local, provider, flags e preferências.
- Endpoint futuro: futuro endpoint de settings.
- Estados vazios: configuração padrão.
- Estados de erro: provider indisponível, chave ausente, teste falhou.
- Liberdade visual: formulários, toggles e diagnóstico.
- Regras: segredos não devem aparecer em logs, screenshots ou frontend público.
15. Privacidade/local-first¶
- Objetivo: explicar onde os dados ficam e quais integrações são opcionais.
- Dados necessários: políticas do produto e status de storage.
- Endpoint futuro: nenhum obrigatório.
- Estados vazios: não aplicável.
- Estados de erro: não aplicável.
- Liberdade visual: página educativa, checklist e FAQ.
- Regras: não prometer privacidade absoluta se integração externa for ativada.