Skip to content

Arquitetura

Hatcher é construído como uma aplicação Electron moderna com uma arquitetura monorepo que prioriza escalabilidade, manutenibilidade e performance.

Arquitetura de Alto Nível

┌─────────────────────────────────────────────────────────────┐
│                    Hatcher Desktop App                      │
├─────────────────────────────────────────────────────────────┤
│  Main Process (Node.js)     │  Renderer Process (Vue.js)   │
│  ├── Window Management      │  ├── Visual-to-Code Bridge   │
│  ├── AI Engine Integration  │  ├── Code Editor             │
│  ├── File System Access     │  ├── Project Management      │
│  └── Git Operations         │  └── UI Components           │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                External AI Services                         │
│  ├── Claude API (Anthropic)                                │
│  ├── Gemini CLI (Google)                                   │
│  └── Future: GPT-4, CodeLlama                              │
└─────────────────────────────────────────────────────────────┘

Estrutura do Monorepo

dx-engine/
├── apps/                    # Aplicações principais
│   ├── electron/           # Processo principal Electron
│   ├── web/               # Processo renderer Vue.js
│   ├── preload/           # Scripts preload seguros
│   └── docs/              # Documentação VitePress

├── universal/             # Pacotes compartilhados
│   ├── vite-plugin/       # Plugins Vite personalizados
│   └── puppeteer-google-translate/  # Serviço de tradução

├── scripts/               # Scripts de automação
│   ├── translation/       # Sistema de tradução TypeScript
│   ├── setup-env.ts      # Configuração de ambiente
│   ├── version-bump.ts   # Gestão de versões
│   └── generate-icons.ts # Geração de ícones

└── Config Files           # Configuração do projeto
    ├── package.json       # Configuração do workspace
    ├── turbo.json         # Configuração Turborepo
    └── tsconfig.json      # Configuração TypeScript

Processos Electron

Main Process (apps/electron/)

O processo principal gerencia:

  • Gestão de Janelas: Criar e controlar janelas da aplicação
  • Integração IA: Comunicação com serviços IA externos
  • Acesso ao Sistema: Operações de arquivo e sistema
  • Segurança: Validação e sanitização de entrada

Renderer Process (apps/web/)

O processo renderer contém a UI Vue.js:

  • Ponte Visual-para-Código: Funcionalidade central de seleção visual
  • Editor de Código: Editor integrado com destaque de sintaxe
  • Gestão de Projetos: Explorador de arquivos e gestão
  • Componentes UI: Interface de usuário reativa

Stack Tecnológico

Frontend (Renderer)

  • Vue.js 3: Framework reativo com Composition API
  • TypeScript: Desenvolvimento com segurança de tipos
  • Vite: Ferramentas de build rápidas
  • Pinia: Gestão de estado moderna
  • Vue Router: Roteamento do lado do cliente

Backend (Main Process)

  • Electron: Framework de aplicação desktop
  • Node.js: Runtime JavaScript
  • TypeScript: Desenvolvimento com segurança de tipos
  • IPC: Comunicação inter-processos

Segurança

Isolamento de Contexto

  • contextIsolation: true: Isolar contextos do renderer
  • nodeIntegration: false: Desabilitar Node.js no renderer
  • Scripts Preload: Expor apenas APIs controladas

Implantação

Processo de Build

bash
# Build completo
pnpm build

# Empacotamento para diferentes plataformas
pnpm pack:prod  # Todas as plataformas
pnpm pack:mac   # Apenas macOS
pnpm pack:win   # Apenas Windows
pnpm pack:linux # Apenas Linux

Released under the MIT License. Built with ❤️ by Chriss Mejía and the Hatcher community.