Qyrex

Central de trabalho desktop para desenvolvedores e freelancers. Reúne projetos, tarefas, terminal, Git, clientes, agenda e IA em um app só, com todos os dados no próprio computador.

Tipo
App desktop · Windows
Contexto
Projeto pessoal · Open source
Stack
Electron · React · TypeScript
Status
v2.0.0 · licença MIT
Tela Início do Qyrex com tarefas em foco, agenda do dia, projetos recentes e atividade

01Contexto e problema

O trabalho de quem desenvolve e atende clientes fica espalhado entre muitas ferramentas: VS Code, terminal, Explorer, GitHub, WhatsApp, agenda, notas e um chat de IA em outra janela. Trocar de contexto o tempo todo custa atenção, e informações importantes (o que está pendente em cada projeto, qual cliente precisa de manutenção) acabam dispersas.

02Objetivo

Criar um único aplicativo que orquestre as ferramentas que já são usadas, em vez de tentar substituí-las, com três requisitos:

  • Tudo local: banco no próprio PC, sem conta para criar.
  • Seguro ao mexer em arquivos, rodar comandos e guardar tokens.
  • IA útil no fluxo de trabalho, mas sem executar nada sem permissão.

03Solução desenvolvida

Um app desktop em Electron com módulos integrados: Início personalizável, Projetos (com status do Git, VS Code e terminal a um clique), Git visual, Terminal com abas, Automações, Tarefas, Agenda, Clientes, Marketing e um chat com Claude, OpenAI e Gemini que sugere comandos executáveis mediante confirmação.

A demonstração web incluída neste portfólio usa a interface real do app com APIs simuladas e dados fictícios, gerada por uma configuração de build própria (vite.demo.config.ts).

04Minha contribuição

Projeto pessoal que conduzi do início à publicação: definição das funcionalidades, arquitetura entre processos, interface, integrações, testes, instalador com atualização automática, site do produto e a arte em pixel (o mascote é desenhado em código, em site/pixel/pixel.mjs). Usei ferramentas de IA (Claude Code e Codex) como apoio na implementação e na revisão de código.

05Tecnologias e arquitetura

O app segue o modelo de processos do Electron com o renderer isolado. A interface nunca acessa Node.js diretamente: toda operação passa por uma API única exposta pelo preload.

  • Electron
  • React 18
  • TypeScript strict
  • Vite
  • Tailwind CSS
  • Zustand
  • better-sqlite3
  • zod
  • xterm.js
  • node-pty
  • electron-updater
  • Vitest

06Principais funcionalidades

  • Projetos e Git visual: tecnologias detectadas pelo package.json, diff por arquivo, commit apenas do que for marcado, troca de branch bloqueada com alterações pendentes e push nunca com --force.
  • Terminal: xterm.js + node-pty com abas ou grade, abrindo PowerShell, CMD, Claude Code ou Codex na pasta do projeto.
  • Automações: sequências de testes, lint e build com confirmação e indicação de risco de cada comando.
  • IA: chat com vários modelos, anexos explícitos, prompts reutilizáveis e o “AI Council”, que consulta vários modelos e gera uma síntese.
  • Backup e sincronização: backup local verificado e sincronização entre PCs por uma pasta na nuvem, cifrada com a senha do usuário.
  • Gestão: tarefas em lista ou kanban, agenda com Google Agenda, clientes com manutenção mensal e quadro de marketing.

07Desafios técnicos e soluções

Deixar a IA sugerir comandos sem abrir uma brecha

Solução: a IA nunca executa nada sozinha. Cada comando sugerido passa por um diálogo com o nível de risco; os perigosos não podem ser marcados como “permitir sempre”. Os processos rodam com spawn, argumentos em array e shell: false, então a entrada do usuário nunca vira parte de um comando.

Acesso a arquivos sem expor o disco inteiro

Solução: o app só lê ou altera arquivos em pastas autorizadas no onboarding. Os caminhos são resolvidos tratando .., symlinks e junctions, e a raiz do disco, pastas do sistema e a home inteira não podem ser autorizadas.

Guardar tokens de várias integrações

Solução: segredos ficam apenas no cofre do Windows (safeStorage/DPAPI), nunca no banco, na interface ou nos logs, que têm redação automática. Backups e sincronização não levam chaves, e a cópia na nuvem é cifrada com AES-256-GCM.

Atualizar o app com segurança

Solução: atualizações vêm de uma origem fixa por HTTPS, com conferência de SHA-512 e sem downgrade, e um backup é feito antes de cada atualização.

Testar um app Electron de ponta a ponta

Solução: testes Vitest rodando dentro do Electron (segurança, banco, IPC, arquivos e integrações), um E2E que percorre a interface com APIs simuladas e um npm run check que junta typecheck, lint sem warnings e testes.

08Capturas e demonstração

Capturas da interface real, geradas a partir da demo com dados fictícios. A demo também pode ser aberta acima.

09Aprendizados e melhorias futuras

O Qyrex exigiu tratar segurança como requisito desde o início: isolamento de processos, validação em cada fronteira IPC e o princípio de que nenhuma ação sensível acontece sem confirmação. Também envolveu o ciclo completo de um produto desktop: instalador, migração de dados entre versões (o app se chamava QrzSpace) e atualização automática.

Próximos passos do roadmap

  • Integração com a API oficial do WhatsApp Cloud para lembretes de cobrança.
  • Criar e editar eventos do Google Agenda pelo app.
  • Automações entre módulos, como criar uma tarefa ao publicar um conteúdo.
  • Assinatura digital do instalador, que hoje pode gerar aviso do SmartScreen.