Desenvolvido para empresas

Sistema de gestão de projetos

ÁreaProcessos e automação
O que fazAntes, cada atraso exigia refazer o cronograma. Agora as tarefas ligadas se movem e o impacto fica visível.
FunçõesCronograma automático · Capacidade da equipe · Painel de portfólio
HabilidadesLevantamento de processo · Design de telas · Cálculo de cronograma · Apontamento de horas
Como foi construídoLevantei como a equipe acompanhava tarefas e como a diretoria cobrava prazo. Desenhei as telas e o fluxo de quadro, cronograma e portfólio. Construí o cálculo de prazos com calendário por pessoa e implantei na rotina da equipe.

O que o sistema cobre.

Sistema para a área de projetos que reúne o quadro de tarefas da equipe, o cronograma do projeto e a visão de portfólio da diretoria. Cobre backlog, dependências entre tarefas, cálculo de prazos e caminho crítico, capacidade de cada pessoa, apontamento de horas com aprovação mensal e o painel que consolida progresso, horas e datas por projeto e iniciativa.

Para quem

Equipes que tocam vários projetos, gerentes de projeto e a diretoria que cobra prazo e acompanha horas e entregas.

O que mudou na empresa

O cronograma deixou de ser refeito na planilha a cada atraso: o sistema recalcula prazos e mostra qual tarefa empurrou a entrega. Horas fecham por mês com aprovação e a sobrecarga da equipe fica visível.

Módulos e funções.

8 partes do sistema, cada uma com o que faz.

Backlog e quadro

Itens com escopo e estimativa em colunas por status. Arrastar o cartão muda o status.

Dependências entre tarefas

Liga tarefas por fim e início, com atraso opcional. Dependência em círculo é recusada na hora.

Cronograma automático

Calcula data mais cedo, mais tarde, folga e caminho crítico pelo calendário de cada responsável.

Recálculo com histórico

Mudou data, duração ou dependência, o cronograma refaz sozinho, mostra qual tarefa empurrou e quem alterou.

Capacidade da equipe

Horas disponíveis por pessoa e semana, já sem feriados, férias e ausências. Sobrecarga aparece como aviso.

Apontamento de horas

Horas faturáveis ou não, com centro de custo. Aprovação fecha o mês; ajustes ficam registrados.

Painel de portfólio

Progresso, horas e datas sobem de tarefa para épico e iniciativa, prontos para a diretoria ler.

Edição simultânea

Descrição e comentários editados a dois se juntam; status e estimativa avisam quem chegou depois.

Três telas.

O design é meu. Cada legenda diz o que a tela faz.

Quadro de tarefas: arraste o cartão e o status muda na hora
Tela 1Quadro de tarefas: arraste o cartão e o status muda na hora
Equipe: horas disponíveis já sem feriados, férias e faltas
Tela 2Equipe: horas disponíveis já sem feriados, férias e faltas
Portfólio: todos os projetos e seus prazos em uma só tela
Tela 3Portfólio: todos os projetos e seus prazos em uma só tela

Como funciona por dentro.

Mexer numa data, numa duração ou numa dependência move mil datas. Por isso o recálculo sai do request.

  1. BacklogItem nasce com escopo, estimativa e chave de ordenação fracionária dentro do seu escopo. Arrastar grava uma linha só: a do cartão movido. A coluna inteira não é renumerada.
  2. BoardColuna é projeção de estado, não tabela separada. Mover cartão é patch de um campo com a versão daquele campo, não um PUT do objeto, que apagaria o que o colega mudou ao lado.
  3. DependênciasBloqueio é aresta tipada entre tarefas: fim-início, início-início, fim-fim, com atraso opcional. A checagem de ciclo roda sob o mesmo lock consultivo do plano que o worker toma, senão dois inserts concorrentes, cada um acíclico sozinho, commitam um ciclo sem nenhum enxergar o outro. Aresta que fecharia o grafo é recusada na hora, com o caminho que ela criaria.
  4. AgendamentoSobre o grafo em ordem topológica: passo à frente dá data mais cedo, passo atrás dá data mais tarde, a diferença é a folga. Folga zero forma o caminho crítico. Duração vira dia útil pelo calendário do responsável. Estado não move data por si: só as transições que gravam real reancoram o sucessor, entrar em Doing grava início real, concluir grava fim real. Arrastar entre as outras colunas não toca o cronograma.
  5. RecálculoA escrita da data commita curta e enfileira o plano pelo outbox, e o evento carrega ator, campo e valor anterior. O worker toma lock consultivo do plano, refaz só o componente conexo afetado e publica a versão nova do cronograma de uma vez. Cada linha do diff aponta a predecessora que empurrou e o evento que originou o empurrão. A tela nunca lê meio recálculo.
  6. CapacidadeCapacidade líquida por pessoa e por semana: jornada contratada menos feriado nacional, estadual e municipal, férias e ausência. Alocação é percentual num intervalo. Utilização é hora apontada sobre capacidade. Superalocação é aviso visível, não bloqueio.
  7. ApontamentoHora entra como intervalo, com faturável ou não e centro de custo. Constraint de exclusão barra dois lançamentos sobrepostos do mesmo usuário. Aprovação fecha a competência; depois disso só entra ajuste, e o ajuste guarda o valor anterior.
  8. PortfólioProgresso, horas e datas sobem pela hierarquia, tarefa, épico, iniciativa, para uma tabela de rollup materializada. Três eventos distintos a invalidam, não um: versão nova de cronograma escreve datas e folga; fechamento ou ajuste de competência no timesheet escreve horas; mudança de progresso escreve percentual e contagem. Os três coalescem pela mesma chave de hierarquia, cada um toca só as suas colunas e cada coluna guarda a versão do evento que a escreveu, chegada fora de ordem não regride o número. Ler portfólio não dispara soma sobre dez mil linhas.

