
配方是一个自托管应用程序,用于使用代码而不是传统的调查构建者来构建和部署调查。
这种方法提供了许多优势,包括:
配方使用人类可读的声明语言yaml。

管理面板
注意:使用user / pass登录到控制台UI。
SURVEYS_DIR中的每个目录都是一项调查。您可以通过设置不同的SURVEYS_DIR ENV VAR配置调查源。
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ...首先,请查看带有多个示例的./surveys文件夹。
此文件是必需的!该文件由一个YAML对象组成,具有描述调查的特定属性。
title : Survey Title
theme : default # or custom
intro : |
This is the introduction to the survey.
It can be multiple lines long.
outro : |
Thank you for taking the survey.
Your feedback is important to us.此文件是必需的!该文件由一个问题列表组成,每个列表定义为具有特定属性的YAML对象。
single-choice , multiple-choice和ranking问题类型的可用答案选择。 questions :
- type : single-choice
id : question1 # optional ID, must be unique across all questions
label : What is the capital of Germany?
description : You can select multiple options
optionsFromVariable : german-city-options # defined in variables.yaml
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologne
validation :
min : 1
max : 3该文件是可选的。该文件由具有调查安全设置的特定属性的YAML对象组成。
duplicateProtection : cookie # cookie | ip该文件是可选的。该文件由变量列表组成,每个变量列表定义为具有特定属性的YAML对象。
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne 提示用户提供简短的书面答案。
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100提示用户获取详细的书面答案。
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100提出一个问题,只有一个正确的答案从选项列表中提出。
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologne提出一个问题,用户可以在其中选择多个答案(具有限制)。您可以在验证部分中自定义最小和最大允许的选择。
- type : multiple-choice
label : Which of the following are cities in Germany?
description : You can select multiple options
validation :
min : 1
max : 3
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- Cologne要求用户输入特定日期。
- type : date
label : When was the Berlin Wall built?为用户提供了一个规模,以便在预定义的范围内对某些内容进行评分。
- type : rating
label : How much do you like Berlin?
min : 1
max : 5要求用户根据给定的标准对选项进行排名。
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-options提出一个问题,用户只能回答“是”或“否”。
- type : yes-no
label : Is Berlin the capital of Germany?提示用户输入他们的电子邮件
- type : email
label : Please enter your email.提示用户根据给定格式和最大上传大小上传文件。
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB 响应可以在UI中显示,并以JSON的形式导出。另外,您可以使用REST API获得调查响应:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc其中{SURVEY_ID} ID给定调查的UUID。


docker-compose up -d --build
您应该能够在http:// localhost:3000上访问UI(默认基本验证: user:pass )。
您可以将单个服务部署到任何云提供商或自我托管。
演示服务(上面的链接)被部署为Fly.io(GO,sqlite)和Vercel(Next.js),并在免费层下。
从这里安装本地空气
安装空气后运行以下命令
cd api
air
每当使用air在API中进行更改时,此命令将有助于实时重新加载。可以通过修改air.toml文件来设置自定义配置
API:
DATABASE_TYPE sqlite或postgresDATABASE_URL Postgres或Sqlite连接字符串LOG_LEVEL日志级别,例如infoSURVEYS_DIR带有调查的目录,例如/root/surveys 。建议将安装卷用于此目录。ui:
CONSOLE_API_ADDR GO后端的公共地址。需要从浏览器访问。CONSOLE_API_ADDR_INTERNAL go后端的内部地址,例如http://api:8080 (可能与CONSOLE_API_ADDR相同)。IRON_SESSION_SECRET会话加密的秘密HTTP_BASIC_AUTH格式: user:pass 确保首先安装移民。
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
欢迎拉扯请求,错误报告和所有其他形式的贡献。