- Cria .env com comentários detalhados (13 variáveis) - Atualiza READMEs com guia completo de instalação - Documenta setup Appwrite Cloud e schemas de collections - Adiciona troubleshooting e guias de deploy - Total: ~1.240 linhas de documentação em português
263 lines
6.4 KiB
Markdown
263 lines
6.4 KiB
Markdown
# Dashboard - Core Platform
|
|
|
|
> Painel administrativo DevOps desenvolvido com **React + TypeScript + Vite** integrado ao **Appwrite Cloud** para autenticação, database e realtime.
|
|
|
|
## 🎯 Visão Geral
|
|
|
|
Dashboard para gerenciamento de:
|
|
- **Servidores**: Monitoramento de status, IP e região
|
|
- **Repositórios GitHub**: Acompanhamento de commits e status
|
|
- **Audit Logs**: Logs de eventos em tempo real
|
|
- **Contas Cloudflare**: Gerenciamento de integrações
|
|
|
|
## 🛠 Stack Tecnológica
|
|
|
|
- **Framework**: [React 18](https://react.dev)
|
|
- **Build Tool**: [Vite 5](https://vitejs.dev)
|
|
- **Linguagem**: TypeScript 5
|
|
- **Roteamento**: React Router DOM 7
|
|
- **Estilização**: Tailwind CSS 3
|
|
- **Backend**: Appwrite Cloud SDK
|
|
- **Ícones**: Lucide React
|
|
- **Linting**: ESLint 8
|
|
|
|
## 📦 Instalação
|
|
|
|
```bash
|
|
# Na raiz do projeto
|
|
cd dashboard
|
|
|
|
# Instalar dependências
|
|
npm install
|
|
```
|
|
|
|
## ⚙️ Configuração
|
|
|
|
### Variáveis de Ambiente
|
|
|
|
O dashboard lê variáveis do arquivo `.env` na **raíz do monorepo** (não nesta pasta).
|
|
|
|
Variáveis necessárias (todas com prefixo `VITE_`):
|
|
|
|
```env
|
|
VITE_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
|
|
VITE_APPWRITE_PROJECT_ID=seu_project_id
|
|
VITE_APPWRITE_DATABASE_ID=seu_database_id
|
|
VITE_APPWRITE_COLLECTION_SERVERS_ID=servers
|
|
VITE_APPWRITE_COLLECTION_GITHUB_REPOS_ID=github_repos
|
|
VITE_APPWRITE_COLLECTION_AUDIT_LOGS_ID=audit_logs
|
|
VITE_APPWRITE_COLLECTION_CLOUDFLARE_ACCOUNTS_ID=cloud_accounts
|
|
```
|
|
|
|
**⚠️ Importante**: O Vite só expõe variáveis com prefixo `VITE_` para o browser.
|
|
|
|
### Configuração do Appwrite
|
|
|
|
Veja o [README principal](../README.md#setup-appwrite-cloud) para instruções completas de setup do Appwrite Cloud.
|
|
|
|
## 🏃 Scripts
|
|
|
|
| Comando | Descrição |
|
|
|---------|-----------|
|
|
| `npm run dev` | Inicia dev server (porta 5173) |
|
|
| `npm run build` | Gera build de produção em `dist/` |
|
|
| `npm run preview` | Testa build localmente |
|
|
| `npm run lint` | Executa ESLint |
|
|
|
|
### Executar em Desenvolvimento
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Acesse: http://localhost:5173
|
|
|
|
**Login**: Use credenciais criadas no Appwrite Auth (ex: `admin@test.com`)
|
|
|
|
## 📁 Estrutura de Pastas
|
|
|
|
```
|
|
dashboard/
|
|
├── public/ # Arquivos estáticos
|
|
│ └── vite.svg
|
|
├── src/
|
|
│ ├── components/ # Componentes reutilizáveis
|
|
│ │ ├── Header.tsx
|
|
│ │ ├── Overview.tsx
|
|
│ │ ├── ServerList.tsx
|
|
│ │ ├── GitHubRepos.tsx
|
|
│ │ ├── Terminal.tsx
|
|
│ │ └── ...
|
|
│ ├── pages/ # Páginas/rotas
|
|
│ │ ├── Login.tsx
|
|
│ │ ├── Dashboard.tsx
|
|
│ │ └── ...
|
|
│ ├── lib/ # Utilitários e SDK
|
|
│ │ └── appwrite.ts # Inicialização SDK Appwrite
|
|
│ ├── App.tsx # Componente raiz + rotas
|
|
│ ├── main.tsx # Entry point
|
|
│ └── index.css # Tailwind + estilos globais
|
|
├── index.html # Template HTML
|
|
├── vite.config.ts # Configuração Vite
|
|
├── tailwind.config.js # Configuração Tailwind
|
|
├── tsconfig.json # Configuração TypeScript
|
|
└── package.json # Dependências e scripts
|
|
```
|
|
|
|
## 🔑 Funcionalidades
|
|
|
|
### Autenticação
|
|
|
|
- Login com Email/Password via Appwrite Auth
|
|
- Session management com `account.createEmailPasswordSession`
|
|
- Logout com `account.deleteSession('current')`
|
|
- Proteção de rotas com verificação de sessão
|
|
|
|
### Database Queries
|
|
|
|
Consulta coleções Appwrite usando o SDK:
|
|
|
|
```typescript
|
|
import { databases } from './lib/appwrite';
|
|
|
|
// Listar servidores
|
|
const servers = await databases.listDocuments(
|
|
import.meta.env.VITE_APPWRITE_DATABASE_ID,
|
|
import.meta.env.VITE_APPWRITE_COLLECTION_SERVERS_ID
|
|
);
|
|
```
|
|
|
|
### Realtime Subscriptions
|
|
|
|
Terminal assina eventos da coleção `audit_logs`:
|
|
|
|
```typescript
|
|
import { client } from './lib/appwrite';
|
|
|
|
client.subscribe(
|
|
`databases.${databaseId}.collections.${auditLogsId}.documents`,
|
|
(response) => {
|
|
console.log('Novo log:', response.payload);
|
|
}
|
|
);
|
|
```
|
|
|
|
## 🎨 Componentes Principais
|
|
|
|
| Componente | Descrição |
|
|
|------------|-----------|
|
|
| `Header` | Barra superior com navegação e logout |
|
|
| `Overview` | Widgets com métricas de servidores, repos e logs |
|
|
| `ServerList` | Tabela de servidores com status online/offline |
|
|
| `GitHubRepos` | Lista de repositórios GitHub integrados |
|
|
| `Terminal` | Console com logs em tempo real (Realtime) |
|
|
|
|
## 🧪 Testes
|
|
|
|
### Linting
|
|
|
|
```bash
|
|
npm run lint
|
|
```
|
|
|
|
Configuração ESLint em `.eslintrc.cjs`:
|
|
- Parser: `@typescript-eslint/parser`
|
|
- Plugins: React Hooks, React Refresh
|
|
- Regras: React 18.2+ (sem import React necessário)
|
|
|
|
### Build de Produção
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Saída:
|
|
- `dist/index.html`
|
|
- `dist/assets/index-[hash].js`
|
|
- `dist/assets/index-[hash].css`
|
|
|
|
Otimizações:
|
|
- Tree-shaking
|
|
- Minificação
|
|
- Code splitting
|
|
- Hashing de assets
|
|
|
|
## 🚀 Deploy
|
|
|
|
### Vercel (Recomendado)
|
|
|
|
```bash
|
|
npm run build
|
|
# Ou conecte o repo no painel Vercel
|
|
```
|
|
|
|
**Configuração Vercel**:
|
|
- Build Command: `npm run build`
|
|
- Output Directory: `dist`
|
|
- Environment Variables: Adicione todas as `VITE_*`
|
|
|
|
### Netlify
|
|
|
|
```bash
|
|
npm run build
|
|
# Arraste a pasta dist/ no painel Netlify
|
|
```
|
|
|
|
**netlify.toml** (opcional):
|
|
```toml
|
|
[build]
|
|
command = "npm run build"
|
|
publish = "dist"
|
|
```
|
|
|
|
### Cloudflare Pages
|
|
|
|
```bash
|
|
npm run build
|
|
# Upload via Wrangler ou painel
|
|
```
|
|
|
|
**⚠️ Importante**: Configure as variáveis de ambiente `VITE_*` no painel do provider!
|
|
|
|
## 🔧 Troubleshooting
|
|
|
|
### "import.meta.env.VITE_APPWRITE_PROJECT_ID is undefined"
|
|
|
|
**Causa**: Arquivo `.env` não está na raiz do monorepo ou variável não tem prefixo `VITE_`
|
|
|
|
**Solução**:
|
|
```bash
|
|
# Verifique se o .env existe na raiz (não em dashboard/)
|
|
cat ../.env
|
|
|
|
# Certifique-se que as variáveis começam com VITE_
|
|
grep VITE_ ../.env
|
|
```
|
|
|
|
### Erro de CORS no Appwrite
|
|
|
|
**Solução**:
|
|
1. Appwrite Console → Settings → Platforms
|
|
2. Add Platform → **Web**
|
|
3. Hostname: `localhost` (dev) e seu domínio (produção)
|
|
|
|
### TypeScript errors no build
|
|
|
|
```bash
|
|
# Verificar erros
|
|
npx tsc --noEmit
|
|
|
|
# Atualizar tipos se necessário
|
|
npm install --save-dev @types/react@latest @types/react-dom@latest
|
|
```
|
|
|
|
## 📚 Recursos
|
|
|
|
- [Appwrite React SDK](https://appwrite.io/docs/sdks#client)
|
|
- [Vite Guide](https://vitejs.dev/guide/)
|
|
- [React Documentation](https://react.dev)
|
|
- [Tailwind CSS](https://tailwindcss.com/docs)
|
|
|
|
---
|
|
|
|
Para configuração completa e setup do Appwrite, veja o [README principal](../README.md).
|