Este é um projeto Full-Stack (Monorepo) gerenciado pelo pnpm com workspaces, projetado para receber, inspecionar e processar eventos de webhook.
O projeto consiste em duas partes principais:
- API (
api): Backend que recebe, valida e processa os webhooks. - Web (
web): Frontend de inspeção para visualizar os payloads de webhook em tempo real.
- Arquitetura Monorepo: Gerenciamento eficiente de código via pnpm workspaces.
- Serviço de Webhook Inteligente: Utiliza o Google AI SDK para a função
generate-handler.ts, permitindo a geração dinâmica de handlers para diferentes eventos de webhook. - Backend de Alta Performance: Construído com Fastify para rapidez e robustez.
- Validação e Tipagem: Validação de esquema com Zod e tipagem de rotas com
fastify-type-provider-zod. - Inspeção Visual: Interface de inspeção (
web) construída com React e TanStack Router. - Banco de Dados: Utiliza Drizzle ORM para interagir com o PostgreSQL.
Este projeto Full-Stack se apoia nas seguintes tecnologias:
| Categoria | Tecnologia | Uso Principal |
|---|---|---|
| Framework Web | Fastify | Servidor de alta performance. |
| ORM | Drizzle ORM | Mapeamento e Migrações do Banco de Dados. |
| Validação | Zod | Validação de payloads e tipagem de rotas. |
| AI/Geração | @ai-sdk/google | Geração de código do handler de webhook. |
| Categoria | Tecnologia | Uso Principal |
|---|---|---|
| Framework UI | React | Construção da interface de inspeção. |
| Roteamento | TanStack Router | Roteamento do lado do cliente. |
| State/Caching | TanStack Query | Gerenciamento de estado assíncrono. |
| Estilização | Tailwind CSS | Estilização rápida e utilitária. |
- Node.js (v18+)
- pnpm (Gerenciador de pacotes)
- Docker (Para rodar o PostgreSQL)
-
Clone o repositório:
git clone [URL_DO_SEU_REPOSITORIO] cd webhook_projeto -
Instale as dependências:
pnpm install
-
Configuração do Ambiente: Crie o arquivo
.envna pastaapie configure aDATABASE_URLe a chave de API do Gemini/Google. -
Inicialize o Banco de Dados com Docker:
docker-compose up -d postgres
-
Aplique as Migrações do Banco:
pnpm --filter api db:migrate # Opcional: Popular o banco com dados iniciais (seed) # pnpm --filter api db:seed
Você pode iniciar o Backend e o Frontend simultaneamente ou separadamente:
-
Backend (API):
pnpm --filter api dev # Rodará o servidor Fastify em desenvolvimento (monitorado por tsx) -
Frontend (Web):
pnpm --filter web dev # Rodará a interface de inspeção (Vite)
| Serviço | URL Padrão | Descrição |
|---|---|---|
| API Webhooks (POST) | http://localhost:5333/api/webhooks |
Endpoint principal para envio de payloads de webhook. |
| Web Inspector (GET) | http://localhost:5173/ |
Interface visual para inspecionar os webhooks recebidos. |