1

Desafios de arquitetura e modelagem ao construir um ecossistema de produtividade com Kanban e ferramentas utilitárias

Sempre fui entusiasta de ferramentas de produtividade, mas sentia que o software tradicional no mercado se dividia em dois extremos: ou eram listas de tarefas rasas sem contexto estratégico, ou ferramentas corporativas gigantescas, cheias de menus e com aquela lentidão clássica.

Para estudar arquitetura web, aprimorar meus códigos e resolver essa dor, decidi construir do zero um ecossistema próprio que integra três níveis de gestão (Estratégico, Tático com quadros Kanban e Operacional), além de alguns utilitários isolados para o dia a dia. Queria compartilhar com vocês alguns dos principais desafios técnicos que encontrei no processo.

O que aprendi e os maiores desafios técnicos:
Estruturação de Dados Relacionais: Lidar com a hierarquia entre os níveis de gestão exigiu repensar a modelagem relacional do banco de dados para evitar consultas pesadas (problema de N+1) ao renderizar os quadros e cartões de forma dinâmica e fluida.

Arquitetura Modular: O desafio de isolar ferramentas utilitárias (como geradores e compressores) dentro do mesmo ecossistema para evitar acoplamento excessivo com o núcleo do gerenciador de tarefas, mantendo o código limpo e fácil de dar manutenção.

Gerenciamento de Estado no Drag-and-Drop: Manter a interface responsiva ao mover cartões entre colunas exigiu atenção especial à sincronização assíncrona, focando em eliminar a latência perceptível no client-side.

O que gostaria de trocar ideia com vocês:
Deixo a pergunta para quem já passou por algo similar:

Como vocês costumam lidar com o gerenciamento de estado e sincronização em tempo real em aplicações baseadas em Kanban ou listas complexas?

Quais boas práticas vocês utilizam para estruturar aplicações web modulares sem perder performance?

(Para quem quiser inspecionar a aplicação rodando e testar os quadros, o projeto está disponível em: https://sgeto.com)

Críticas construtivas à arquitetura, dicas de otimização e sugestões de melhoria são super bem-vindas nos comentários! Valeu!

Carregando publicação patrocinada...
1

Como vocês costumam lidar com o gerenciamento de estado e sincronização em tempo real em aplicações baseadas em Kanban ou listas complexas?

Atualmente tenho utilizado SSE. Tudo o que ocorre no servidor que muda interface um evento é disparado. O frontend recebe esse evento e faz um request tradicional via API. Ou seja, o evento é para informar que algo mudou agora e o que foi que mudou. O frontend já conhece a rota, então só chama. Uma alternativa é websocket. Mas achei melhor não pois estaria criando 2 canais de transferencia de dados, além do que, não tinha dados em tempo real para enviar ao servidor.

Uma decisão que vc tem que tomar: ao criar um card, por exemplo, com o retorno do POST vc adiciona no kanban? ou vc faz um resync ao receber sucesso? ou vc vai esperar o SSE chegar para atualizar a interface?

Pegadinha:

  1. se vc escalar horizontalmente cuidado em como armazena a conexão do frontend, pois uma reconexão não garante que vc vai voltar no mesmo servidor. Além disso se um servidor dispara um evento ele só alcança os clients conectados com ele. Então um REDIS aqui cai muito bem.
  2. cuidado com os servidores: algumas configurações precisam ser feitas para que uma conexão funcione bem. mas é coisa simples (buffer, cache, timeout). se for implementar só lembre de checar isso.
1

Obrigado pelas observações! É sempre muito válido e importante relembrar que o SSE também pode ser utilizado para ovir o servidor em aplicações em tempo real.