Lightweight RequestBin clone focused on real-time request inspection, backend architecture, and self-hostable infrastructure.
- Generate temporary request endpoints
- Real-time request inspection powered by WebSockets
- Live request synchronization without polling
- Request detail inspection:
- Headers
- Body
- Query parameters
- HTTP method
- Persistent request history
- Automatic bin expiration after 24 hours
- Redis-backed rate limiting
- Middleware-based security layer
- Self-hostable architecture
- Lightweight containerized setup
- Vue 3
- TypeScript
- Pinia
- Laravel Echo
- PHP 8.3
- SQLite
- Redis
- Soketi
- WebSockets
- Pusher Protocol
- Podman / Docker
- Nginx
- Multi-container architecture
- Podman or Docker
git clone https://github.com/k4ik/reqbin.git
cd reqbinpodman compose up -d --buildor
docker compose up -d --buildReqbin follows a lightweight layered backend architecture inspired by modern backend frameworks.
- Controllers handle HTTP requests
- Services contain business logic
- Repositories manage persistence
- DTOs standardize request data
- Workers handle background cleanup tasks
- Middleware handles request processing and security
Reqbin includes a custom middleware pipeline responsible for:
- Rate limiting
- Security headers
- CORS handling
- Request validation
- Payload protection
Vue Frontend
↓
Nginx Container
↓
PHP API
↓
Redis (rate limiting)
↓
SQLite Persistence
↓
Soketi WebSocket ServerIncoming Request
↓
PHP Backend
↓
Middleware Pipeline
↓
SQLite Persistence
↓
Soketi Broadcast
↓
Vue Frontend Sync.
├── backend/
│ ├── app/
│ │ ├── Controllers/
│ │ ├── Core/
│ │ ├── DTO/
│ │ ├── Middlewares/
│ │ ├── Repositories/
│ │ ├── Services/
│ │ └── Workers/
│ │
│ ├── public/
│ └── storage/
│
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── composables/
│ │ ├── helpers/
│ │ ├── stores/
│ │ └── types/
│
└── README.mdReqbin implements several API protection mechanisms:
- Redis-backed IP rate limiting
- Middleware-based request validation
- Security headers
- CORS handling
- Payload size protection
- Randomized bin identifiers
- Centralized error handling
- Create a temporary bin
- Send requests to the generated endpoint
- Reqbin captures and stores the request
- Requests are broadcast through WebSockets
- Frontend updates in real-time
- Background workers clean expired bins
curl -X POST http://localhost:8000/bin/:bin \
-H "Content-Type: application/json" \
-d '{"message":"hello world"}'Reqbin was built to explore:
- WebSocket communication
- Request inspection systems
- Backend architecture patterns
- Middleware pipelines
- Rate limiting strategies
- Containerized infrastructure
- Self-hostable developer tooling
- Real-time fullstack systems
- Real-time request updates
- Request storage
- Request detail viewer
- Automatic bin expiration
- Redis-backed rate limiting
- Middleware pipeline
- Security improvements
- Better UI/UX
- Request filtering
- Request search
Contributions, issues, and feature requests are welcome.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push your branch
- Open a Pull Request
This project is licensed under the MIT License.
