**Survey PM Tester** is a tool to test survey project management software
42
A lightweight, high-performance, multitenant web application designed for Market Research Project Managers (PMs), Sample Operations Specialists, and Router Integration QA Engineers.
It acts as an interactive dummy survey destination page during sample routing tests to verify tracking parameters, monitor real-time Length of Interview (LOI), and test callback return redirects (complete, terminate, overquota, security).
Run the container directly using Docker:
docker run -d \
--name survey-pm-tester \
-p 80:80 \
--restart unless-stopped \
frfs/survey-pm-tester:latest
Open your browser and navigate to:
http://localhost/default
Create a docker-compose.yml file:
version: '3.8'
services:
survey-tester:
image: frfs/survey-pm-tester:latest
container_name: survey-pm-tester
restart: always
ports:
- "80:80"
volumes:
# Optional: Mount your directory of custom tenant JSON configuration files
- ./custom-tenants:/usr/share/nginx/html/tenants:ro
Run with:
docker compose up -d
[app origin]/[tenant-slug]) without hardcoding.LOI: 00:00) pinned to the top-left corner that forwards duration to callback endpoints.complete)terminate / Screenout)overquota)security / Fraud/Bot)rid, uid, pid, session tokens), stores them in local storage, and allows adding, editing, or exporting as JSON / Query strings.minmax(0, 1fr)) that adapt smoothly without horizontal blowout or forced vertical scrolling.The application inspects the first segment of the URL pathname:
http://[host]:[port]/[tenant-slug]?[query-parameters]
| Inbound URL | Active Tenant | Configuration File Loaded |
|---|---|---|
http://localhost/default | default | /default.json or /config.json |
http://localhost/my-org?pid=proj99 | my-org | /my-org.json |
To add a new tenant configuration (e.g., my-org), create my-org.json:
{
"tenantId": "my-org",
"name": "My Org Research Router",
"description": "My Org panel partner redirect endpoints",
"redirectUrls": {
"complete": "https://router.my-org.com/api/callback/complete",
"terminate": "https://router.my-org.com/api/callback/screenout",
"overquota": "https://router.my-org.com/api/callback/overquota",
"security": "https://router.my-org.com/api/callback/security"
}
}
Mount your tenant file directly into the container's web root:
docker run -d -p 80:80 \
-v $(pwd)/my-org.json:/usr/share/nginx/html/my-org.json:ro \
frfs/survey-pm-tester:latest
Now access: http://localhost/my-org?rid=test_respondent
When any outcome button is clicked, the application preserves all original inbound parameters and appends survey telemetry:
https://router.example.com/callback/complete?rid=123&uid=456&status=complete&loi=45×tamp=2026-10-15T05%3A30%3A00.000Z
status: Outcome trigger (complete | terminate | overquota | security)loi: Active interview duration in integer secondstimestamp: ISO 8601 UTC timestamp of executionnode:24-alpine → nginx:alpine).This project is licensed under the MIT License.
Content type
Image
Digest
sha256:18d739826…
Size
27.5 MB
Last updated
6 days ago
docker pull optiwariindia/survey-pm-tester:web-1.0.0