
Formulosityは、従来の調査ビルダーの代わりにコードを使用して調査を構築および展開するための自己ホストアプリです。
このアプローチには、以下を含む多くの利点があります。
Formulosityは、人間の読み取り可能な宣言言語YAMLを使用します。

管理パネル
注: user / passを使用して、コンソールUIにログインします。
SURVEYS_DIRの各ディレクトリは調査です。 SURVEYS_DIRな調査を設定することにより、調査のソースを構成できます。
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オプションのリストから1つの正解のみで質問を提示します。
- 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}特定の調査のuuidをidにします。


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調査、eg /root/surveysを備えたディレクトリ。このディレクトリにマウントボリュームを使用することをお勧めします。UI:
CONSOLE_API_ADDR Go Backendのパブリックアドレス。ブラウザからアクセスできる必要があります。CONSOLE_API_ADDR_INTERNAL go backendの内部アドレス、例http://api:8080 ( CONSOLE_API_ADDRと同じ可能性があります)。IRON_SESSION_SECRETセッション暗号化の秘密HTTP_BASIC_AUTH -format: 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
リクエスト、バグレポート、およびその他のすべての形式の貢献が歓迎され、強く奨励されています!