85 lines
3.4 KiB
Markdown
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 `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 `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`.
|