Vectora — Monorepo
Monorepo da Vectora. Cada produto vive em sua própria pasta, com toolchain e lockfile independentes. O que conecta tudo é o GitHub Actions (um workflow por projeto, gated por path) e o pre-commit compartilhado na raiz.
Estrutura
| Pasta | Projeto | Stack | Deploy |
|---|---|---|---|
vectora/ | App Vectora (assistente de IA self-hosted) | Python (uv) + Vite + Electron | Docker (GHCR) + instaladores nativos |
company/ | Site institucional | TanStack Start + Vite (pnpm) | Vercel → vectora.company |
docs/ | Documentação | Docusaurus (pnpm) | Vercel → docs.vectora.company |
services/ | Gateway (OAuth/webhooks pro desktop, ex-relay) + updates (distribuição de releases) — era relay/ + update-server/, unificados | Hono + Cloudflare Workers (pnpm) | Cloudflare (wrangler) |
documents/ | Notas de design/planejamento (markdown interno) | — | não publicado |
O app em si (backend Python, frontend Vite, casca Electron) fica todo dentro de
vectora/— veja vectora/README.md para detalhes de arquitetura, build e CLI.
CI/CD (.github/workflows/)
Um workflow por projeto, gated por path (on.push/pull_request.paths): uma
mudança só no vectora/ não dispara o build/deploy de company, docs etc.
| Workflow | Dispara em | Faz |
|---|---|---|
vectora.yml | vectora/**, tags v* | lint • security • build • testes (unit/stress/integration/e2e) • Docker push (GHCR) • release nativo (Nuitka + Electron) |
company.yml | company/** | lint/typecheck/test/build • deploy Vercel (master) |
docs.yml | docs/** | typecheck/build • deploy Vercel (master) |
services.yml | services/** | install/typecheck/test • deploy Cloudflare (master) |
codeql.yml | master + agenda | análise CodeQL (Python + Actions) |
triage.yml | issues | label needs-triage + boas-vindas |
Secrets esperados
| Secret | Usado por |
|---|---|
GOOGLE_API_KEY, COHERE_API_KEY, TAVILY_API_KEY | testes do vectora |
GHCR_TOKEN | push da imagem Docker (fallback: GITHUB_TOKEN) |
WIN_CERTIFICATE_BASE64, WIN_CERTIFICATE_PASSWORD, APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID, VECTORA_RELEASES_TOKEN | assinatura/publicação dos instaladores nativos |
VERCEL_TOKEN, VERCEL_ORG_ID | deploy Vercel (company + docs) |
VERCEL_PROJECT_ID_COMPANY, VERCEL_PROJECT_ID_DOCS | projeto Vercel de cada site |
CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID | deploy do services |
Desenvolvimento
Cada projeto é independente — entre na pasta e use o gerenciador dele:
# App Vectora (Python + Vite + Electron)
cd vectora && uv sync && uv run vectora start
# Site institucional
cd company && pnpm install && pnpm dev
# Docs
cd docs && pnpm install && pnpm dev
# Services (gateway + updates)
cd services && pnpm install && pnpm dev
Pre-commit (raiz)
O .pre-commit-config.yaml na raiz cobre todos os projetos (ruff/ty/bandit no
vectora/, prettier/oxlint/tsc no frontend, actionlint nos workflows):
pre-commit install
pre-commit run --all-files
Licença
Proprietária. Consulte LICENSE.