Meta: Want to contribute to QAtrial? Learn how to run the project locally and where to add value across countries, verticals, modules, languages, AI prompts, and documentation.


Why QAtrial Is Open to Contributors

QAtrial is licensed under AGPL-3.0 (GNU Affero General Public License v3.0). This license means two things for contributors:

  1. You can use, modify, and distribute QAtrial freely. Fork it, customize it for your organization, run it internally, extend it with new features.
  2. If you modify QAtrial and serve it over a network, you must share your source code under the same license. This ensures that improvements flow back to the community rather than being locked in proprietary forks.

The practical effect is that QAtrial grows through community contributions. Every country template, every vertical, every translation, and every bug fix benefits every user. The platform’s value increases with the breadth of its regulatory coverage, and no single team can cover 37 countries, 10 verticals, and 12 languages alone.

QAtrial – How to Contribute
QAtrial · Open Source · AGPL-3.0
How to
Contribute
QAtrial grows through community contributions. Every country template, vertical, translation, and bug fix benefits every user. No single team can cover 37 countries, 10 verticals, and 12 languages alone — and the highest-value contributions require domain knowledge, not React expertise.
AGPL-3.0 — What It Means
Use freely. Fork, customize, run internally — no obligation to share. Internal use is not “serving over a network.”
Contribute voluntarily. Contributing back is not required — but benefits the community and avoids maintaining a private fork.
!
SaaS obligation. Modify + serve over a network → must share source under AGPL-3.0. Network copyleft provision.
Contribution Areas
Seven Types — Listed by Approximate Impact
#
Impact
Type + Description
File Path
Skills Needed
1
Country Templates
23 of 37 countries lack templates. Encoding a jurisdiction’s regulatory authorities, key regulations, and submission requirements into structured requirements and tests.
src/templates/regions/
{cc}/base.ts
Domain knowledgeMinimal TS
2
Vertical Templates
8 of 10 verticals have templates. Deepening existing verticals or adding new ones with domain-specific requirements, tests, and regulatory references.
src/templates/verticals/
{id}/common.ts
Domain knowledgeMinimal TS
3
Quality Module Content
15 modules with ~5 requirements and 2–3 tests each. Adding more specific requirements, additional tests, and more precise regulatory references.
MODULE_DEFINITIONS in
src/templates/registry.ts
Domain knowledgeMinimal TS
4
Language Translations
12 complete translations. 23 additional locale directories waiting. ~440 JSON keys per language. Self-contained, no front-end knowledge required.
public/locales/
{lang}/common.json
Language fluencyNo code needed
5
AI Prompts
6 prompt templates for test generation, risk classification, gap analysis, CAPA suggestions, executive brief, and requirement extraction. Improve prompts or add new types.
src/ai/prompts/
Prompt engineeringRegulatory domain
6
Dashboard Views, Reports, Connectors
New Evaluation dashboard tabs, report types, and connector implementations for JIRA, GitHub, Veeva Vault, MasterControl, SharePoint (currently interface-only).
src/components/dashboard/
src/connectors/
React + TS
7
Documentation, Bug Reports, Tests
File issues with reproduction steps, improve User/Developer guides, write Vitest tests for existing functionality, improve test coverage.
docs/ · GitHub Issues
No code needed
Local Setup
Clone, Install, Run
terminal
$git clone github.com/MeyerThorsten/QAtrial
$cd QAtrial
$npm install
$npm run dev
# Opens at http://localhost:5173 with HMR
Available Scripts
npm run dev
Vite dev server with hot module replacement
npm run build
Production build to dist/
npm run lint
ESLint on source files
npm run test
All tests with Vitest
npm run test:watch
Tests in watch mode
npm run test:coverage
Tests with coverage report
Two Contributor Profiles
Domain Expert or Developer — Both Are Needed
🏥 Domain Expert, Limited Code Best starting point
1
Fork the repository on GitHub, clone your fork locally
2
Run npm install && npm run dev
3
Find the template directory for your country or vertical
4
Create your template file following existing patterns
5
Test through the setup wizard — verify templates appear in Step 6 preview
6
Add English translation keys, commit, push, open a pull request
Templates are TypeScript data files — no React, no Zustand, no component architecture. If you can write JSON, you can write templates.
⚛️ React + TypeScript Developer Full stack open
Extension points available to developers:
Components: 14 dashboard components, wizard, tables, AI panels, report generators in src/components/
Stores: 14 Zustand stores persisted to localStorage — add stores or extend existing ones
AI Prompts: Improve prompt quality or add new prompt types with output validation schemas
Connectors: Build actual sync logic for JIRA, Azure DevOps, GitHub, Veeva, MasterControl, SharePoint (interface-only today)
Tech stack: React 19 · TypeScript · Vite · Tailwind CSS 4 · Zustand · TanStack Table v8 · Recharts · Vitest
Best First Contributions
Two Self-Contained, High-Value Starting Points
🌍 A Country Template for Your Jurisdiction
If you live or work in one of the 23 countries without templates, you know the regulatory framework better than anyone. Creating that template is immediately useful to every QAtrial user in your jurisdiction.
5–10 base requirements covering the jurisdiction’s key regulatory expectations
3–5 tests linked to those requirements via tags
Real regulatory references (statute names, regulation numbers, guidance titles)
Appropriate risk levels — not everything is “critical”
Optionally: country-vertical overlays for pharma, devices, or software
23 of 37 countries awaiting templates
🌐 A Translation File for Your Language
23 locale directories are prepared and waiting. Translating ~440 JSON keys from the English file is a self-contained contribution — flat JSON structure, no nested complexity, no code required.
Copy public/locales/en/common.json → public/locales/{code}/common.json
Translate all ~440 values — English as the source, your language as the target
Familiarity with regulated industry terminology in your language is important
Zero code required — flat JSON files only
12 complete translations: EN DE FR ES IT PT NL JA ZH KO HI TH
23 locale directories awaiting translations
The Template Composition System
How Sources Are Merged in the Setup Wizard
1
EU base templates
(if EU/EFTA country)
EU-wide requirements loaded first — EU MDR 2017/745, EU GMP Annex 11, IVDR. Applies to EU member states and countries with MRAs (Switzerland, Norway, Iceland).
2
Country base
templates
Jurisdiction-specific requirements and tests — regulatory authorities, key regulations, submission formats for the selected country.
3
Country-vertical
overlays
Loaded if the country has a vertical-specific overlay (e.g., US/medical_devices.ts for a US + Medical Devices project). Adds country-specific depth for that vertical.
4
Vertical common
templates
Domain-specific requirements and tests for the selected vertical — ISO 13485, ISO 14971, IEC 62304 for medical devices; ICH Q7/Q10 for pharma; GAMP 5 for software, etc.
5
Vertical project-type
sub-templates
Loaded if the vertical has a template for the selected project type (software.ts, quality-system.ts, etc.). Adds project-type-specific depth within the vertical.
6
Module templates
Requirements and tests from each selected quality module (CAPA, Audit Trail, Risk Management, etc.). Each module adds ~5 requirements and 2–3 tests.
All sources are merged and deduplicated using templateId matching (title matching as fallback). Your country template automatically works with all verticals, modules, and project types. Your vertical template automatically works with all 37 countries. You do not need to think about every combination — the composer handles it.
Developer Guide
14 Sections — One for Each Extension Type
01
Development Setup
Prerequisites, clone/install/run, available scripts
02
Adding a Country
Base templates, registry, overlays, EU mapping, translations
03
Adding a Vertical
Common templates, registry, risk taxonomy, project-type packs
04
Adding a Module
Module definitions, requirements, tests, translations
05
Adding a Language
Locale files, language selector, translation key reference
06
Adding an AI Prompt
Prompt structure, response validation, schema definition
07
AI Validators
JSON schema validation for AI response outputs
08
Writing Connectors
Connector interface, field mapping, sync implementation
09
Creating New Stores
Zustand store patterns, persistence, naming conventions
10
Dashboard Views
Component structure, data hooks, tab integration
11
Report Types
Report template structure, data collection, rendering
12
Code Conventions
Naming, TypeScript patterns, file organization
13
Test Infrastructure
Vitest setup, test patterns, coverage targets
14
Testing Checklist
What to verify before submitting a pull request
AGPL-3.0 Obligations
Three Scenarios — Know Your Obligations
✓ Internal use — no obligation
Run QAtrial internally — on a local machine, internal server, behind a firewall. Modify it freely for your organization. Internal use is not “conveying” or “providing as a service.” You have no obligation to share modifications.
⚠ SaaS deployment — share source
Modify QAtrial and provide it as a service over a network (hosted SaaS product) → you must make your modified source code available under AGPL-3.0. This is the “network copyleft” provision — it distinguishes AGPL from standard GPL.
→ Contributing back — voluntary
The license does not require upstream contributions. But contributing back means your work is maintained alongside the main project, avoids the burden of a private fork, and benefits every user in your domain. Encouraged, not required.

