Skip to main content
Glama

tuesday

CI Release Licença MIT

Gestão de tarefas no estilo do monday.com — tabela, Kanban, subitens e "Meu trabalho" — feita para trabalhar junto com o Claude. Pelo servidor MCP, o Claude lê e edita os seus quadros, quebra tarefas em passos e vai marcando o que concluiu; os commits que citam um item aparecem nele, e os TODO do código viram itens com link para a linha certa no VS Code.

Duas formas de usar: instalado no seu computador, com SQLite, ou publicado num servidor para o time, com PostgreSQL.

Tabela principal

Todos os prints usam dados fictícios, gerados por npm run prints.

O que ele faz

  • Tabela principal — grupos coloridos, colunas de status, pessoas, datas, números, links e ID do item (AUR-012), resumo por coluna, arrastar e soltar, filtros, busca e seleção múltipla.

  • Kanban — raias pelas etiquetas de qualquer coluna de status; arrastar o cartão muda o status.

  • Meu trabalho — tudo o que está com você, em todos os projetos: Atrasado, Hoje, Esta semana e depois.

  • Subitens — a tarefa quebrada em passos. O Claude planeja os passos e marca cada um ao concluir; o progresso (2/5) aparece na tabela, no Kanban e em Meu trabalho.

  • Claude (MCP) — 28 ferramentas para criar, buscar, mover e atualizar itens em linguagem natural. Tudo aparece na tela em tempo real, marcado como feito pelo Claude.

  • Hooks do Claude Code — ao abrir numa pasta de projeto, o Claude recebe o que está em andamento, bloqueado e atrasado; ao terminar, registra a atualização e ajusta o status.

  • Git — commits que citam AUR-012 aparecem no item, e fixes AUR-012 conclui. Sem instalar nada nos repositórios, e uma pasta pode ter vários (backend e front lado a lado).

  • TODOs do código — TODO, FIXME, HACK e XXX dos comentários viram itens com link que abre o arquivo no VS Code na linha certa, e a linha acompanha o código.

Kanban

Subitens marcados pelo Claude

Commits ligados ao item

Meu trabalho

Importar TODOs do código

Conectar o Claude

Related MCP server: Execution System MCP Server

Duas formas de usar

No seu computador

Num servidor

Para quem

você e o seu Claude

um time, no navegador

Banco

SQLite, um arquivo

PostgreSQL

Instalação

instalador do Windows, ou pelo código

Docker Compose, ou pelo código

Acesso

só este computador

pela rede, com senha

Claude

MCP local e hooks, configurados por um botão

MCP via HTTP, com a senha

Instalar no Windows

  1. Baixe o tuesday-Setup-x.y.z.exe em Releases.

  2. O instalador ainda não é assinado, então o Windows avisa na primeira vez: clique em Mais informações → Executar assim mesmo.

  3. No app, clique em Claude (no topo) e em Configurar agora — Claude Code, Claude Desktop e os hooks. Não precisa ter Node instalado: o próprio tuesday roda o servidor MCP.

O app se atualiza sozinho. Quando sai versão nova, ele baixa em segundo plano e instala quando você fechar. Antes de uma versão nova abrir o banco, ele guarda uma cópia em %APPDATA%\tuesday\backups.

Os dados ficam em %APPDATA%\tuesday. Desinstalar não apaga essa pasta. Para usar a CLI (tuesday init, tuesday brief, tuesday todos…), coloque a pasta bin da instalação no PATH: %LOCALAPPDATA%\Programs\tuesday\bin.

Pelo código (Windows, macOS e Linux)

Precisa do Node.js 22 ou mais novo.

git clone https://github.com/MatheusBVieira/tuesday.git
cd tuesday
npm install
npm run build
npm start        # http://localhost:4010
npm run setup    # registra o MCP no Claude Code

O banco fica em data/tuesday.db. Na primeira execução é criado um projeto de exemplo.

Publicar num servidor

Com Docker, numa máquina da rede (ou numa VPS):

git clone https://github.com/MatheusBVieira/tuesday.git
cd tuesday
cp .env.example .env     # defina TUESDAY_PASSWORD e POSTGRES_PASSWORD
docker compose up -d

Abra http://<servidor>:4010. O navegador pede a senha na primeira visita — qualquer usuário, com a TUESDAY_PASSWORD. O compose sobe o tuesday e um PostgreSQL 17 com volume próprio.

Conectar o Claude de cada pessoa — o comando também aparece em Claude, no topo do app:

claude mcp add --transport http tuesday http://<servidor>:4010/mcp --header "Authorization: Bearer <senha>"

