Foto do Samuel Teixeira
Samuel Teixeira
Finoo
Engenheiro de Software (Frontend - Vue)
Out 2024 → Fev 2025

Finoo Partner - Dashboard e Gestão de Estudantes em Vue 3

Assumi a evolução de um portal de parceiros (SPA em Vue 3), melhorando o Dashboard de KPIs e o fluxo de gestão de estudantes (convites, tabelas e detalhes), enquanto fortalecia composables de API e a consistência de UI.

Stack

Vue 3 (Composition API)
TypeScript
Vite
Tailwind CSS
@tanstack/vue-query
Axios
Radix Vue
Unovis

Métricas

42 commits (~57% do repo)
4+ áreas tocadas (Auth, Dashboard, Students, Settings)
Entrega contínua até Fev/2025 (merges/PRs)

Resumo

  • Entrega: evolução do Dashboard (KPIs/gráficos/atalhos) e do módulo de Gestão de Estudantes (listagens, convites e detalhes).
  • Como eu destravei: consolidação de composables de API (partner + invites) e reforço de padrões de UI compartilhados para manter telas previsíveis.
  • Efeito prático: telas mais consistentes, fluxo de convites mais completo (incl. CSV) e melhorias de UX em auth/settings.

Ao longo de ~5 meses, eu assumi uma fatia do portal com foco em UX/DX e previsibilidade, sob a restrição de baixa cobertura de testes automatizados e necessidade de entregar mudanças incrementais com segurança.

Contexto

  • Produto e usuários: SPA para parceiros/administradores acompanharem KPIs e executarem operações de gestão de estudantes (convites, listagens e detalhes).
  • Por que era crítico: dashboard + operações diárias (convites/gestão) são fluxos de alta frequência - regressões geram atrito operacional imediatamente.
  • Restrições reais: com pouca automação de testes, eu precisei reduzir risco via padrões, tipagem e mudanças incrementais.

Principais desafios

  • Manter consistência visual e previsibilidade entre áreas diferentes (KPIs, tabelas e formulários).
  • Evoluir integrações de API sem espalhar regras por componentes (evitando acoplamento e retrabalho).
  • Melhorar UX em fluxos sensíveis (auth/settings) com mudanças pequenas e frequentes sem quebrar caminhos críticos.

O que eu fiz

  • Dashboard (Home): evoluí cards/KPIs, gráficos e detalhes de layout para melhorar leitura e ação rápida.
  • Gestão de Estudantes: melhorei UI e funcionalidade de convites e listas, incluindo upload por CSV para operações em lote e refinamentos nas tabelas.
  • Base para escalar (camada de dados): criei/estruturei composables de API (partner + invites) para reduzir duplicação e manter integrações mais fáceis de evoluir.
  • Polimento operacional (micro-UX): melhorias de feedback e usabilidade (toasts de sucesso, UX de formulários, toggle/autocomplete de senha) e ajustes no header para exibir contexto do partner.

Decisões & trade-offs

  • Composables de API > lógica espalhada em componentes: centralizar chamadas e tipos reduziu regressões e acelerou novas telas.
    Trade-off: adiciona uma camada de abstração que exige convenções e onboarding.
  • Evolução incremental > refactor “big bang”: commits menores e revisáveis ajudaram a controlar risco em produção.
    Trade-off: parte da dívida legada permanece até existir uma janela de estabilização.
  • Exemplo específico: entreguei upload de CSV no fluxo de convite para destravar operações em lote.
    Trade-off: demanda validação/tratamento de erros e feedback claro na UI.

Resultados

  • Medido (engenharia): 42 commits (~57% do repositório no recorte analisado).
  • Proxy técnico (concreto):
    • Evolução do Dashboard (KPIs/cards/gráficos) e melhorias na Gestão de Estudantes (listas/convites/detalhes).
    • Fluxo de convites em lote via CSV entregue, com refactors relevantes em tabelas e handling de convites.
    • Melhorias de UX em auth/settings (autocomplete, toggle de senha, toasts) e ajustes no header com contexto do partner.
  • Operacional: aumentei a previsibilidade para evolução contínua ao apoiar o produto em composables + padrões de UI compartilhados, reduzindo retrabalho e tornando mudanças mais seguras.

Nota: métricas sensíveis podem estar em dashboards internos; evidências redigidas podem ser organizadas sob solicitação.

O que eu faria diferente

  • Adicionar uma base mínima de testes automatizados (componentes críticos + smoke flows) para reduzir risco de regressão.
  • Definir um Definition of Done leve (lint/build + checagens-chave de UX) para estabilizar qualidade.
  • Formalizar um padrão único para forms/tables (validação, estados de loading/error, empty states) para reduzir variação entre telas.