Voltar ao portfólio

Produto

Working On It

O time, o cliente e o trabalho na mesma conversa.

Gestão de trabalho para times que entregam para um cliente. Tarefas de desenvolvimento, chamados de suporte, entregáveis e conversas compartilham um projeto, para que quem faz o trabalho e quem acompanha tenham o mesmo contexto.

Requer conta · demo disponível

Da tarefa à entrega

O projeto reúne tarefas, entregáveis e conversas. Os chamados de suporte ficam junto do desenvolvimento sem virar o mesmo tipo de tarefa; o cliente pode acompanhar a conversa pelo app.

Agentes de IA podem ler e atualizar o trabalho via MCP. Cada chave tem suas próprias permissões e age dentro do acesso do dono, vinculando as atualizações a um autor identificável.

Construção e manutenção

Time
Sozinho, do design ao deploy
Período
2026-05 – 2026-09
Status
No ar em woi.mattediworks.com
Stack
TypeScript, React, Express, TypeORM, PostgreSQL

Permissões e vínculo de contas

  • Acesso MCP vinculado ao usuário

    O acesso via MCP usa API keys por usuário, mostradas uma vez e guardadas como hash SHA-256. As requisições são verificadas conforme as permissões da chave e o acesso do dono; revogar uma chave bloqueia novas requisições com ela. O custo: gerenciar chaves separadas para agentes e ferramentas em vez de um token compartilhado de integração.

  • Contas ligadas por issuer e subject, nunca por e-mail

    A chave permanente de identidade é o par (issuer, sub) do MW Identity. Usuários antigos são migrados por um admin depois de confirmar a posse, em vez de vinculados automaticamente por um e-mail igual. Isso acrescenta uma etapa manual e evita tratar o controle de um endereço de e-mail como prova de posse de uma conta existente.

  • Excluir uma conta é uma transação só

    Quando alguém sai pelo MW Identity, chega um evento assinado, verificado contra o JWKS e gravado antes de responder 202. Depois, numa única transação, a conta é desativada, as referências em auditoria e threads são anonimizadas e os dados são apagados. Sessões abertas caem porque o usuário deixa de existir.

Por trás do espaço de trabalho

Browsers e agentes de IA chegam num router nginx, que manda as páginas para um app React com SSR e /api para a API Express. A API guarda os dados no PostgreSQL, faz login via MW Identity e manda e-mail pelo MW Mail.Projeto Compose no StackportHTTPS · WS/api/mcppáginas/apienvioOIDCBrowserAgente de IAcliente MCProuternginxssrReact · SSRapiExpress · TypeORMPostgreSQLMW Mailgateway de e-mailMW IdentityOIDC
  • Front-end em React + Vite e API em Express com TypeScript, TypeORM sobre PostgreSQL.
  • WebSockets empurram as atualizações para quem está com o projeto aberto.
  • MCP server na mesma API (/api/mcp), com resposta em JSON ou SSE.
  • Login via MW Identity (OIDC); e-mail pelo gateway MW Mail.
  • Deploy no Stackport atrás do proxy: sem porta no host, /health checado a cada 30 s.

Escopo atual

  • Uma instância, um banco: sem escala horizontal ainda.
  • O login antigo por senha ainda existe atrás de uma flag, só para migração.
  • Repositório privado.