Skip to content

jesusnoseq/request-inbox

Repository files navigation

Request Inbox

CI/CD License Go Version Node Version AWS

A web application to collect and inspect HTTP requests for testing and debugging purposes. Request Inbox provides a simple and free alternative to services like webhook.site and webhookinbox.com.

πŸ”— Try it live at request-inbox.com

✨ Features

Core Functionality

  • πŸ“¬ Create, list, and delete inboxes - Organize your inboxes
  • 🎯 Endpoint collection - Capture HTTP requests with detailed information
  • πŸ”§ Custom responses - Configure response headers and body content
  • πŸ‘€ Request inspection - View detailed request information including headers, body, and metadata
  • πŸ—‘οΈ Request management - Remove requests from an inbox

User Experience

  • πŸŒ“ Light and dark themes - Choose your preferred interface style
  • πŸ” Inbox search - Quickly find your inboxes
  • ♻️ Auto-refresh - Real-time request updates
  • πŸ“– JSON viewer - Pretty-print and inspect request bodies
  • πŸ“Š OpenAPI documentation - Complete API specification

Security & Access

  • πŸ‘€ User authentication - Secure login with GitHub and Google OAuth
  • πŸ”’ Private inboxes - Control access to your testing environments
  • πŸ”‘ API keys - Programmatic access to your inboxes

πŸš€ Quick Start

Using Docker

Run the complete application in a single container with nginx and the Go API:

# Using Docker Compose
docker-compose up -d

# Or pull from Docker Hub
docker pull jesusnoseq/request-inbox:latest
docker run -d -p 80:80 -p 8080:8080 -v inbox-data:/app/data jesusnoseq/request-inbox:latest

# Or pull from GitHub Container Registry
docker pull ghcr.io/jesusnoseq/request-inbox:latest
docker run -d -p 80:80 -p 8080:8080 -v inbox-data:/app/data ghcr.io/jesusnoseq/request-inbox:latest

The application will be available at http://localhost

πŸ“– Full Docker deployment guide

Using Docker Compose (Development)

Run separate containers for frontend and backend development:

docker-compose -f docker-compose-dev.yml up --build

This will start:

  • API server on http://localhost:8080
  • Frontend on http://localhost:3000

Prerequisites

  • Docker and Docker Compose (for containerized deployment)
  • Go 1.24+ (for local development)
  • Node.js 20+ (for local development)

Local Development

  1. Backend setup:
cd api
make install          # Download Go dependencies
make run-api-hot      # Start with hot reloading
  1. Frontend setup:
cd front
npm install           # Install dependencies
npm start            # Start development server
  1. View all available commands:
make help

πŸ—οΈ Architecture

Technology Stack

  • Backend: Go 1.24+ with Gin web framework. Can also work as an AWS lambda.
  • Frontend: React 18 with TypeScript and Material-UI
  • Database: BadgerDB (embedded) for local development, DynamoDB for production
  • Infrastructure: Terraform on AWS (Lambda, API Gateway, S3, CloudFront)
  • Authentication: JWT with OAuth2 (GitHub, Google)
  • Monitoring: PostHog analytics

Deployment

  • Development: Local Docker containers
  • Production: Serverless AWS infrastructure with CI/CD via GitHub Actions

Project Structure

request-inbox/
β”œβ”€β”€ .github/workflows/       # CI/CD pipelines (GitHub Actions)
β”œβ”€β”€ api/                     # Backend application (Go)
β”‚   β”œβ”€β”€ cmd/                 # Application entry points
β”‚   β”œβ”€β”€ pkg/                 # Shared packages and business logic
β”‚   β”‚   β”œβ”€β”€  handler/        # HTTP request handlers
β”‚   β”‚   β”œβ”€β”€  model/          # Data models and validation
β”‚   β”‚   β”œβ”€β”€  database/       # Database abstraction layer
β”‚   β”‚   β”œβ”€β”€  login/          # Authentication & authorization
β”‚   β”‚   └──  route/          # API route definitions
β”‚   β”œβ”€β”€ go.mod               # Go module dependencies
β”‚   └── air.toml             # Hot reload configuration
β”œβ”€β”€ front/                   # Frontend application (React + TypeScript)
β”‚   β”œβ”€β”€ src/                 # Source code
β”‚   β”‚   β”œβ”€β”€ components/      # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/           # Application pages
β”‚   β”‚   β”œβ”€β”€ services/        # API client services
β”‚   β”‚   └── types/           # TypeScript type definitions
β”‚   β”œβ”€β”€ public/              # Static assets
β”‚   β”œβ”€β”€ package.json         # Node.js dependencies
β”‚   └── tsconfig.json        # TypeScript configuration
β”œβ”€β”€ deploy/                  # Infrastructure as Code (Terraform)
β”‚   β”œβ”€β”€ back.tf              # Backend infrastructure
β”‚   β”œβ”€β”€ front.tf             # Frontend infrastructure
β”‚   β”œβ”€β”€ cert.tf              # SSL certificates
β”‚   └── variables.tf         # Configuration variables
β”œβ”€β”€ docs/                    # Documentation
β”‚   └── openapi.yaml         # API specification (OpenAPI 3.1)
β”œβ”€β”€ docker-compose-local.yml # Local development environment
β”œβ”€β”€ Dockerfile-api           # Backend container definition
β”œβ”€β”€ Dockerfile-front         # Frontend container definition
β”œβ”€β”€ Makefile                 # Development commands
└── README.md                # This file

πŸ“š API Documentation

Our REST API is documented using OpenAPI 3.1 specification:

Base URLs

  • Production: https://api.request-inbox.com/api/v1
  • Local Development: http://localhost:8080/api/v1

πŸ“„ Template Docs

Responses can work as golang templates is the response is mark as dynamic.

Template documentation

πŸ› οΈ Development

Available Make Commands

make help               # Show all commands

Environment Variables

For local development, create .env.development in the api/ directory:

# Database
DB_ENGINE=embedded

# Server
API_HTTP_PORT=8080
API_MODE=server

# CORS
CORS_ALLOW_ORIGINS=http://localhost:3000

# Authentication (optional for local development)
LOGIN_GITHUB_CLIENT_ID=your_github_client_id
LOGIN_GITHUB_CLIENT_SECRET=your_github_client_secret
LOGIN_GOOGLE_CLIENT_ID=your_google_client_id
LOGIN_GOOGLE_CLIENT_SECRET=your_google_client_secret
JWT_SECRET=your_jwt_secret

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow Go best practices and run make lint and make test
  • Write tests for new functionality
  • Update documentation for API changes
  • Use conventional commit messages

πŸ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

πŸ—ΊοΈ Roadmap

Recent Additions

  • βœ… Docker images - Production-ready Docker image with nginx and API
  • βœ… GitHub Container Registry - Automated image publishing

Planned Features

  • Alerts: Notification system for new requests
  • Import/Export: Inbox configuration backup and restore fromt github
  • Testing: Request testing capabilities. Mark request as Pass or Fail
  • Limits: Configurable request and inbox limits

Future Enhancements

  • WebSocket support for real-time updates
  • Custom domain support for inboxes
  • Advanced filtering and search
  • Request callback/passthrough
  • Performance monitoring and metrics

About

The simplest way to test your APIs and webhooks

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors