docs: add initial README with project overview and setup instructions
Add comprehensive README file describing the Web Tail Pro project including: - Features and architecture overview - Project structure and prerequisites - Build and execution instructions - Development setup and available endpoints
This commit is contained in:
@@ -0,0 +1,100 @@
|
|||||||
|
# Web Tail Pro
|
||||||
|
|
||||||
|
Visualizador de logs em tempo real no navegador, com backend em Go e frontend em React. Permite acompanhar múltiplos arquivos simultaneamente, filtrar linhas, aplicar formatações (JSON e Apache), e mesclar logs por timestamp em um painel unificado. Autenticação básica (HTTP Basic Auth) opcional.
|
||||||
|
|
||||||
|
## Recursos
|
||||||
|
- Monitoramento em tempo real via SSE (`/logs`)
|
||||||
|
- Múltiplas abas, uma por arquivo de log, e painel "Mesclado"
|
||||||
|
- Filtro de texto simples nas abas
|
||||||
|
- Formatação de linhas para `generic`, `json` e `apache`
|
||||||
|
- Autenticação básica com usuário fixo `admin` e senha definida por flag
|
||||||
|
|
||||||
|
## Arquitetura
|
||||||
|
- **Backend (Go 1.21+)**: realiza `tail` dos arquivos e publica eventos via SSE. Serve os arquivos do frontend com `go:embed`.
|
||||||
|
- **Frontend (React + Vite + Ant Design)**: consome SSE, organiza abas e renderiza as linhas de log com formatação.
|
||||||
|
|
||||||
|
Estrutura do projeto:
|
||||||
|
|
||||||
|
```
|
||||||
|
backend/
|
||||||
|
main.go
|
||||||
|
go.mod
|
||||||
|
frontend/
|
||||||
|
src/
|
||||||
|
App.tsx
|
||||||
|
components/
|
||||||
|
hooks/
|
||||||
|
package.json
|
||||||
|
vite.config.ts
|
||||||
|
build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pré-requisitos
|
||||||
|
- Go 1.21+
|
||||||
|
- Node.js 18+ e npm
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Opção 1 (Unix/WSL/Git Bash):
|
||||||
|
|
||||||
|
```
|
||||||
|
bash build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Opção 2 (manual, multiplataforma):
|
||||||
|
|
||||||
|
```
|
||||||
|
cd frontend
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
cd ..
|
||||||
|
go build -o web-tail-pro ./backend/main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
## Execução
|
||||||
|
|
||||||
|
Exemplos de uso do binário gerado:
|
||||||
|
|
||||||
|
```
|
||||||
|
./web-tail-pro backend/logs/app.log backend/logs/access.log backend/logs/json.log
|
||||||
|
./web-tail-pro -port :9090 -password "s3nh4" backend/logs/*.log
|
||||||
|
./web-tail-pro -password "s3nh4" backend/logs/app.log
|
||||||
|
./web-tail-pro -port 1234 backend/logs/*.log
|
||||||
|
```
|
||||||
|
|
||||||
|
Após iniciar, acesse `http://localhost:8080` (ou a porta configurada).
|
||||||
|
|
||||||
|
### Flags disponíveis
|
||||||
|
- `-port` (padrão `:8080`): porta/endereço para o servidor HTTP. Aceita formatos como `:8080` ou `9090`.
|
||||||
|
- `-password` (padrão vazio): ao definir uma senha, ativa autenticação básica (usuário `admin`).
|
||||||
|
|
||||||
|
### Autenticação
|
||||||
|
- Usuário: `admin`
|
||||||
|
- Senha: valor definido em `-password`
|
||||||
|
- Sem `-password`, o acesso é liberado.
|
||||||
|
|
||||||
|
## Desenvolvimento
|
||||||
|
|
||||||
|
Executar backend em modo desenvolvimento:
|
||||||
|
|
||||||
|
```
|
||||||
|
go run ./backend/main.go backend/logs/*.log
|
||||||
|
```
|
||||||
|
|
||||||
|
Executar frontend com Vite (proxy para o backend):
|
||||||
|
|
||||||
|
```
|
||||||
|
cd frontend
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
- Frontend dev: `http://localhost:5173`
|
||||||
|
- Proxy configurado para `/api` e `/logs` direcionar para `http://localhost:8080` (ajuste a porta se necessário).
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
- `GET /api/files`: retorna a lista de arquivos de log que o backend está monitorando.
|
||||||
|
- `SSE /logs`: stream de eventos com linhas de log (`filename`, `line`, `timestamp`).
|
||||||
|
|
||||||
|
## Observações
|
||||||
|
- O buffer no frontend mantém aproximadamente as últimas 2000 linhas por conexão SSE.
|
||||||
|
- O painel "Mesclado" ordena por `timestamp` (quando disponível) para facilitar correlação entre arquivos.
|
||||||
Reference in New Issue
Block a user