CoRATES is a web application designed to streamline the entire quality and risk-of-bias appraisal process with intuitive workflows, real-time collaboration, and automation, creating greater transparency and efficiency at every step. Built for researchers conducting evidence synthesis, it enables real-time collaboration, offline support, and PDF annotation.
See the detailed Contributing Guide for step-by-step setup instructions.
See detailed Documentation for more info.
See the Code of Conduct.
See Security.
- Framework: React 19 with TanStack Start and TanStack Router
- Build: Vite with TanStack Start
- Styling: Tailwind CSS v4 with @tailwindcss/vite
- UI Components: shadcn/ui (Radix-based) + lucide-react
- Data Fetching: TanStack Query (server state management)
- Client State: Zustand
- Tables: TanStack Solid Table
- Charts: D3 for most user charts and Chart.js + solid-chartjs for admin
- PDF Viewer: EmbedPDF with plugin ecosystem
- Local Storage: Dexie (IndexedDB wrapper) with y-dexie for Yjs persistence
- Forms & Validation: Zod (schema validation)
- Testing: Vitest + @solidjs/testing-library + jsdom
- Runtime: Cloudflare Workers (serverless edge compute)
- Real-time: Durable Objects (stateful computing for WebSocket connections)
- Framework: Hono (lightweight web framework for Workers) with OpenAPI
- Database: Cloudflare D1 (serverless SQLite)
- ORM: Drizzle ORM with automatic migration generation (drizzle-kit)
- Storage: Cloudflare R2 (S3-compatible object storage for PDFs)
- Auth: Better Auth with org, admin, and Stripe integration for payments
- Email: Postmark for transactional emails
- Validation: Zod
- Testing: Vitest with @cloudflare/vitest-pool-workers
- Package Manager: pnpm with workspaces
- Build Orchestration: Turbo
- Linting: ESLint with custom CoRATES rules
- Code Format: Prettier
- CoRATES MCP: Custom MCP server for CoRATES specific AI tooling
- AI Compatible: Claude plugins and skills, Cursor rules, and VS Code instructions
- Type Safety: TypeScript with tsconfig.json path aliases
- CRDT: Yjs (Conflict-free Replicated Data Type)
- WebSocket: y-websocket for client-server sync
- Local Persistence: y-dexie for IndexedDB storage
- Protocol: y-protocols for Durable Objects communication
packages/web- React/TanStack Start frontend (deployed on Cloudflare Workers)packages/workers- Cloudflare Workers backendpackages/ui- Shared UI component librarypackages/shared- Shared TypeScript utilities, types, and error definitionspackages/docs- Vitepress documentation and guidespackages/mcp- MCP server for development tools and documentationpackages/stripe-dev- Stripe setup for Turbo
PolyForm Noncommercial License 1.0.0 - see LICENSE for details.
Jacob Maynard
