Todos os projectos
App Web4 semanas

Gestor de Projectos · Ferramenta interna

Next.js 16TypeScriptSQLitePrisma 7Zustand 5Tailwind CSS 4dnd-kitDocker
7
Funcionalidades principais
SQLite
Zero servidores externos
Docker
Deploy self-hosted
1 cmd
Backup completo

Desafio

A maioria das ferramentas de gestão de projectos SaaS tem o mesmo problema: os dados vivem em servidores de terceiros, os preços sobem sem aviso e a funcionalidade está sempre a um pivot da empresa longe de mudar. Para uso profissional diário, isso cria uma dependência que não faz sentido quando a alternativa é construir algo próprio.

O desafio técnico era genuíno: construir uma ferramenta útil o suficiente para uso diário, sem cair na armadilha de features infinitas. A maioria dos gestores de tarefas é demasiado simples ou demasiado complexo. O objectivo era um ponto intermédio: estrutura suficiente para gerir projectos reais, interface directa para usar sem fricção todos os dias.

O requisito de infraestrutura era específico: correr completamente em hardware local, sem base de dados externa, com backup reduzido a um único comando.

Solução

A escolha do SQLite foi deliberada. Não há servidor de base de dados, não há ligações de rede, não há configuração de credenciais. O estado da aplicação inteira vive num único ficheiro que pode ser copiado, movido ou restaurado com um comando. Para uma ferramenta interna, é a arquitectura correcta.

O frontend usa um store Zustand inicializado uma vez a partir de uma fetch server-side no layout raiz. Todos os componentes lêem do store local. As mutações passam por rotas de API que escrevem na base de dados e actualizam o store. Sem React Query, sem SWR, sem subscrições em tempo real. Uma escolha intencional para manter a aplicação rápida e previsível.

As funcionalidades principais cobrem o ciclo de vida completo de um projecto: listas kanban com drag-and-drop via dnd-kit, hill chart para visualizar progresso de forma não-linear, calendário de eventos, registo de tempo por tarefa, feed de actividade e pesquisa global com navegação por teclado.

O deploy é em Docker com um build multi-stage que mantém a imagem final leve. As migrações correm automaticamente no arranque do container. O backup da base de dados é um único comando que copia o ficheiro SQLite.

Processo

  1. Sprint 1: modelo de dados, rotas de API, CRUD de projectos e listas kanban com drag-and-drop.

  2. Sprint 2: hill chart, calendário de eventos, registo de tempo por tarefa e reordenação em batch com transacção única.

  3. Sprint 3: dashboard Today/Tomorrow, pesquisa global com navegação por teclado e feed de actividade.

  4. Deploy: configuração Docker multi-stage, migrações automáticas no arranque do container e script de backup da base de dados.

Precisas de algo semelhante?

Conta-me o que tens em mente. Respondo em menos de 24 horas com uma estimativa real.

Falar comigo