# 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 `hello-world`, `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: ```bash 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 `hello-world`, `sync-github` e `check-cloudflare-status`. ## Rodando os ambientes 1) **Appwrite local (opcional)** ```bash 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. 2) **Landing (Fresh + Deno)** ```bash npm run dev:landing # ou: cd landing && deno task start ``` Roda em `http://localhost:8000`. O Deno carrega variáveis do `.env` automaticamente. 3) **Dashboard (React + Vite)** ```bash cd dashboard npm install npm run dev ``` Disponível em `http://localhost:5173`. O Vite lê apenas variáveis prefixadas com `VITE_`. 4) **Landing + Dashboard em paralelo** ```bash 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`.