A modern Next.js application for managing Discord webhooks for your Taiga projects. This application allows project owners to configure multiple Discord channels for different types of Taiga events.
- 🔐 Secure Authentication: Login with your Taiga credentials
- 👑 Owner-Only Access: Only project owners can manage webhooks
- 📊 Multiple Webhooks: Configure multiple Discord channels per project
- 🎯 Entity Filtering: Choose which event types to send to each webhook
- 🧪 Test Functionality: Test webhooks directly from the UI
- 📱 Modern UI: Beautiful Material UI design
- 🔄 Real-time Updates: Live project fetching from Taiga API
- 📅 Milestones/Epics: Create, update, delete
- 📝 User Stories: Create, update, delete
- 📋 Tasks: Create, update, delete
- 🐛 Issues: Create, update, delete
- 📚 Wiki Pages: Create, update, delete
- Node.js 18+
- A Taiga instance with API access
- Discord webhook URLs
-
Clone the repository
git clone <repository-url> cd taiga-webhook-manager
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:# Base URL for the application (used for webhook URLs) NEXT_PUBLIC_BASE_URL=http://localhost:3000 # For production, change to your actual domain # NEXT_PUBLIC_BASE_URL=https://your-domain.com # Default Taiga instance URL for login form NEXT_PUBLIC_TAIGA_DEFAULT_URL=https://api.taiga.io # Secret key for verifying incoming Taiga webhooks TAIGA_WEBHOOK_SECRET=your-very-secret-key
-
Run the development server
npm run dev
-
Access the application Open http://localhost:3000 in your browser
- Enter your Taiga URL, username, and password
- Only project owners will be able to access the system
- Choose from your owned projects in the dropdown
- Add Webhook: Click "Add Webhook" and enter Discord webhook URL
- Configure Events: Select which event types to send to each webhook
- Test Webhook: Use the test button to verify webhook functionality
- Edit/Delete: Modify or remove webhooks as needed
In your Taiga project settings, configure a webhook to point to:
${NEXT_PUBLIC_BASE_URL}/api/webhook
Important:
- Set the webhook secret/key in Taiga to exactly match your
TAIGA_WEBHOOK_SECRETin.env.local. - This ensures only authorized requests from your Taiga instance are accepted.
For example:
- Development:
http://localhost:3000/api/webhook - Production:
https://your-domain.com/api/webhook
POST /api/auth/login- Authenticate with TaigaPOST /api/auth/logout- Logout userGET /api/auth/me- Get current user infoGET /api/webhooks/[projectId]- Get project webhooksPOST /api/webhooks/[projectId]- Add new webhookPUT /api/webhooks/[projectId]/[webhookId]- Update webhookDELETE /api/webhooks/[projectId]/[webhookId]- Delete webhookPOST /api/webhooks/[projectId]/[webhookId]/test- Test webhookPOST /api/webhook- Receive Taiga webhooks
- Push your code to GitHub
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy
The app can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- DigitalOcean App Platform
- AWS Amplify
- Session Management: Secure HTTP-only cookies with 24-hour expiry
- Owner Verification: Only project owners can access webhook management
- Signature Verification: Taiga webhook signatures are verified
- Input Validation: All inputs are validated and sanitized
- Frontend: Next.js 14 with App Router, Material UI
- Backend: Next.js API Routes
- Authentication: Custom session-based auth with Taiga API
- Storage: JSON file-based configuration (can be extended to database)
- Logging: Console and file-based logging
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details