How to Use Visual Studio Code: A Beginner’s User Guide 2026: The Handbook to Learn Editor Navigation, Add the Right Extensions, and Build Your First Real Project with Ease

How to Use Visual Studio Code: A Beginner’s User Guide 2026: The Handbook to Learn Editor Navigation, Add the Right Extensions, and Build Your First Real Project with Ease

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

What Kinds of Contributions Matter Most

QAtrial has clear extension points where contributions create the most value. They are listed here in approximate order of impact:

1. Country Templates

QAtrial’s country registry lists 37 countries, but only 14 have full templates with jurisdiction-specific requirements and tests. That leaves 23 countries where users get either EU base templates or generic content.

Adding a country template means encoding a jurisdiction’s regulatory authorities, key regulations, submission requirements, and compliance expectations into structured requirements and tests. This is high-impact work because it directly improves the experience for every user in that jurisdiction.

Where to start: src/templates/regions/{cc}/base.ts — see the Developer Guide section on adding countries.

Domain knowledge required: Understanding of the country’s regulatory framework (which authority, which key regulations, which standards apply to which verticals).

Code knowledge required: Minimal. Country templates are TypeScript data files — arrays of objects with title, description, tags, riskLevel, and regulatoryRef fields. You do not need to understand React, Zustand, or the component architecture.

