Open source survey and reporting platform

Hello,

I’ve written a survey and reporting platform with Anvil. I will soon be releasing it as an open source project on GitHub.

I’d like to thank @stucork for his killer CSS and JS assistance, as well as his augment library. There were some tough obstacles that I wouldn’t have overcome without his help. I’d also like to thank @p.colbert and @shaun for some early discussions.

Survey features

Design surveys in the survey IDE

Choose from several question types

Write conditional statements to control branching

Distribute the survey by sharing its unique URL

Reporting features

Load one or more datasets

Write markdown

Design visualizations with vega-lite (the JSON editor includes error checking and validation, and much more)

Download your interactive reports

15 Likes

Wow! As a G-Suite school we use Google Forms for our survey platform. We do our course evaluations through it and then compile the results Sheets to a master. Are there specific reasons why you think would be better, especially since you work in education space?

2 Likes

This looks awesome, @alcampopiano! I can’t wait to see it open-sourced :slight_smile:

(I hope you’ll be blogging/posting somewhere about it!)

3 Likes

@robert I wouldn’t say that my software is better than other survey platforms :slight_smile: . The impetus for the project was hearing too many times, “I wish <insert survey platform here> could do X”, so I built something I could control and would be free and open source.

I want to provide something that is attractive to developers (even if it is not attractive to non-technical folks). Two examples:

  • Every survey is represented by a JSON specification and can therefore be modified programmatically. The following JSON represents a short survey with branching logic based on a dropdown selection:

    • click to expand JSON
        {
          "title": "simple survey",
          "widgets": [
            {
              "id": 0,
              "type": "section",
              "logic": null,
              "title": "my first section",
              "widgets": [
                {
                  "id": 2,
                  "type": "text_box",
                  "logic": null,
                  "title": "What is your name?",
                  "number": false,
                  "mandatory": true,
                  "placeholder": "type name here"
                },
                {
                  "id": 3,
                  "type": "drop_down",
                  "logic": null,
                  "title": "Select your school",
                  "options": "school 1\nschool 2\nschool 3",
                  "mandatory": false,
                  "placeholder": "click here to choose schools"
                }
              ]
            },
            {
              "id": 4,
              "type": "section",
              "logic": {
                "func": "any",
                "conditions": [
                  {
                    "id": 3,
                    "title": "Select your school",
                    "value": "school 2",
                    "comparison": "="
                  }
                ]
              },
              "title": "A section that shows if school 2 was selected",
              "widgets": [
                {
                  "id": 5,
                  "type": "check_box",
                  "logic": null,
                  "title": "What is your favourite thing about school 2?",
                  "options": "teachers\nprincipal\nrecess"
                }
              ]
            }
          ],
          "num_widgets": 6
        }
      

  • I have found that rich text and native charting are often not very flexible in most survey platforms. To address this, Markdown and Vega-lite blocks are provided.
1 Like

Thank you very much! I plan on publishing in JOSS (with @stucork as a co-author).

1 Like

Cool! I really like this because you could easily build an automated workflow for a persistent case like course evaluation. All the hard work has been done. Thank you!

1 Like

This is fantastic @alcampopiano!

1 Like

Any update on when you will release this? I was thinking of building some similar functionality but would hate to reinvent the wheel. Thanks!

1 Like

Hi there. I’m pursuing publication for this project. The review process may take a few months once I’ve submitted the software/paper; however, the project is technically available on my github page and pypi right now (and includes fairly complete documentation).

1 Like

Thanks so much!

Is it easy to provide a clone link? Otherwise I can make do, of course.

I know it is a bit of an inconvenience but I think I like the idea of folks getting it from github and/or pypi for now.

1 Like

I love what you’ve built @campopianoa, but I have noob question for you. I was able to clone your code from GitHub, but I was curious if it was possible to import it back into Anvil to see how you went about building it. As mentioned, I am very new to Anvil and would be interested to see how you set up your forms, etc.

Again, awesome work!

Hi there and welcome.

Thanks for the kind words. I don’t think that is a noob question.

See the steps below which explain how to import from git.

1 Like

Thanks @campopianoa. I was able to get it into Anvil, but can you elaborate on what you mean regarding “data table problem”? The app obviously didnt come through with any Data Tables, which I tried my best to add back in based on the anvil.yaml. I keep coming up with the following error “anvil.server.RuntimeUnavailableError: Server resources not available for ‘python3-full’. Please contact support@anvil.works.
at landing.select_action_survey, line 21
called from start_up, line 20”

Not sure if this is all related. Thanks in advance.

1 Like

4 posts were split to a new topic: SurveyJS + Anvil

What you’ve built is amazing! You can check out this blog on enterprise survey platform for insight into some additional gamification features that can make surveys more interactive and responsive.

2 Likes