
La formulation est une application auto-hébergée pour construire et déployer les enquêtes en utilisant du code au lieu des constructeurs d'enquête traditionnels.
Cette approche offre un certain nombre d'avantages, notamment:
La formulation utilise le langage déclaratif lisible par l'homme YAML.

Panneau d'administration
Remarque: Utilisez user / pass pour vous connecter dans l'interface utilisateur de la console.
Chaque répertoire de SURVEYS_DIR est une enquête. Vous pouvez configurer la source de vos enquêtes en définissant différentes SURVEYS_DIR Env var.
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ... Pour commencer, consultez le dossier ./surveys avec plusieurs exemples.
Ce fichier est requis! Le fichier se compose d'un objet YAML avec des propriétés spécifiques décrivant l'enquête.
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.Ce fichier est requis! Le fichier se compose d'une liste de questions, chacune définie comme un objet YAML avec des propriétés spécifiques.
single-choice , multiple-choice et 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 : 3Ce fichier est facultatif. Le fichier se compose d'un objet YAML avec des propriétés spécifiques pour les paramètres de sécurité de l'enquête.
duplicateProtection : cookie # cookie | ipCe fichier est facultatif. Le fichier se compose d'une liste de variables, chacune définie comme un objet YAML avec des propriétés spécifiques.
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne Invite les utilisateurs à une brève réponse écrite.
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Invite les utilisateurs à une réponse écrite détaillée.
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Présente une question avec une seule réponse correcte d'une liste d'options.
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- ColognePrésente une question où les utilisateurs peuvent sélectionner plusieurs réponses (avec des limitations). Vous pouvez personnaliser les sélections minimales et maximales autorisées dans la section de validation.
- 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
- CologneDemande aux utilisateurs de saisir une date spécifique.
- type : date
label : When was the Berlin Wall built?Présente une échelle pour les utilisateurs pour évaluer quelque chose sur une plage prédéfinie.
- type : rating
label : How much do you like Berlin?
min : 1
max : 5Demande aux utilisateurs de classer les options en fonction d'un critère donné.
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-optionsPose une question où les utilisateurs ne peuvent répondre que "oui" ou "non".
- type : yes-no
label : Is Berlin the capital of Germany?Invite l'utilisateur à saisir son e-mail
- type : email
label : Please enter your email.Invite l'utilisateur à télécharger son fichier en fonction d'un format donné et d'une taille de téléchargement maximale.
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB Les réponses peuvent être montrées dans l'interface utilisateur et exportées en JSON. Vous pouvez également utiliser l'API REST pour obtenir des resserrettes enquête:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc Où {SURVEY_ID} id le UUID d'une enquête donnée.


docker-compose up -d --build
Et vous devriez pouvoir accéder à l'interface utilisateur sur http: // localhost: 3000 (par défaut Auth Basic: user:pass ).
Vous pouvez déployer des services individuels sur n'importe quel fournisseur de cloud ou l'auto-héberger.
Le service de démonstration (liens ci-dessus) est déployé sur fly.io (go, sqlite) et vercel (next.js) et sont sous les niveaux gratuits.
Installez l'air localement à partir d'ici
Exécutez la commande suivante après l'installation aérienne
cd api
air
Cette commande aidera à recharger en direct chaque fois que les modifications sont effectuées dans les API à l'aide air . Les configurations personnalisées peuvent être définies en modifiant le fichier air.toml
API:
DATABASE_TYPE - sqlite ou postgresDATABASE_URL - chaîne de connexion postgres ou sqliteLOG_LEVEL - Niveau de journal, par exemple infoSURVEYS_DIR - Répertoire avec enquêtes, par exemple /root/surveys . Il est suggéré d'utiliser un volume monté pour ce répertoire.Ui:
CONSOLE_API_ADDR - Adresse publique du backend GO. Besoin d'être accessible depuis le navigateur.CONSOLE_API_ADDR_INTERNAL - Adresse interne du backend GO, par exemple http://api:8080 (pourrait être la même que CONSOLE_API_ADDR ).IRON_SESSION_SECRET - Secret pour le cryptage de sessionHTTP_BASIC_AUTH - FORMAT: user:pass pour Basic Auth (Facultatif) Assurez-vous d'installer d'abord go-migrater.
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
Les demandes de traction, les rapports de bogues et toutes les autres formes de contribution sont les bienvenues et très encouragées!