Event-driven webhook processing platform built with Laravel 12.
- Webhook Ingestion - Receive webhooks from GitHub, GitLab, Stripe, and custom sources
- Signature Validation - HMAC SHA256/SHA512 signature verification for security
- Multi-Source Support - Configure multiple webhook providers with secret keys
- Event Storage - Store complete webhook payloads with headers and metadata
- API Endpoints - RESTful API for webhook handling
# Install dependencies
composer install
npm install
# Setup environment
cp .env.example .env
php artisan key:generate
# Run database migrations
php artisan migrate
# Start development server
php artisan serveuse App\Models\WebhookSource;
WebhookSource::create([
'name' => 'GitHub',
'slug' => 'github',
'secret_key' => 'your_webhook_secret',
'is_active' => true,
]);POST /api/webhooks/github
Content-Type: application/json
X-GitHub-Event: push
X-Hub-Signature-256: sha256=your_signature
{
"ref": "refs/heads/main",
"repository": {"name": "my-repo"},
"commits": [...]
}- GitHub -
X-Hub-Signature-256header,X-GitHub-Eventtype - GitLab -
X-Gitlab-Tokenheader,X-Gitlab-Eventtype - Stripe -
Stripe-Signatureheader,typefield - Custom -
X-Signatureheader,eventfield
# Run test suite
php artisan test
# Test webhook endpoints
php artisan http:handle tests/HttpRequests/handle.httpThe application uses these database tables:
webhook_sources- Provider configurationswebhook_events- Incoming webhook logsalerts- Processed events (if implemented)notification_logs- Notification history (if implemented)
app/
├── Http/Controllers/WebhookController.php
├── Services/WebhookService.php
├── Services/WebhookSignatureValidator.php
├── Models/WebhookSource.php
├── Models/WebhookEvent.php
└── Enums/WebhookEventStatus.php
- PHP 8.4+
- Laravel 12.0+
- MySQL 8.0+ or PostgreSQL 12+
- Redis (optional, for queues)
MIT License