Algumas coisas a saber:

  • HTTPS. Fora da rede local, coloque um proxy com HTTPS na frente (Caddy, nginx, Traefik) e defina TUESDAY_TRUST_PROXY=1, para o limite de tentativas de senha enxergar o IP real.

  • Pastas de código. Git e TODOs leem pastas do servidor. Monte as pastas no contêiner (veja o comentário em compose.yaml) e vincule os projetos a elas.

  • Backup. docker compose exec postgres pg_dump -U tuesday tuesday > tuesday.sql

  • Atualizar. git pull && docker compose up -d --build — as migrações do banco rodam sozinhas.

  • Sem senha. O servidor se recusa a abrir para a rede sem TUESDAY_PASSWORD. Se um proxy na frente já controla o acesso, use TUESDAY_ALLOW_NO_PASSWORD=1.

Sem Docker, com um PostgreSQL seu: defina as variáveis num .env na pasta do tuesday e rode pelo código.

TUESDAY_DATABASE_URL=postgres://tuesday:senha@localhost:5432/tuesday
TUESDAY_PASSWORD=uma-senha-forte
HOST=0.0.0.0
npm install && npm run build && npm start

Conectar o Claude

No computador, o jeito mais simples é o botão: Claude → Configurar agora. Ele registra o MCP no Claude Code (vale para todas as pastas), inclui o tuesday no Claude Desktop e instala os hooks — preservando o que você já tem e guardando backup dos arquivos.

Pelo terminal, a partir do código:

npm run setup                          # MCP no Claude Code
node bin/tuesday.mjs setup --desktop   # também no Claude Desktop
node bin/tuesday.mjs setup --hooks     # hooks do Claude Code (--remove desfaz)

O MCP roda por stdio e abre o mesmo banco: o tuesday não precisa estar aberto para o Claude trabalhar — se estiver, a tela atualiza sozinha.

Um projeto por pasta

Vincule cada projeto à pasta do código — nas configurações do projeto, na barra lateral, ou pelo terminal, dentro da pasta:

tuesday init "Meu App" --prefix APP

O Claude Code aberto nessa pasta (ou numa subpasta) passa a trabalhar naquele projeto: "crie uma tarefa X" cai no quadro certo. Numa pasta sem projeto, o Claude pode criar um ("crie um projeto no tuesday para esta pasta").

Exemplos do que pedir

  • "O que eu tenho pra hoje?"

  • "Quais tarefas estão bloqueadas?"

  • "Crie 5 tarefas para o lançamento no grupo Sprint atual, todas com prioridade Alta"

  • "Quebre o APP-007 em subitens e vá marcando conforme implementa"

  • "Poste no APP-004 um resumo do que mudou hoje"

  • "Importe os FIXME do código para o Backlog"

Ferramentas

Ferramenta

O que faz

list_projects · use_project

Projetos, quadros e pastas; escolhe o projeto da sessão

create_project · update_project

Cria projeto (com o primeiro quadro) e vincula a pasta

list_boards · get_board

Quadros, colunas, etiquetas, grupos e itens

find_items

Busca por texto e filtros de coluna, num projeto, num quadro ou em todos

get_my_work

O que está com você (ou com outra pessoa), separado pelo prazo

get_item · get_activity

Valores, subitens, atualizações, commits e histórico

create_items · update_items

Cria e altera até 100 itens de uma vez, com valores e subitens

delete_items · restore_items

Exclui (reversível por 30 dias) e restaura

add_update

Posta uma atualização em Markdown

add_subitems · update_subitems

Quebra o item em passos; marca, renomeia e remove

sync_git

Lê agora os commits da pasta (normalmente é automático)

find_code_todos · import_code_todos

TODO/FIXME do código e importação como itens

create_group · update_group

Grupos

create_board · update_board

Quadros

create_column · update_column

Colunas, etiquetas e a numeração do ID

list_people · add_person

Pessoas

Os valores usam o título da coluna em formato amigável: nome da etiqueta, nome da pessoa, datas AAAA-MM-DD (ou hoje, amanhã, +3d). Itens aceitam o id ou a referência (APP-012). Excluir projetos, quadros, grupos e colunas só pela interface.

Recursos em detalhe

Referências dos itens

A coluna ID do item gera referências como APP-001. No menu da coluna, Prefixo e numeração troca o prefixo, os dígitos e o próximo número — útil para continuar do TM-37 de outra ferramenta. O número de um item muda no lápis da própria célula; números repetidos são recusados. Ao importar tarefas pelo Claude, ele mantém as referências antigas (number em create_items).

Commits ligados aos itens