2. Vertical Templates

10 verticals are defined, and 8 have base templates. Beyond filling the gaps, existing verticals can always be deepened with more requirements, more tests, more specific regulatory references, and project-type sub-templates.

Where to start: src/templates/verticals/{id}/common.ts

Domain knowledge required: Understanding of the vertical’s regulatory standards, risk management approach, and quality expectations.

3. Quality Module Content

QAtrial has 15 quality modules, each with a small set of requirements and tests (typically 5 requirements and 2-3 tests per module). Modules can always benefit from deeper content — more specific requirements, additional tests, more precise regulatory references.

Where to start: MODULE_DEFINITIONS in src/templates/registry.ts

4. Language Translations

QAtrial has 12 complete translations (English, German, French, Spanish, Italian, Portuguese, Dutch, Japanese, Chinese Simplified, Korean, Hindi, Thai) with approximately 440 keys each. There are 23 additional locale directories prepared under public/locales/ waiting for translations.

Where to start: Copy public/locales/en/common.json to public/locales/{code}/common.json and translate all values.

Domain knowledge required: Fluency in the target language, plus familiarity with regulated industry terminology in that language.

Code knowledge required: None. Translation files are JSON.

5. AI Prompts

QAtrial has 6 AI prompt templates for test generation, risk classification, gap analysis, CAPA suggestions, executive brief, and requirement extraction. Contributors can improve existing prompts (better regulatory context, more precise output formatting) or add new prompt types.

Where to start: src/ai/prompts/

Skills required: Understanding of prompt engineering, regulatory domain knowledge, and familiarity with the AI response validation schema.

6. Dashboard Views, Report Types, Connector Implementations

For contributors comfortable with React and TypeScript, there are extension points for:

  • New dashboard views (adding a tab to the Evaluation dashboard)
  • New report types (adding a template to the report generator)
  • Connector implementations (building actual sync logic for the JIRA, Azure DevOps, GitHub, GitLab, Veeva Vault, MasterControl, TrackWise, SharePoint, or Confluence connectors — currently interface-only)

Where to start: src/components/dashboard/, src/components/reports/, src/connectors/

7. Documentation, Bug Reports, and Testing

Not every contribution requires writing code or templates:

  • Bug reports: File issues on GitHub with reproduction steps
  • Documentation: Improve the User Guide, Developer Guide, or API Reference
  • Testing: Write Vitest tests for existing functionality, improve test coverage

Avid Pro Tools Artist - Music Production Software - Perpetual License

Avid Pro Tools Artist – Music Production Software – Perpetual License

  • Download Card with Serial Key: Includes download instructions and activation key
  • End-to-End Audio Production: Supports all stages from idea to final mix
  • Non-Linear Composition Tools: Create with loops, MIDI, and recordings

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Local Setup

Prerequisites

  • Node.js 18.0 or later
  • npm 9.0 or later
  • Git

Clone, Install, Run

git clone https://github.com/MeyerThorsten/QAtrial.git
cd QAtrial
npm install
npm run dev

The development server starts at http://localhost:5173 with hot module replacement. Changes to source files are reflected immediately in the browser.

Available Scripts

ScriptPurpose
npm run devStart Vite dev server with HMR
npm run buildProduction build to dist/
npm run lintRun ESLint on source files
npm run testRun all tests with Vitest
npm run test:watchRun tests in watch mode
npm run test:coverageRun tests with coverage report

Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development

Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Where to Start If You Have Domain Knowledge (Not Code Skills)

Country templates and vertical templates are the best starting point for contributors with regulatory domain knowledge but limited front-end development experience.

These templates are TypeScript data files. They do not use React components, hooks, or state management. They export arrays of objects with string fields. If you can write JSON, you can write templates — the TypeScript syntax adds only type annotations.

Workflow for domain-focused contributors:

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Run npm install && npm run dev
  4. Find the appropriate directory:
  • Country: src/templates/regions/{cc}/base.ts
  • Vertical: src/templates/verticals/{id}/common.ts
  1. Create your template file following the patterns in existing templates
  2. Test through the setup wizard (select your country/vertical, check the preview)
  3. Add translation keys to public/locales/en/common.json
  4. Commit and push to your fork
  5. Open a pull request

You do not need to understand how the template composition system works internally. You just need to export a CountryTemplateSet or VerticalTemplateSet object with the right fields, and the system handles the rest.


Experiential Robotics Platform (XRP) - DIY Kit - Chassis Not Included - Beginner to Advanced STEM Robot - Print Your Own Chassis

Experiential Robotics Platform (XRP) – DIY Kit – Chassis Not Included – Beginner to Advanced STEM Robot – Print Your Own Chassis

  • Hardware Kit: Easy-to-assemble expandable robot platform
  • Programming Environment: Supports Blockly, Python, WPILib coding
  • Online Modules: Structured robotics learning with projects

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Where to Start If You Have Code Skills

For developers comfortable with React and TypeScript, QAtrial offers several areas for contribution:

Components: The application has 14 dashboard components, wizard components, requirement and test tables, AI panels, report generators, and audit trail views — all in src/components/. The component architecture follows standard React patterns with Zustand stores for state management.

Stores: QAtrial uses 14 Zustand stores for state management, persisted to localStorage. Adding a new feature often means adding a new store or extending an existing one.

AI prompts: The src/ai/prompts/ directory contains prompt templates that structure the input and validate the output of AI interactions. Improving prompts or adding new prompt types is a high-leverage area.

Dashboard views: Each dashboard tab is a component in src/components/dashboard/. Adding a new tab means creating a component and wiring it into the dashboard navigation.

Tech stack reference: React 19, TypeScript, Vite, Tailwind CSS 4, Zustand, TanStack Table v8, Recharts, react-i18next, Lucide React, Vitest.


Best First Contributions

If you are looking for a specific task to start with, these are the two most accessible:

A Country Template for Your Jurisdiction

If you live or work in a country that is in the QAtrial registry but does not have templates (23 of 37 countries), creating the template for your jurisdiction is an immediately useful contribution. You know the regulatory authorities, the key regulations, and the compliance expectations better than anyone.

A good first country template includes:

  • 5-10 base requirements covering the jurisdiction’s key regulatory expectations
  • 3-5 tests linked to those requirements via tags
  • Real regulatory references (statute names, regulation numbers, guidance document titles)
  • Appropriate risk levels (not everything is “critical”)

A Translation File for Your Language

If QAtrial is not available in your language but a locale directory exists under public/locales/, translating the approximately 440 keys from the English file is a self-contained, high-value contribution. The JSON structure is flat — no nested complexity. Each key has a clear English value that you translate.


How the Developer Guide Is Organized

