SurveyJS

SurveyJS is a free and open source front-end web development library for web-based statistical survey applications written in JavaScript. The library supports several popular front-end frameworks, including Angular 2, jQuery, Knockout (web framework), React.js, Vue.js. As of January 2021 the library's codebase has been independently forked over 500 times and its react-flavored npm package has reached a volume of over 11,000 weekly downloads.

History
SurveyJS started out as a beta release open-source project, published on the collaborative version control site GitHub in August 2015. In April 2018 the project officially became production-ready. In the following month it was announced that the library has become available in the form of a free and open-source pugin for the WordPress content management system.

During the 8th Joint International Semantic Technology Conference, JIST 2018, held in Awaji, Japan, in November 2018, researchesrs from Fujitsu Ltd., presented their study on the topic of Practical use of Knowledge Graph with Case Studies using Semantic Web Publishing tools. To demonstrate their findings, they implemented a prototype using the SurveyJS library. The scientific paper documenting the implementation was later selected as one of only 6 papers out of 75 to be published in the peer-reviewed conference proceedings book.

In the 2020 book Re-imagining University Assessment in a Digital World, four professors from Deakin University discuss leveraging the SurveyJS library to build a 360-degree feedback tool for the needs of higher education.

Basic features
SurveyJS features a collection of standard input widgets, including text and numeric fields, drop-down list boxes, radio buttons, check boxes, rating fields and more. Additionally, the library can be extended with custom input widgets. Forms and surveys can be delivered eaither in on a single or multiple pages. Response validation can be enforced either through basic conditions, regex, or SurveyJS' own expression engine. The expression engine is based on PEG.js, an open source parsing expression grammar library. Expressions can be used for input validation, conditional display rules for pages and questions, calculated field values, and survey flow. There are several features which enable surveys to run in the form of quizzes or exams. Most notably the question order can be randomized and there are optional time limits per page or quiz. Survey questions can be optionally translated in up to 40 different languages. SurveyJS will automatically display the language, which matches the web client's locale.

Extensibility
SurveyJS includes an API, which allows the library to be extended in several ways:
 * Custom data fields can be added to the question, page, and survey data models
 * User-defined question types and input widgets can be added
 * Custom functions can be registered with SurveyJS' expression engine

Data format and multimedia storage
Both the survey definitions and the user responses are formatted as JSON documents. Image or video based questions are available out-of-the-box. Additionally there is a widget, which allows respondents to upload files and submit them with the rest of the answers. In both cases images and documents are being stored within the JSON documents in the form of Base64 strings.

Related Software
The original authors of the library, Devsoft Baltic, offer a suite of paid products, which complement the functionalities of the SurveyJS library. Those include a WYSIWYG survey editor application, a data analytics application, and a SaaS platform for survey delivery and response collection.