Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
node_modules
.next
.git
.env
.env*
*.md
94 changes: 94 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Bug Report
description: Report a bug or unexpected behavior
title: "[Bug]: "
labels: ["bug"]

body:
- type: textarea
id: description
attributes:
label: Description
description: A clear description of the bug.
placeholder: Describe the bug you encountered.
validations:
required: true

- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: true

- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: What you expected to happen.
placeholder: Describe what you expected to happen.
validations:
required: true

- type: textarea
id: actual-behavior
attributes:
label: Actual Behavior
description: What actually happened.
placeholder: Describe what actually happened.
validations:
required: true

- type: dropdown
id: os
attributes:
label: Operating System
description: Which operating system are you using?
options:
- macOS
- Windows
- Linux
- Other
validations:
required: true

- type: input
id: node-version
attributes:
label: Node.js Version
description: What version of Node.js are you running?
placeholder: e.g. 20.11.0
validations:
required: false

- type: input
id: docker-version
attributes:
label: Docker Version
description: What version of Docker are you running, if applicable?
placeholder: e.g. 24.0.7
validations:
required: false

- type: input
id: browser
attributes:
label: Browser
description: Which browser are you using, if this is a UI-related issue?
placeholder: e.g. Chrome 122, Firefox 124, Safari 17
validations:
required: false

- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other information, screenshots, or logs that might help.
placeholder: Add any other context about the problem here.
validations:
required: false
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Discussions
url: https://github.com/keyper/webhook-tester/discussions
about: Ask questions and discuss ideas in GitHub Discussions.
50 changes: 50 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Feature Request
description: Suggest a new feature or improvement
title: "[Feature]: "
labels: ["enhancement"]

body:
- type: textarea
id: description
attributes:
label: Description
description: A clear description of the feature you would like.
placeholder: Describe the feature you are requesting.
validations:
required: true

- type: textarea
id: use-case
attributes:
label: Use Case
description: Why is this feature needed? What problem does it solve?
placeholder: Explain the use case and motivation for this feature.
validations:
required: true

- type: textarea
id: proposed-solution
attributes:
label: Proposed Solution
description: How you think this could work. Include API designs, UI mockups, or behavior descriptions if relevant.
placeholder: Describe your proposed solution.
validations:
required: false

- type: textarea
id: alternatives-considered
attributes:
label: Alternatives Considered
description: Any alternative approaches you have thought about.
placeholder: Describe any alternative solutions or features you have considered.
validations:
required: false

- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Any other information that might be helpful.
placeholder: Add any other context about the feature request here.
validations:
required: false
22 changes: 22 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Description

What does this PR do? Briefly describe the change.

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Refactoring
- [ ] Other (describe):

## Testing

- [ ] Tested locally with `npm run dev`
- [ ] Linting passes (`npm run lint`)
- [ ] Docker build works (`docker build -t webhook-tester .`)
- [ ] Existing functionality is not broken

## Notes

Any additional context or notes for reviewers.
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
target-branch: "main"
open-pull-requests-limit: 10

- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
target-branch: "main"
open-pull-requests-limit: 10
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-03-22

### Added

- Initial open-source release
- Channel management with unique webhook URLs
- Configurable response behaviors (success, errors, timeouts, slow responses, redirects)
- Behavior sequences for rotating through responses
- JWT signature verification support
- 24 predefined test scenarios
- Real-time event streaming via Server-Sent Events
- Full webhook history with request/response details
- Docker support with embedded PostgreSQL
- Web UI for channel management and webhook inspection
33 changes: 33 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a welcoming experience for everyone.

## Our Standards

Examples of behavior that contributes to a positive environment:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community

Examples of unacceptable behavior:

- Trolling, insulting or derogatory comments, and personal attacks
- Publishing others' private information without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement

Instances of unacceptable behavior may be reported to the project maintainers.
All complaints will be reviewed and investigated and will result in a response
that is deemed necessary and appropriate to the circumstances.

## Attribution

This Code of Conduct is adapted from the
[Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
63 changes: 63 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Contributing to Webhook Tester

Thanks for your interest in contributing! This document covers the essentials.

## Getting Started

See the [README](README.md) for instructions on setting up the development environment.

## Reporting Issues

- Search existing issues before opening a new one.
- Use the appropriate issue template (bug report or feature request).
- Provide as much detail as possible, including steps to reproduce for bugs.

## Submitting Pull Requests

1. Fork the repository and create a branch from `main`.
2. Make your changes in a focused, single-purpose branch.
3. Ensure your code passes linting and any existing tests.
4. Fill out the pull request template when submitting.
5. Keep pull requests small and reviewable when possible.

## Code Style

This project includes an ESLint configuration (`eslint.config.mjs`). Run the linter before submitting:

```bash
npm run lint
```

Follow the existing code patterns and conventions you see in the codebase.

## Commit Messages

This project follows [Conventional Commits](https://www.conventionalcommits.org/). Format your commit messages as:

```
<type>(<optional scope>): <description>

[optional body]
```

Common types:

- `feat` -- a new feature
- `fix` -- a bug fix
- `docs` -- documentation changes
- `style` -- formatting, no code change
- `refactor` -- code restructuring without behavior change
- `test` -- adding or updating tests
- `chore` -- maintenance tasks

Examples:

```
feat(api): add webhook retry endpoint
fix(ui): correct timestamp display in request list
docs: update setup instructions in README
```

## Code of Conduct

This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# ── Stage 1: Build Next.js standalone ─────────────────────────
FROM node:20-alpine AS builder
FROM node:25-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
Expand All @@ -9,7 +9,7 @@ RUN npx prisma generate
RUN npm run build

# ── Stage 2: Production image with PostgreSQL + Node.js ──────
FROM node:20-alpine AS runner
FROM node:25-alpine AS runner
WORKDIR /app

ENV NODE_ENV=production
Expand Down Expand Up @@ -47,6 +47,6 @@ RUN chmod +x /docker-entrypoint.sh
EXPOSE 4100
ENV PORT=4100
ENV HOSTNAME="0.0.0.0"
ENV DATABASE_URL="postgres://webhook:webhook_local@localhost:5432/webhook_tester"
ENV DATABASE_URL=${DATABASE_URL:-postgres://webhook:webhook_local@localhost:5432/webhook_tester}

ENTRYPOINT ["/docker-entrypoint.sh"]
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024-present Webhook Tester Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading