core/README.md
2025-12-11 19:36:21 -03:00

85 lines
3.4 KiB
Markdown

# 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`.