A powerful webhook creation, testing and debugging service built with Next.js and Supabase.
- 🔗 Generate unique webhook URLs
- 🔄 Real-time request inspection
- ⚙️ Customizable responses
- 📝 Request history and logging
- 🔒 Private endpoints with authentication
- ⏱️ Response delay simulation
- 📊 Pretty-printed request data
- Frontend: Next.js 13 (App Router)
- Backend: Supabase
- UI: shadcn/ui + Tailwind CSS
- Real-time: Supabase Realtime
- Authentication: Supabase Auth
- Node.js 18 or later
- A Supabase account (free tier works great)
- Git
-
Clone the repository:
git clone https://github.com/kenny-io/moqa.git cd moqa
-
Install dependencies:
npm install
-
Create a new Supabase project at supabase.com
-
In your Supabase project:
- Go to Settings > API
- Copy the "Project URL" and "anon/public" key
- Enable Email Auth in Authentication > Providers
- Disable Email Confirmation (for development)
-
Run the database migrations:
- Go to SQL Editor
- Copy the contents of
supabase/migrations/20250102194523_divine_wind.sql
- Run the SQL script
- Handle RLS policies as you see fit
-
Create a
.env.local
file in the project root:NEXT_PUBLIC_SUPABASE_URL=your_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
Replace
your_project_url
andyour_anon_key
with the values from Supabase.
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser
-
Sign up for a new account using email and password
-
Create a new webhook:
- Click "New Webhook" in the dashboard
- Give it a name
- Choose whether it should be private
-
Test the webhook:
# Replace {url} with your webhook URL curl -X POST \ -H "Content-Type: application/json" \ -d '{"test": "Hello World"}' \ http://localhost:3000/api/webhook/{url}
-
You should see the request appear in real-time in the dashboard
-
Database Connection Issues
- Verify your Supabase credentials
- Check if the migrations ran successfully
- Ensure RLS policies are in place
-
Authentication Problems
- Confirm Email Auth is enabled in Supabase
- Check if Email Confirmation is disabled
- Clear browser cookies/localStorage if needed
-
Real-time Updates Not Working
- Verify Supabase Realtime is enabled
- Check browser console for WebSocket errors
- Ensure you're authenticated