
Die Formuosität ist eine selbst gehostete App zum Erstellen und Bereitstellen der Umfragen mithilfe von Code anstelle herkömmlicher Umfrageberäer.
Dieser Ansatz bietet eine Reihe von Vorteilen, darunter:
Die Formuosität verwendet die menschlich-lesbare deklarative Sprache Yaml.

Admin -Panel
HINWEIS: Verwenden Sie user / pass , um sich in der Konsolen -Benutzeroberfläche anzumelden.
Jedes Verzeichnis in SURVEYS_DIR ist eine Umfrage. Sie können die Quelle Ihrer Umfragen konfigurieren, indem Sie unterschiedliche SURVEYS_DIR einstellen.
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ... Schauen Sie sich den Ordner ./surveys mit mehreren Beispielen an.
Diese Datei ist erforderlich! Die Datei besteht aus einem YAML -Objekt mit bestimmten Eigenschaften, die die Umfrage beschreiben.
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.Diese Datei ist erforderlich! Die Datei besteht aus einer Liste von Fragen, die jeweils als YAML -Objekt mit bestimmten Eigenschaften definiert sind.
single-choice , multiple-choice und 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 : 3Diese Datei ist optional. Die Datei besteht aus einem YAML -Objekt mit spezifischen Eigenschaften für Sicherheitseinstellungen für Umfragen.
duplicateProtection : cookie # cookie | ipDiese Datei ist optional. Die Datei besteht aus einer Liste von Variablen, die jeweils als YAML -Objekt mit bestimmten Eigenschaften definiert sind.
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne Fordert Benutzer auf eine kurze schriftliche Antwort auf.
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Fordert Benutzer auf eine detaillierte schriftliche Antwort auf.
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Stellt eine Frage mit nur einer korrekten Antwort aus einer Liste von Optionen.
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- CologneStellt eine Frage auf, bei der Benutzer mehrere Antworten auswählen können (mit Einschränkungen). Sie können die minimale und maximal zulässige Auswahl im Validierungsabschnitt anpassen.
- 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
- CologneBitten die Benutzer, ein bestimmtes Datum einzugeben.
- type : date
label : When was the Berlin Wall built?Präsentiert eine Skala für Benutzer, um etwas auf einem vordefinierten Bereich zu bewerten.
- type : rating
label : How much do you like Berlin?
min : 1
max : 5Bitten die Benutzer, Optionen basierend auf einem bestimmten Kriterien zu bewerten.
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-optionsStellt eine Frage, bei der Benutzer nur "Ja" oder "Nein" beantworten können.
- type : yes-no
label : Is Berlin the capital of Germany?Fordert den Benutzer auf, ihre E -Mail einzugeben
- type : email
label : Please enter your email.Fordert den Benutzer auf, ihre Datei basierend auf einem bestimmten Formaten und einer maximalen Uploadgröße hochzuladen.
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB Antworten können in der Benutzeroberfläche angezeigt und als JSON exportiert werden. Alternativ können Sie REST -API verwenden, um die Umfrage zu erhalten: Resposnes:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc Wobei {SURVEY_ID} id die UUID einer bestimmten Umfrage.


docker-compose up -d --build
Und Sie sollten in der Lage sein, auf die Benutzeroberfläche auf http: // localhost: 3000 (Standard Basic AUTH: user:pass ) zugreifen zu können.
Sie können individuelle Dienste für jeden Cloud -Anbieter bereitstellen oder sie selbst hosten.
Der Demo -Dienst (Links oben) wird in Fly.io (Go, SQLite) und Vercel (Next.js) bereitgestellt und befindet sich unter den freien Ebenen.
Installieren Sie Luft vor Ort von hier aus
Führen Sie den folgenden Befehl nach der Luftinstallation aus
cd api
air
Dieser Befehl hilft beim Live -Nachladen, wenn Änderungen in der API mit air vorgenommen werden. Benutzerdefinierte Konfigurationen können durch Ändern von air.toml -Datei festgelegt werden
API:
DATABASE_TYPE - sqlite oder postgresDATABASE_URL - Postgres oder SQLite -VerbindungszeichenfolgeLOG_LEVEL - Protokollebene, zB infoSURVEYS_DIR - Verzeichnis mit Umfragen, z /root/surveys . Es wird empfohlen, das montierte Volumen für dieses Verzeichnis zu verwenden.UI:
CONSOLE_API_ADDR - öffentliche Adresse des Go -Backends. Müssen vom Browser aus zugänglich sein.CONSOLE_API_ADDR_INTERNAL CONSOLE_API_ADDR interne Adresse des Go -Backends, http://api:8080 .IRON_SESSION_SECRET - Geheimnis für die SitzungsverschlüsselungHTTP_BASIC_AUTH - Format: user:pass für BASIC AUTH (optional) Stellen Sie sicher, dass Sie zuerst GO-Migrate installieren.
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
Ziehen Sie Anfragen, Fehlerberichte und alle anderen Beitragsformen begrüßt und sehr gefördert!