Skip to content

Repository files navigation

Murbi Dev Dashboard

O Murbi Dev Dashboard é uma camada de visibilidade operacional em tempo real sobre o Kanban do Jira. Ele foi criado para times de suporte, negócio, operações e gestão acompanharem o fluxo contínuo sem expor toda a complexidade técnica do Jira.

O app não substitui o Jira. Ele mostra cards principais que não estão no backlog e traduz os status técnicos para colunas simples, orientadas ao negócio.

Funcionalidades

  • Kanban contínuo sem backlog
  • Atualização automática a cada 30 segundos
  • Tela de login sem banco de dados, com sessão em cookie assinado
  • Credenciais do Jira mantidas no servidor por trás de /api/dashboard
  • Modo simulado quando credenciais do Jira estão ausentes ou o Jira está indisponível
  • Cards HOTFIX pinados primeiro com destaque visual
  • Alertas para cards parados há muito tempo no mesmo status
  • Busca por chave, título ou responsável
  • Filtros por HOTFIX, responsável e prioridade
  • Modo TV em /tv

Stack Técnica

  • Next.js App Router
  • TypeScript
  • TailwindCSS
  • Componentes locais no estilo shadcn/ui
  • TanStack React Query

Configuração

Instale as dependências:

npm install

Crie o arquivo de ambiente:

cp .env.example .env.local

Rode o app:

npm run dev

Abra http://localhost:3000.

Variáveis de Ambiente

JIRA_BASE_URL=https://your-company.atlassian.net
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=your_api_token
JIRA_BOARD_ID=123

DASHBOARD_AUTH_USER=admin
DASHBOARD_AUTH_PASSWORD_SHA256=hash_sha256_da_senha
DASHBOARD_AUTH_SECRET=segredo_para_assinar_sessao

Se alguma variável do Jira estiver ausente, o app usa automaticamente dados simulados.

Em produção, DASHBOARD_AUTH_USER, DASHBOARD_AUTH_PASSWORD_SHA256 e DASHBOARD_AUTH_SECRET são obrigatórios. Se não forem configurados, a aplicação bloqueia o acesso em vez de ficar pública.

Autenticação

O painel usa uma tela própria de login em /login. Após autenticar, o servidor grava um cookie HttpOnly assinado, protegendo páginas e rotas internas antes de qualquer dado do Jira ser entregue ao navegador.

A senha não deve ser salva em texto puro. Gere o hash SHA-256 da senha:

npm run auth:hash -- sua-senha-forte-aqui

Gere também um segredo para assinar a sessão:

npm run auth:secret

Configure na Vercel:

DASHBOARD_AUTH_USER=admin
DASHBOARD_AUTH_PASSWORD_SHA256=resultado_do_comando_acima
DASHBOARD_AUTH_SECRET=resultado_do_auth_secret

Use HTTPS, que é o padrão da Vercel. O cookie de sessão é HttpOnly, SameSite=Lax e Secure em produção.

Integração com Jira

A integração fica em src/services/jira.

Fluxo da API:

  1. Busca o board em GET /rest/agile/1.0/board/{boardId}
  2. Busca os cards principais do board em GET /rest/agile/1.0/board/{boardId}/issue
  3. Usa JQL status != Backlog AND issuetype not in subTaskIssueTypes() AND (statusCategory != Done OR status CHANGED TO Done AFTER -14d) para refletir o Kanban sem backlog e limitar concluídos recentes
  4. Normaliza as respostas do Jira para tipos seguros do dashboard
  5. Mapeia os status do Jira para status de negócio

O frontend chama apenas a rota interna do Next.js:

/api/dashboard

As credenciais do Jira nunca são expostas ao navegador.

Mapeamento de Status

O mapeamento centralizado fica em src/lib/status-mapper.ts.

Status no painel Status do Jira
Pendente Tarefas pendentes
Em Desenvolvimento Em andamento, Pull request, Pronto para QA
Em Teste Teste QA
Aguardando Deploy Pronto para PROD
Em Produção Concluído, Concluido

Regra de HOTFIX

Qualquer card com a prioridade HOTFIX no Jira é tratado como crítico operacional:

  • Fica pinado no topo da coluna
  • Recebe destaque em vermelho
  • Exibe o badge HOTFIX no lugar do badge de prioridade

Modo TV

Abra:

http://localhost:3000/tv

O modo TV usa tipografia maior, resumos operacionais mais visíveis, sem filtros, e cinco colunas fixas para telas de monitoramento.

Scripts

npm run dev
npm run build
npm run lint
npm run typecheck
npm run auth:hash -- sua-senha
npm run auth:secret

Estrutura do Projeto

src/app
src/components
src/components/dashboard
src/components/cards
src/components/layout
src/components/ui
src/hooks
src/lib
src/services/jira
src/types

Releases

Packages

Contributors

Languages