Hookline é um cliente HTTP completo e moderno, similar ao Postman e Insomnia, mas com funcionalidades avançadas e interface intuitiva. Desenvolvido com React, TypeScript e armazenamento local.
- ✅ Suporte completo a métodos HTTP: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
- ✅ Headers personalizados com habilitação/desabilitação individual
- ✅ Parâmetros de query com habilitação/desabilitação
- ✅ Múltiplos tipos de body:
- JSON
- Form Data
- x-www-form-urlencoded
- Raw
- ✅ Autenticação completa:
- Basic Auth
- Bearer Token
- API Key (Header ou Query)
- OAuth 2.0
- ✅ Scripts pré e pós-request (JavaScript)
- ✅ Histórico de execuções com re-execução
- ✅ Duplicação de requests
- ✅ Edição em tempo real com auto-save
- ✅ Criação de coleções e subcoleções
- ✅ Organização hierárquica de requests
- ✅ Busca de requests e coleções
- ✅ Visualização em árvore expansível
- ✅ Exportar/Importar coleções em JSON
- ✅ Gerenciamento de requests não organizados
- ✅ Variáveis globais
- ✅ Variáveis de ambiente
- ✅ Variáveis de coleção
- ✅ Substituição automática de variáveis no formato
{{variable}} - ✅ Múltiplos ambientes com ativação/desativação
- ✅ Gerenciamento visual de variáveis
- ✅ Visualização formatada de respostas
- ✅ Syntax highlighting para JSON e XML
- ✅ Suporte a múltiplos formatos: JSON, Text, XML, HTML
- ✅ Visualização de headers de resposta
- ✅ Informações de status, tempo e tamanho
- ✅ Cópia e download de respostas
- ✅ Badges coloridos por status HTTP
- ✅ Histórico completo de todas as execuções
- ✅ Filtro por request específico
- ✅ Re-execução de requests do histórico
- ✅ Informações detalhadas de cada execução
- ✅ Limpeza de histórico
- ✅ Tema claro/escuro/sistema
- ✅ Configuração de timeout de requests
- ✅ Configuração de retries automáticos
- ✅ Configuração de proxy (com autenticação)
- ✅ Opção de seguir redirects
- ✅ Validação de SSL configurável
- ✅ Armazenamento local com IndexedDB
- ✅ Persistência automática de todas as alterações
- ✅ Exportação completa de dados
- ✅ Importação de dados (merge)
- ✅ Backup e restauração
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- UI Components: shadcn/ui + Radix UI
- Styling: Tailwind CSS
- State Management: Zustand
- Storage: IndexedDB (nativo do navegador)
- HTTP Client: Fetch API nativo
- Icons: Lucide React
- Date Formatting: date-fns
- Notifications: Sonner
# Clone o repositório
git clone <seu-repositorio>
# Instale as dependências
npm install
# Inicie o servidor de desenvolvimento
npm run dev
# Build para produção
npm run build- Clique no botão "+" na sidebar para criar um novo request
- Preencha o nome, método HTTP e URL
- Configure headers, body, params e autenticação nas abas
- Clique em "Send" para executar
- Clique no ícone de pasta na sidebar
- Dê um nome à coleção
- Arraste requests para dentro da coleção (ou adicione manualmente)
- Clique no botão "Environment" no header
- Crie ou selecione um ambiente
- Adicione variáveis com chave e valor
- Use
{{variableName}}nos requests para substituição automática
- Vá para a aba "Scripts" no editor de request
- Habilite e escreva código JavaScript
- Use o contexto disponível:
request: Objeto do requestenvironment: Ambiente ativovariables: Objeto com todas as variáveis
- Clique em "Export/Import" no header
- Para exportar: Clique em "Export All Data" e baixe o JSON
- Para importar: Cole o JSON ou selecione um arquivo
src/
├── components/ # Componentes React
│ ├── RequestEditor.tsx # Editor completo de requests
│ ├── RequestSidebar.tsx # Sidebar com coleções e requests
│ ├── ResponseViewer.tsx # Visualizador de respostas
│ ├── SettingsDialog.tsx # Configurações do usuário
│ ├── EnvironmentManager.tsx # Gerenciador de ambientes
│ ├── HistoryViewer.tsx # Visualizador de histórico
│ ├── ExportImportDialog.tsx # Exportar/Importar dados
│ └── ui/ # Componentes UI (shadcn)
├── lib/ # Utilitários e lógica
│ ├── storage.ts # Sistema de persistência IndexedDB
│ ├── variableResolver.ts # Resolução de variáveis
│ └── requestExecutor.ts # Executor de requests HTTP
├── store/ # Gerenciamento de estado
│ └── useAppStore.ts # Store Zustand global
├── types/ # Definições TypeScript
│ └── index.ts # Tipos principais
└── pages/ # Páginas
└── Index.tsx # Página principal
As variáveis são resolvidas na seguinte ordem de precedência:
- Variáveis de coleção
- Variáveis de ambiente ativo
- Variáveis globais
O OAuth 2.0 suporta os seguintes grant types:
- Client Credentials
- Authorization Code
- Password
Os scripts pré e pós-request têm acesso a:
request: Objeto completo do request (pode ser modificado)environment: Ambiente ativovariables: Objeto com todas as variáveis disponíveisresponse: (apenas pós-request) Objeto da resposta
O projeto pode ser deployado em qualquer plataforma que suporte aplicações React estáticas:
- Vercel: Conecte o repositório e faça deploy automático
- Netlify: Arraste a pasta
distapósnpm run build - GitHub Pages: Configure o workflow de deploy
- Qualquer servidor estático: Sirva a pasta
dist
- Todos os dados são armazenados localmente no navegador (IndexedDB)
- Não há backend necessário - tudo roda no cliente
- Os dados não são sincronizados entre dispositivos (por enquanto)
- Para produção, considere adicionar autenticação e sincronização em nuvem
O tema pode ser personalizado editando:
src/index.css: Variáveis CSS para corestailwind.config.ts: Configuração do Tailwind
Este projeto é open source e está disponível sob a licença MIT.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.
Desenvolvido por Bruno Nascimento