MiniSurvey

You can use Git to clone the repository via the web URL. Download snapshot (zip)
 
descriptionCompact web application to run small anonymous surveys.
websitehttps://fietkau.software/minisurvey
last changeSat, 15 Oct 2022 23:46:06 +0000 (01:46 +0200)
shortlog
2022-10-15 Julian FietkauFix wrong quotation mark in English footer text main
2022-10-15 Julian FietkauAdd short text answers to template too
2022-10-15 Julian FietkauAdd short text answers to result output
2022-10-15 Julian FietkauInitial public release
readme

MiniSurvey

MiniSurvey is a small web application to run simple anonymous surveys. It has been tested for, and is geared towards, student evaluations.

With the included PHP script, you can run one survey at a time. The survey is configured through a JSON file and may contain scalar as well as open questions. The PHP script saves the answers to a data file using SQLite. The included Python script reads the data file and compiles a statistical overview.

Keep in mind that this software is designed for small-scale non-public surveys. It takes reasonable measures to ensure reliability during normal use, but is not equipped to handle adversarial clients. It is written to be small and easy to modify.

Project website: https://fietkau.software/minisurvey

Requirements

The web-hosted survey script requires PHP 5.4 with the SQLite module. The data subdirectory has to be writable by the PHP process.

The result script requires a reasonably recent Python 3 along with the Jinja2 and Jinja2-Markdown modules.

Usage

Edit a copy of example.json to specify your survey questions. Most fields are probably self-explanatory. language can be en or de, introduction is shown on the wurvey whereas description is used for the results summary, preconditions is a list of statements that the user will need to check off to be allowed to submit the survey. Each question can be of the type likert, text short or text long. Likert-scale answers are provided as a list, for which up to 5 is the recommended length.

When your survey specification is complete, upload index.php, the data subdirectory and your JSON file (the name will be considered the survey's ID) to your web server. Make sure the data subdirectory is writable by the PHP process, but also configure your server to ensure that it is not accessible publically. Your survey is now open. You can test it if you want. Delete the *.sqlite file from the data subdirectory at any time if you need to reset the answer database. Make sure you share the link only with the target audience. This software has no protections against adversarial clients and should not be used for public surveys.

When your survey is finished, grab the *.sqlite file from the data subdirectory. (The answers are also logged to a *.txt file as a backup in case something goes wrong with SQLite. The backup file may be deleted as soon as you are sure that you don't need it.) On your local machine, you can call the result.py and give it the paths to your JSON survey specification and your answers database file, and it will output a statistical summary of the answers formatted as HTML.

License

MiniSurvey (c) 2021-2022 Julian Fietkau

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for details.