No description
Find a file
Tiago Yamamoto 9ebf84583e
Merge pull request #8 from rede5/codex/verificar-erro-no-deploy-da-landing
Fix Deno deploy dependency resolution
2025-12-11 19:16:20 -03:00
appwrite-functions Add Appwrite proxy functions and security rules 2025-12-11 18:06:11 -03:00
dashboard Implement dashboard modules and update setup docs 2025-12-11 19:03:48 -03:00
landing Fix Deno deploy dependency resolution 2025-12-11 19:12:59 -03:00
.env.example Implement dashboard modules and update setup docs 2025-12-11 19:03:48 -03:00
.gitignore Add Appwrite proxy functions and security rules 2025-12-11 18:06:11 -03:00
appwrite-databases-schema.md Add Appwrite database collection definitions 2025-12-11 18:02:53 -03:00
appwrite.json Add monorepo scaffold and Appwrite cloud configuration 2025-12-11 18:01:19 -03:00
package-lock.json Add dashboard auth layout and integrations 2025-12-11 18:34:38 -03:00
package.json Add dashboard auth layout and integrations 2025-12-11 18:34:38 -03:00
README.md Implement dashboard modules and update setup docs 2025-12-11 19:03:48 -03:00
SECURITY.md Add Appwrite proxy functions and security rules 2025-12-11 18:06:11 -03:00

Core Platform Monorepo

Ambiente monorepo com três camadas principais: Landing (Fresh + Deno), Dashboard (React + Vite) e Appwrite Cloud como backend. Este guia prioriza a configuração do Appwrite Cloud antes de rodar qualquer código local.

Passo a passo (Appwrite Cloud)

  1. Acesse https://cloud.appwrite.io e crie/abra um projeto.
  2. No menu API Keys, gere uma chave com permissão de Admin para criar bancos, coleções e funções.
  3. Registre os valores a seguir para preencher o .env:
    • API Endpoint (ex.: https://cloud.appwrite.io/v1)
    • Project ID
    • Database ID (criado no passo seguinte)
    • Opcional: endpoints/keys das Functions se você usar domínios dedicados.
  4. Crie um Database chamado DevOpsPlatform e anote seu ID.
  5. Dentro do banco, crie as coleções (IDs sugeridos entre parênteses):
    • servers (servers):
      • name (string)
      • ip (string)
      • status (enum: online, offline)
      • region (string)
    • github_repos (github_repos):
      • repo_name (string)
      • url (url)
      • last_commit (string)
      • status (string)
    • audit_logs (audit_logs):
      • event (string)
      • user_id (string)
      • timestamp (datetime)
    • cloud_accounts (cloud_accounts) para integrações:
      • provider (string)
      • apiKey (string)
      • label (string)
  6. Ative o provedor Email/Password em Authentication e crie um usuário de teste.
  7. Implante as Functions sync-github e check-cloudflare-status (fontes em appwrite-functions/).

Variáveis de ambiente

Copie o arquivo de exemplo e preencha com os IDs anotados:

cp .env.example .env

Campos principais:

  • VITE_APPWRITE_ENDPOINT, VITE_APPWRITE_PROJECT_ID, VITE_APPWRITE_DATABASE_ID
  • VITE_APPWRITE_COLLECTION_SERVERS_ID, VITE_APPWRITE_COLLECTION_GITHUB_REPOS_ID, VITE_APPWRITE_COLLECTION_AUDIT_LOGS_ID, VITE_APPWRITE_COLLECTION_CLOUDFLARE_ACCOUNTS_ID
  • Para scripts server-side, use também APPWRITE_ENDPOINT, APPWRITE_PROJECT_ID, APPWRITE_API_KEY.

Estrutura de pastas

  • landing/: app Fresh (Deno) para a landing page.
  • dashboard/: painel React + Vite com integrações Appwrite (auth, Functions, Database, Realtime).
  • appwrite-functions/: funções sync-github e check-cloudflare-status.

Rodando os ambientes

  1. Appwrite local (opcional)
docker run -it --rm \
  -p 80:80 -p 443:443 \
  -v "$(pwd)/appwrite:/var/lib/appwrite" \
  appwrite/appwrite:latest install

Preencha o .env com os IDs gerados localmente e replique o schema acima no console.

  1. Landing (Fresh + Deno)
npm run dev:landing
# ou: cd landing && deno task start

Roda em http://localhost:8000. O Deno carrega variáveis do .env automaticamente.

  1. Dashboard (React + Vite)
cd dashboard
npm install
npm run dev

Disponível em http://localhost:5173. O Vite lê apenas variáveis prefixadas com VITE_.

  1. Landing + Dashboard em paralelo
npm run dev:web

Usa npm-run-all para iniciar ambos os frontends.

Notas rápidas

  • Rotas do dashboard são protegidas pelo Appwrite (Email/Password) e usam account.createEmailPasswordSession.
  • O widget de overview consulta as coleções de repositórios, servidores e audit logs para mostrar métricas reais.
  • O terminal inferior assina o canal Realtime da coleção audit_logs usando o ID configurado no .env.