O problema e a saída.

O problema

Board e cronograma vivem brigando. O time trabalha em cartão; a diretoria cobra data. Quando uma dependência escorrega, alguém reabre a planilha e refaz na mão, e a data prometida ontem já não existe mais.

A saída

Um grafo só, duas leituras. O cartão do board é a mesma tarefa que o cronograma agenda. Mudou data, duração ou aresta, o motor refaz folga e caminho crítico fora do request e devolve o diff: o que moveu, quanto e por causa de qual predecessora.

Tecnologias e o porquê.

CamadaEscolhaPor quê
Modelo de dadosPostgreSQL; dependência como aresta indexada nos dois sentidosDependência como linha própria permite índice de predecessor e de sucessor, e travessia do grafo sem carregar o projeto inteiro em memória. É o que torna o recálculo incremental por componente conexo, em vez de refazer o plano todo a cada aresta.
Motor de cronogramaServiço próprio: topológica + passo à frente e passo atrásCPM é determinístico e o componente conexo cabe em memória. Biblioteca pronta não conhece calendário de trabalho por pessoa, feriado municipal nem jornada de seis horas, e é isso que converte duração em data. Mesma entrada, mesma saída: o recálculo vira repetível, testável e diffável contra a linha de base.
Fila e recálculoOutbox transacional + fila com coalescing por planoRajada de dez edições de data em vinte segundos precisa virar um recálculo, não dez. A chave da mensagem é o plano, então o job pendente absorve os que chegam depois. Lock consultivo por plano serializa workers do mesmo cronograma e deixa planos diferentes correrem em paralelo, e o mesmo lock cobre a inserção de aresta, porque checagem de ciclo fora dele é garantia falsa sob READ COMMITTED. O job carrega a versão do grafo que leu e o evento de origem, com ator e campo alterado; entrega repetida não duplica publicação.
ColaboraçãoWebSocket + CRDT no texto, patch por campo no restoDescrição e comentário são CRDT: dois cursores no mesmo parágrafo convergem sem ninguém perder frase. Status, responsável e estimativa não: são patch com versão do campo, e patch com versão velha é recusado com o valor atual junto, para o cliente reconciliar em vez de esmagar. Presença e cursor não tocam o banco, canal efêmero com TTL curto.
Ordenação do backlogChave fracionária em texto, com desempate por idMover cartão escreve uma linha, não renumera a coluna. Dois arrastos simultâneos no mesmo vão podem gerar a mesma chave; o desempate determinístico por id faz todos os clientes convergirem para a mesma ordem sem servidor arbitrando. Quando a chave cresce demais depois de muitas inserções seguidas, um job compacta o escopo sob lock e transmite a lista nova.
Horas e portfólioTimesheet por competência + rollup materializadoO mês fechado não é lido junto com o mês corrente. Partição por competência mantém o índice pequeno, deixa congelar o período inteiro e faz a apuração ler uma partição só. O rollup do portfólio não é somado a cada abertura de tela, e não é escrito só pelo worker do CPM: três produtores o invalidam pela mesma chave de hierarquia. Versão nova de cronograma grava datas e folga; competência fechada ou ajustada grava horas; mudança de progresso grava percentual. Cada coluna carrega a versão do evento que a escreveu, então chegada fora de ordem não regride número.

Decisões de projeto.

Recálculo assíncrono, com estado visível

Aceitei que a tela mostre data velha por alguns segundos. A alternativa, recalcular no request, travava a edição em grafo grande. Prefiro lento e visível a rápido e mentiroso.

CRDT só no texto longo

Estender CRDT a status e estimativa fundiria valor que não deve se fundir. Campo escalar leva patch com versão: quem chegou atrasado recebe recusa e vê o valor novo, não sobrescreve.

Calendário de trabalho é da pessoa

Cada tarefa resolve o calendário do responsável: jornada, férias, feriado municipal. Isso impede pré-calcular duração em lote e encarece o passo. Calendário único faz o prazo mentir.

Escopo.

O que o sistema cobre

  • O fluxo de 8 passos e as decisões acima.
  • As três telas desta página.

O que não está publicado

  • Nome da empresa e números de operação não são divulgados aqui.
  • O código não é público. O que dá para ver: o processo, as telas e as decisões.

Da mesma faixa.

Processos e automação

Quer ver este sistema de perto?

Mostro o processo que mudou, os módulos, as telas e como foi construído.

Contato

Quer ver isso de perto?

Diegorafacarvalho@gmail.com +55 47 98801-8335

Santa Catarina, Brasil, remoto. Costumo responder no mesmo dia.

Sem formulário

  • Recrutador não preenche formulário, copia o e-mail. Ele está aí em cima.
  • A versão rápida é uma página só, imprime em A4 e serve para encaminhar ao tech lead.
  • Qualquer sistema daqui eu mostro em chamada: o processo que mudou, os módulos, as telas e como foi construído.
  • Os sistemas foram desenvolvidos para empresas e o código não é público. Este site também é meu, do motor de scroll ao design: veja como funciona.