// Create webhook for Slack notifications
await trpc.webhooks.create.mutate({
repoId: 'repo-uuid',
url: 'https://your-app.com/webhooks/slack',
events: ['push', 'pull_request', 'issue']
});
// Your webhook handler
app.post('/webhooks/slack', async (req, res) => {
const event = req.headers['x-wit-event'];
const payload = req.body;
let message: string;
switch (event) {
case 'push':
message = `📦 ${payload.pusher.name} pushed ${payload.commits.length} commits to ${payload.ref}`;
break;
case 'pull_request':
message = `🔀 PR #${payload.number}: ${payload.pull_request.title} (${payload.action})`;
break;
case 'issue':
message = `📋 Issue #${payload.issue.number}: ${payload.issue.title} (${payload.action})`;
break;
default:
return res.status(200).send('OK');
}
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: message })
});
res.status(200).send('OK');
});