The Developer Guide covers each extension type in a dedicated section:

  1. Development Setup — Prerequisites, clone/install/run, available scripts
  2. Adding a New Country — Base templates, registry, overlays, EU mapping, translations
  3. Adding a New Vertical — Common templates, registry, risk taxonomy, project-type packs, translations
  4. Adding a New Module — Module definitions, requirements, tests, translations
  5. Adding a New Language — Locale files, language selector, translation key reference
  6. Adding a New AI Prompt — Prompt structure, response validation, schema definition
  7. Adding AI Validators — JSON schema validation for AI responses
  8. Writing Connectors — Connector interface, field mapping, sync implementation
  9. Creating New Stores — Zustand store patterns, persistence, naming conventions
  10. Adding Dashboard Views — Component structure, data hooks, tab integration
  11. Adding Report Types — Report template structure, data collection, rendering
  12. Code Conventions — Naming, TypeScript patterns, file organization
  13. Test Infrastructure — Vitest setup, test patterns, coverage
  14. Testing Checklist — What to verify before submitting a pull request

Each section includes step-by-step instructions, code examples, and templates you can copy and modify.


The Template Composition System

Understanding how templates compose helps you write better ones.

When a user creates a project through the setup wizard, the template composer collects content from multiple sources:

  1. Country base templates — Jurisdiction-specific requirements and tests
  2. EU base templates — Loaded first for EU/EFTA countries
  3. Country-vertical overlays — Loaded if the country has an overlay for the selected vertical
  4. Vertical common templates — Domain-specific requirements and tests
  5. Vertical project-type templates — Loaded if the vertical has a template for the selected project type
  6. Module templates — Requirements and tests from each selected quality module

All sources are merged, and duplicates are removed using templateId matching (or title matching as a fallback). The result is a unified, non-redundant set of requirements and tests.

This means your country template automatically works with all verticals and modules. Your vertical template automatically works with all countries. You do not need to think about every possible combination — the composer handles it.


AGPL-3.0 Obligations

The AGPL-3.0 license has specific obligations that contributors and users should understand:

Using QAtrial internally is fine. If you run QAtrial within your organization — on a local machine, on an internal server, behind your firewall — you have no obligation to share your modifications. Internal use is not “conveying” or “providing as a service.”

Modifying and serving QAtrial requires sharing source. If you modify QAtrial and make it available over a network (for example, hosting a modified version as a SaaS product), you must make your modified source code available under the AGPL-3.0 license. This is the “network copyleft” provision that distinguishes AGPL from standard GPL.

Contributing back is voluntary (but encouraged). The license does not require you to submit your changes upstream to the QAtrial repository. But doing so benefits the community, ensures your changes are maintained alongside the main project, and avoids the burden of maintaining a private fork.


Final Takeaway

QAtrial is built to be extended. The architecture has clear extension points for countries, verticals, modules, languages, AI prompts, dashboard views, report types, and connectors. You do not need to be a front-end developer to contribute — the highest-impact contributions (country templates and translations) require domain knowledge and data entry skills, not React expertise.

The template composition system ensures that every contribution composes cleanly with every other contribution. A country template written today will work with a vertical template contributed next month. This composability is what makes community contributions so valuable — each addition multiplies the platform’s coverage.


  • Why Open Source — The rationale behind AGPL-3.0 licensing and community-driven development
  • How to Add a Country — Step-by-step guide for creating jurisdiction-specific templates
  • How to Add a Vertical — Step-by-step guide for creating industry domain templates

Clone the repo, run locally, and pick a contribution area. Visit github.com/MeyerThorsten/QAtrial, fork the repository, and run npm install && npm run dev. Browse the template directories to understand the patterns, then pick the contribution that matches your expertise: a country you know, a vertical you work in, or a language you speak. Open a pull request when it is ready.

You May Also Like

QAtrial Launches Enterprise-Ready Open-Source Quality Management Platform

FOR IMMEDIATE RELEASE April 2026 QAtrial v3.0.0 delivers Docker deployment, SSO, validation…

QAtrial 3.0: What Changed and Why It Matters

QAtrial v3.0 is the largest release since the project’s initial launch. It…

What We Just Built: QAtrial’s Enterprise Release

QAtrial started as three tables — requirements, tests, and an evaluation dashboard.…

Four Features That Change How Quality Teams Operate

Most quality management software tells you what happened. The latest QAtrial release…