{"id":13554312,"url":"https://github.com/chrisrzhou/surveyless","last_synced_at":"2025-04-19T14:23:04.409Z","repository":{"id":33396235,"uuid":"158061757","full_name":"chrisrzhou/surveyless","owner":"chrisrzhou","description":"Build, run, and analyze simple serverless surveys","archived":false,"fork":false,"pushed_at":"2023-01-11T18:46:51.000Z","size":1447,"stargazers_count":14,"open_issues_count":19,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-13T03:42:16.938Z","etag":null,"topics":["gatsby","io","jamstack","markdown","react","redux","serverless","survey"],"latest_commit_sha":null,"homepage":"https://surveyless.netlify.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrisrzhou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-18T07:57:07.000Z","updated_at":"2023-05-12T16:52:58.000Z","dependencies_parsed_at":"2023-01-15T00:45:31.870Z","dependency_job_id":null,"html_url":"https://github.com/chrisrzhou/surveyless","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisrzhou%2Fsurveyless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisrzhou%2Fsurveyless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisrzhou%2Fsurveyless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisrzhou%2Fsurveyless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrisrzhou","download_url":"https://codeload.github.com/chrisrzhou/surveyless/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249711531,"owners_count":21314260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gatsby","io","jamstack","markdown","react","redux","serverless","survey"],"created_at":"2024-08-01T12:02:44.753Z","updated_at":"2025-04-19T14:23:04.382Z","avatar_url":"https://github.com/chrisrzhou.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","markdown"],"sub_categories":[],"readme":"---\ntitle: surveyless\nsubtitle: Build, run, and analyze simple serverless surveys\nmode: OPEN\n---\n\n# 📝 [WORK IN PROGRESS] surveyless\n\nBuild, run, and analyze simple serverless surveys.\n\nLess servers, databases, keys, signups, accounts, ads, complexity, and headaches 🤦‍\n\n![MIT License](https://flat.badgen.net/badge/license/mit/blue)\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/chrisrzhou/surveyless)\n\n## Features\n\n- ⚛️ JAMStack + modern web tools power a fully automated survey platform.\n- 👌 Zero-config and simple to get started.\n- 📝 Manage expressive survey content and questions in markdown.\n- 💅 Easy UI customizations using a `theme.json` config file.\n- 👯‍ Clone and easily recreate new surveys with consistent setup.\n- 📊 Visualize survey results instantly after responses are collected.\n- 🔐 Simple security model.\n\n## Why JAMStack + Serverless?\n\n### Third-party solutions\n\nSurveys are an important way to analyze sentiment about brands or events. Existing survey platforms (such as Survey Monkey, Qualtrics) provide various survey tools and solutions. However, these offerings come at a cost, and are usually bloated with superfluous features. They are difficult to customize, and do not provide expressive ways to create survey content. Running surveys on these third-party servers can also be unreliable and expensive.\n\n### Blazing fast deployment on CDN\n\n`surveyless` is a [JAMStack](https://jamstack.org/) application that runs serverless surveys on CDNs. Survey responses are managed by automated pull requests to the `/responses` branch of the Git repo. Closing a survey involves merging the `/responses` into the `/master` branch. This triggers a rebuild of the site, and results can then be analyzed immediately.\n\n### Delightful developer experience\n\nMarkdown is a natural medium for creating rich content (this page is created with simple markdown!). Develop and preview content and code changes with hot-reloading. When code changes are committed, it will trigger a rebuild of the site and deploy changes to CDNs. The `theme.json` file provides ample ways to customize your survey for your brand. You can easily duplicate future surveys by cloning a copy of a well-maintained `surveyless` repo, which preserves the content and customizations of the original survey setup.\n\n### Simple security model\n\n`surveyless` has no hackable databases/servers/keys components. We do not store any user-sensitive information in survey responses. For open surveys, simply run your surveys with confidence. If you would like to keep the survey content and responses private, you can achieve this by simply making your Git repo private.\n\n## Survey Setup\n\nFor a detailed guide, please refer to the [/docs](./docs).\n\n1. Click the `Deploy to Netlify` button to deploy an instance of `surveyless` on Netlify and Github.\n2. To develop,\n\n```bash\ngit clone git@github.com:{USERNAME}/{SURVEYLESS_INSTANCE_NAME}.git  # clone repo\ncd {SURVEYLESS_INSTANCE_NAME}\nyarn  # install dependencies\nyarn dev  # starts gatsby development survey\n```\n\n3. Edit `README.md` file to update the landing page survey content.\n4. Edit relevant content in `/survey` folder (e.g. `thankyou.md` and `/survey/questions` markdown file)\n5. Test the survey changes in `localhost`.\n6. `git commit` and `git push` to apply changes to production.\n\n## Question Types and Choice Sets\n\nFor a detailed guide, please refer to the [/docs](./docs).\n\nThe following question types and respective choice sets are supported:\n\n- Likert:\n  - Rating\n  - Radio\n  - Button\n- Single-choice\n  - Radio\n  - Button\n- Multi-choice\n  - Button\n  - Checkbox\n- Ranking\n  - Button\n- Matrix (can be collection of single-choice or multi-choice question types)\n  - Rating\n  - Radio\n  - Button\n  - Checkbox\n- Slider\n  - No choice type\n- Comment\n  - No choice type\n\nAll questions can be accompanied by an optional `additionalComments` section where open-ended comments can be captured for the question, in addition to the choice sets provided.\n\n## Customizations\n\nChange your brand logo by attaching a new PNG logo in `/static/logo.png`.\n\nUse the `/survey/theme.json` file to customize the UI appearance of your survey. Avoid deleting any entries in the `theme.json` file.\n\n- Edit the `colors` field to customize unified UI colors.\n- Edit the `typography` customize font properties. Google fonts are supported (restarting the devserver is required for this).\n- Edit the `space` field to customize spacing properties in the UI.\n\n## Markdown Assets\n\nTo include and use assets in your markdown, upload images and other assets into the `/static` folder, and refer to them with the following path syntax `/static/images/logo.png`. It is **important** to refer to markdown assets using an absolute path instead of a relative path.\n\n## Survey Lifecycle\n\nTODO: will be updated\n\n### Launch\n\n### Close\n\n### Analyze\n\n## Inspirations\n\n`surveyless` is **heavily inspired** by [`mdx-deck`](https://github.com/jxnblk/mdx-deck), which is a simple but powerful library to build presentation slides in markdown.\n\nIn addition, the `surveyless` mechanics would be non-functional without the great developer tools and experiences built by [Gatsby](https://gatsbyjs.org/) and [Netlify](https://www.netlify.com/).\n\n## TODO\n\n- work on comment, slider, ranking and matrix questions\n- hotkey for continue + add hotkey helper icon/modal\n- go over questions content to make sure it reads/flows well\n- build out /docs folder showcasing examples and detailed guide on question types and other APIs\n- netlify-functions to submit response (figure out generating uuids and simple auth with JWT)\n- theme editor\n- results page\n- responses should work off the `/responses` github branch\n- STRETCH: tooling to detect malformed markdown/frontmatter, missing/duplicated question Ids. If the content of `/survey` folder has changed, reset the localstorage (or create a button that hard resets localstorage in DRAFT mode)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisrzhou%2Fsurveyless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrisrzhou%2Fsurveyless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisrzhou%2Fsurveyless/lists"}