Com a pasta vinculada, o tuesday lê o histórico Git dela — a cada 10 s com o app aberto, e o MCP antes de responder.

  • Um commit que cita APP-012 aparece na aba Commits do item, com link para o GitHub, GitLab ou Bitbucket.

  • fixes APP-012 — ou closes, resolves, corrige, fecha, concluído — move o item para concluído. Listas valem: fixes APP-1, APP-2.

  • Só commits feitos depois de vincular a pasta concluem itens; o histórico antigo é apenas ligado, e um item reaberto não é fechado de novo pelo mesmo commit.

Subitens

Na aba Subitens, Enter adiciona um passo, e colar uma lista (- passo, 1. passo, [x] passo) cria vários. Os passos são marcados, renomeados, reordenados arrastando e excluídos com desfazer; cada um mostra quem marcou.

TODOs do código

Em Novo item ▾ → Importar TODOs do código, o tuesday lista as marcações da pasta do projeto, arquivo a arquivo. Cada uma escolhida vira um item com a coluna Código (pagamento.ts:42, que abre no VS Code na linha) e uma atualização com o trecho do código; FIXME vira Bug e HACK, Débito técnico.

Só contam marcações logo depois de quem abre o comentário (//, #, /*, *, --, <!--): "TODOS os campos", máscaras como XXX.XXX.XXX-XX, Markdown e arquivos ignorados pelo Git ficam de fora. Importar de novo não duplica, a linha do link acompanha o código, e o que saiu do código aparece para você concluir. Para o Cursor ou o VS Code Insiders, defina TUESDAY_EDITOR.

Hooks do Claude Code

  • Ao abrir numa pasta de projeto, o Claude recebe o item da branch atual (ex.: fix/APP-07-…) com os subitens, e o que está bloqueado, em andamento, atrasado e na fila.

  • Ao terminar, se houve commits citando itens, alterações na branch de um item ou subitens marcados, e ele ainda não registrou nada, o Claude posta a atualização e ajusta o status. Um lembrete por commit ou item, sem loops; fora das pastas de projeto nada acontece.

tuesday brief mostra o resumo que o Claude recebe na pasta atual.

Terminal

Comando

O que faz

tuesday

Inicia o servidor

tuesday init [nome]

Vincula a pasta atual a um projeto; --prefix TM --digits 2 --start 38 define as referências

tuesday setup [--desktop] [--hooks]

Configura o MCP no Claude Code, no Claude Desktop e os hooks

tuesday status

Banco, projetos, pastas e o que está configurado

tuesday brief

O resumo que o Claude recebe nesta pasta

tuesday note <ref> [--status X] "texto"

Posta uma atualização e/ou muda o status

tuesday steps <ref> [--add "passo" …]

Lista ou adiciona subitens

tuesday check <ref> <nº ou texto>… [--undo]

Marca subitens como feitos

tuesday todos [--import] [--tag FIXME]

Lista ou importa os TODOs do código desta pasta

tuesday git sync

Liga agora os commits desta pasta aos itens

tuesday mcp

Servidor MCP via stdio

Pelo código, sem npm link: node bin/tuesday.mjs <comando>.

Seus dados

  • No computador, tudo fica nele. Um arquivo SQLite, sem conta, sem nuvem e sem telemetria. O servidor local só escuta em 127.0.0.1 e recusa pedidos de outras origens.

  • No servidor, com senha. Sem TUESDAY_PASSWORD, o tuesday não abre para a rede. Tentativas erradas demais bloqueiam por alguns minutos.

  • O Claude só mexe no que você pede, e tudo o que ele faz fica no registro de atividades, marcado como Claude.

  • Git e TODOs só leem. O tuesday lê o histórico e os arquivos das pastas vinculadas; não escreve nelas.

  • Configurar o Claude altera ~/.claude.json, ~/.claude/settings.json e o arquivo do Claude Desktop, sempre preservando o que existe e com backup (.tuesday-backup).

Detalhes, e como reportar uma falha, em SECURITY.md.

Configuração

Variável

Padrão

Para quê

TUESDAY_DATABASE_URL

—

PostgreSQL (postgres://…). Sem ela, SQLite

TUESDAY_PASSWORD

—

Senha de acesso — obrigatória fora de 127.0.0.1

HOST

127.0.0.1

Interface de rede; 0.0.0.0 publica na rede

TUESDAY_PORT

4010

Porta

TUESDAY_DATA_DIR

./data

Pasta do SQLite e do estado dos hooks

TUESDAY_DB

<dados>/tuesday.db

Caminho do arquivo SQLite

TUESDAY_TRUST_PROXY

—

1 atrás de um proxy (nginx, Caddy, Traefik)

TUESDAY_ALLOW_NO_PASSWORD

—

1 para abrir na rede sem senha (quando um proxy já controla o acesso)

TUESDAY_EDITOR

vscode

Editor dos links de código: vscode, vscode-insiders, cursor ou windsurf

TUESDAY_PROJECT

—

Fixa o projeto do MCP (nome ou id), ignorando a pasta

TUESDAY_NO_SEED

—

1 para não criar o projeto de exemplo

Rodando pelo código, as variáveis podem ficar num .env na pasta do tuesday.

Desenvolvimento

npm install
npm run dev              # API em http://localhost:4010 e interface em http://localhost:5173
npm run demo             # o mesmo, com os dados fictícios dos prints (data/demo/)
npm test                 # testes de fumaça do MCP, dos hooks e da CLI (SQLite)
npm run db:up            # PostgreSQL de desenvolvimento no Docker (porta 55432)
npm run test:postgres    # os mesmos testes no PostgreSQL, mais gravações simultâneas
npm run typecheck
npm run format

O app desktop é o mesmo servidor e a mesma interface dentro de uma janela do Electron:

npm run desktop:testar       # monta em release/win-unpacked, sem instalar
npm run desktop:instalador   # gera release/tuesday-Setup-<versão>.exe
npm run prints               # refaz os prints do README a partir da demonstração

Como funciona

Um código, dois bancos. Todo o servidor usa uma API síncrona de banco — a do better-sqlite3. No PostgreSQL, o driver roda cada consulta num worker e a thread principal espera a resposta (Atomics.wait), então nenhuma regra de negócio precisou virar assíncrona. O SQL é escrito para os dois (RETURNING id, ON CONFLICT), e as migrações existem nas duas versões — o servidor recusa subir se uma faltar.

Vários processos, um banco. O servidor web, o MCP via stdio de cada sessão do Claude e os hooks gravam no mesmo banco. No SQLite, o modo WAL e as transações IMMEDIATE serializam as escritas; no PostgreSQL, um advisory lock por transação faz o mesmo papel — é o que impede dois processos de darem o mesmo número a itens diferentes.

Tempo real. A interface recebe as mudanças por Server-Sent Events. Mudanças de outros processos chegam pelo data_version do SQLite ou por LISTEN/NOTIFY no PostgreSQL.

Sem hooks nos repositórios. O tuesday lê git log das pastas vinculadas e procura as referências dos prefixos conhecidos. Um commit só conclui um item se foi feito depois do vínculo — importar um histórico antigo não fecha nada.

A identidade de um TODO não é a linha. É o arquivo, a marcação e o texto. Por isso importar de novo não duplica, e quando o código acima muda, o tuesday só corrige o número da linha no link.

O app desktop dispensa o Node. O Claude inicia o MCP com o próprio tuesday.exe em modo Node (ELECTRON_RUN_AS_NODE), e os hooks passam por um .cmd ao lado do executável.

Estrutura

bin/                 CLI, MCP via stdio e hooks (pelo código)
server/
  db/                driver (SQLite e PostgreSQL), migrações, schema do PostgreSQL e exemplo
  services/          regras de negócio — usadas pela API, pelo MCP, pela CLI e pelos hooks
  api/routes.ts      API REST
  mcp/               ferramentas MCP, detecção do projeto, stdio e HTTP
  hooks.ts           hooks do Claude Code
  auth.ts            senha no modo servidor
  index.ts           servidor HTTP e tempo real (SSE)
shared/              tipos e regras usadas no cliente e no servidor
src/                 interface React
electron/            app desktop: processo principal, montagem, ícone e wrappers .cmd
scripts/             testes de fumaça, demonstração e prints
compose.yaml         tuesday + PostgreSQL para servidor
Dockerfile           imagem do servidor

Stack: React 19, Vite, TypeScript, Zustand, dnd-kit, Floating UI, Express 5, better-sqlite3, node-postgres, Electron e o SDK oficial do MCP.

Publicando uma versão

npm version patch        # 1.0.0 → 1.0.1: cria o commit e a tag v1.0.1
git push --follow-tags

A tag dispara o workflow Release: roda os testes, gera o instalador do Windows e cria um rascunho de release, e publica a imagem ghcr.io/matheusbvieira/tuesday. Instale o rascunho, confira, e publique — só então os apps instalados enxergam a versão nova.

Aviso

O tuesday é um projeto independente, sem vínculo com a monday.com Ltd. "monday.com" é marca registrada de seus respectivos donos.

Licença

MIT.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers