{"id":"d1e20653-1e94-4e02-bf35-f1b767480404","slug":"ankish8-veritio","kind":"mcp","name":"Veritio","summary":"","owner":"Ankish8","repoUrl":"https://github.com/Ankish8/Veritio","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-03-15T10:25:41.000Z","addedAt":"2026-10-14T11:29:54.279Z","logoUrl":"https://avatars.githubusercontent.com/u/3889685?u=bd6e50fb5003cf7bc2cd68f5acdd9f5112ed24b9&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T21:21:24.130Z","sample":false,"url":"https://conduits.dev/tools/ankish8-veritio","language":"TypeScript","transports":["stdio"],"install":{"npm":"@veritiolabs/mcp-stdio"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Veritio\n\nOpen-source UX research platform for running Card Sorts, Tree Tests, Surveys, Prototype Tests, First-Click Tests, First Impression Tests, and Web App Tests.\n\n[![CI](https://github.com/Ankish8/Veritio/actions/workflows/ci.yml/badge.svg)](https://github.com/Ankish8/Veritio/actions/workflows/ci.yml)\n[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\n## Features\n\n- **Card Sort** -- Discover how users naturally organize and categorize content\n- **Tree Test** -- Validate navigation structure and information architecture\n- **Survey** -- Collect feedback with customizable questionnaires and branching logic\n- **Figma Prototype Test** -- Test interactive Figma prototypes with real users\n- **First Click Test** -- Measure where users click first on designs\n- **First Impression Test** -- Capture immediate reactions to brief design exposure\n- **Web App Test** -- Heatmaps, session recordings, and JS tracking on live websites\n\n### Platform Capabilities\n\n- **Study Flow Builder** -- Drag-and-drop study flow with welcome screens, instructions, consent forms, demographic questions, and thank-you pages\n- **Real-time Collaboration** -- Yjs-powered collaborative editing across all study types\n- **Results & Analysis** -- Built-in analysis dashboards with export capabilities\n- **Participant Management** -- Share links, response prevention, and session tracking\n- **Team Workspaces** -- Multi-user organizations with role-based access control\n- **Branding** -- Customizable colors, logos, and styling for participant-facing pages\n- **Session Recording** -- Optional screen, webcam, and audio recording\n\n### Build on it\n\n- **[REST API](docs/API.md)** -- Everything the dashboard does, over HTTPS. Create studies of any\n  methodology, launch them, read the analysis back. OpenAPI 3.1, scoped API keys or OAuth 2.1.\n  Reference at **[veritio.io/docs/api](https://veritio.io/docs/api)**.\n- **[MCP server](docs/MCP.md)** -- The same capability for AI agents, at `https://veritio.io/mcp`.\n  Write-capable, not read-only: an agent can design a study, launch it to real participants, and\n  read the results.\n\nBoth sit on one authorization core, so a scope means the same thing on either, and the same key\nworks on both.\n\n## Architecture\n\nSplit architecture with an [iii](https://iii.dev)-engine backend and Next.js frontend:\n\n| Component      | Port | Technology                    | Purpose                 |\n| -------------- | ---- | ----------------------------- | ----------------------- |\n| **Backend**    | 4000 | [iii engine](https://iii.dev) | API, events, cron jobs  |\n| **Frontend**   | 4001 | Next.js 16 + React 19         | UI, auth, SSR           |\n| **Yjs Server** | 4002 | WebSocket                     | Real-time collaboration |\n| **Streams**    | 4004 | WebSocket (iii RBAC listener) | Real-time data streams  |\n\nThe frontend proxies `/api/*` requests to the backend (except `/api/auth/*` which stays in Next.js for Better Auth). The backend app connects to the engine's trusted worker bridge on :49134 (loopback only).\n\n## Tech Stack\n\n- **Frontend:** Next.js 16, React 19, Tailwind CSS v4, Zustand, SWR\n- **Backend:** iii engine + iii-sdk (v0.23.x), TypeScript step handlers\n- **Database:** Supabase (PostgreSQL)\n- **Auth:** Better Auth\n- **Queue:** iii durable queue (builtin file store); Redis backs iii state + streams\n- **Real-time:** Yjs, WebSocket streams (iii-browser-sdk)\n- **Monorepo:** Turborepo, Bun\n\n## Quick Start\n\n### Prerequisites\n\n- [Bun](https://bun.sh) 1.3+\n- [Node.js](https://nodejs.org) 20+\n- [Supabase](https://supabase.com) account (or self-hosted)\n- [Redis](https://redis.io) (local or cloud)\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/Ankish8/Veritio.git\ncd veritio\n\n# Install dependencies\nbun install\n\n# Copy environment template and configure\ncp .env.example apps/veritio/.env.local\n# Edit apps/veritio/.env.local with your Supabase and Redis credentials\n\n# Start all development servers\ncd apps/veritio && ./scripts/dev.sh\n```\n\nThe app will be available at `http://localhost:4001`.\n\n### Environment Variables\n\nSee [`.env.example`](.env.example) for all configuration options. At minimum you need:\n\n- `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_ANON_KEY` -- Supabase project credentials\n- `SUPABASE_SERVICE_ROLE_KEY` -- Supabase service role key (server-side)\n- `DATABASE_URL` -- PostgreSQL connection string\n- `BETTER_AUTH_SECRET` -- Authentication secret key\n- `REDIS_URL` -- Redis connection URL\n\n## Project Structure\n\n```\nveritio/\n├── apps/veritio/          # Main application\n│   ├── src/\n│   │   ├── steps/         # Backend steps (API, events, cron)\n│   │   ├── services/      # Business logic\n│   │   ├── components/    # React components\n│   │   ├── hooks/         # SWR & custom hooks\n│   │   ├── stores/        # Zustand state management\n│   │   └── middlewares/   # Auth & error handling\n│   └── scripts/           # Dev & deployment scripts\n├── packages/@veritio/     # Shared packages\n│   ├── core/              # Common utilities\n│   ├── ui/                # Shadcn/ui components\n│   ├── auth/              # Better Auth integration\n│   ├── swr-config/        # SWR hooks & fetchers\n│   ├── study-types/       # Shared type definitions\n│   ├── study-flow/        # Survey builder & player\n│   ├── card-sort/         # Card sort components\n│   ├── prototype-test/    # Prototype test components\n│   ├── analysis-shared/   # Analysis algorithms\n│   ├── dashboard-common/  # Dashboard components\n│   └── ...\n├── workers/               # Cloudflare Worker (proxy)\n├── docs/                  # Technical documentation\n└── supabase/              # Database migrations\n```\n\n## Self-Hosting\n\n### Docker Compose (Recommended)\n\nThe easiest way to self-host Veritio:\n\n```bash\n# Copy environment template and configure\ncp .env.example .env\n# Replace every required placeholder. In particular, generate independent\n# BETTER_AUTH_SECRET, PDF_RENDER_SECRET, REDIS_PASSWORD, and YJS_INTERNAL_API_KEY values.\n\n# Bootstrap a clean external Supabase database (use its direct/session URL)\ncd apps/veritio\nDATABASE_DIRECT_URL='postgresql://...' bun run self-host:migrate\ncd ../..\n\n# Build and start the local services\ndocker compose up -d --build\ndocker compose ps\n```\n\nThis starts four containers that expose five runtime entrypoints:\n\n- **Backend** (port 4000) — iii engine + step handlers\n- **Frontend** (port 4001) — Next.js app\n- **Yjs** (port 4002) — Real-time collaboration server\n- **Streams** (port 4004) — RBAC-gated browser stream listener inside the backend container\n- **Redis** — iii state + stream backing store (the durable queue uses a file-based store on a volume)\n\nYou still need an external **Supabase** instance (hosted or self-hosted) for PostgreSQL, storage, and realtime. The Cloudflare live-test proxy is also a separate deployment and is required only for live website tests. This is not a one-command full infrastructure stack.\n\nThe Compose images support Linux `amd64` and `arm64`; the backend build selects the matching pinned iii engine binaries.\n\nRead the [Docker guide](apps/docs/content/docs/self-hosting/docker.mdx) and [operations runbook](docs/SELF_HOSTING_OPERATIONS.md) before exposing an installation to the internet.\n\n### Railway\n\nSee the [self-hosting guide](apps/docs/content/docs/self-hosting/railway.mdx) for Railway-specific deployment instructions.\n\n### Vercel (Frontend)\n\nThe Next.js frontend can be deployed to Vercel. Configure the API proxy to point to your backend deployment.\n\n## Development\n\n```bash\n# Run a single test file\nbun test path/to/file.test.ts\n\n# Run tests matching a pattern\nbun run test:vitest -t \"pattern\"\n\n# Build all packages\nbun run build\n\n# Lint\nbun run lint\n\n# Type check\nbun run type-check\n\n# Storybook (component development)\nbun run storybook\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for full development guidelines.\n\n## Documentation\n\nFull documentation is available at **[docs.veritio.dev](https://docs.veritio.dev)** (or run locally — see below).\n\nKey sections:\n\n- [Prerequisites](apps/docs/content/docs/getting-started/prerequisites.mdx) -- Tools and setup requirements\n- [Quick Start](apps/docs/content/docs/getting-started/quickstart.mdx) -- Get running from a fresh clone\n- [Environment Variables](apps/docs/content/docs/getting-started/environment-variables.mdx) -- Complete configuration reference\n- [Architecture Overview](apps/docs/content/docs/architecture/overview.mdx) -- Service map, request flow, port map\n- [Self-Hosting (Docker)](apps/docs/content/docs/self-hosting/docker.mdx) -- Docker Compose deployment\n- [Troubleshooting](apps/docs/content/docs/guides/troubleshooting.mdx) -- Common issues and fixes\n- [REST API](docs/API.md) -- Conventions, authorization model, adding an endpoint\n- [MCP server](docs/MCP.md) -- Endpoints, auth, tool surface, authorization model\n\n### Run Docs Locally\n\n```bash\ncd apps/docs\nbun install   # first time only\nbun run dev   # opens at http://localhost:3000\n```\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the [GNU Affero General Public License v3.0](LICENSE).\n\nCopyright (c) 2026 Veritio\n"}