
配方是一個自託管應用程序,用於使用代碼而不是傳統的調查構建者來構建和部署調查。
這種方法提供了許多優勢,包括:
配方使用人類可讀的聲明語言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
歡迎拉扯請求,錯誤報告和所有其他形式的貢獻。