
A Formulosidade é um aplicativo auto-hospedado para construir e implantar as pesquisas usando código em vez de construtores de pesquisas tradicionais.
Esta abordagem oferece várias vantagens, incluindo:
A formuloidade usa a linguagem declarativa legível pelo homem YAML.

Painel de Administração
Nota: Use user / pass para fazer login na interface do usuário do console.
Cada diretório em SURVEYS_DIR é uma pesquisa. Você pode configurar a fonte de suas pesquisas definindo diferentes SURVEYS_DIR Env var.
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ... Para começar, consulte a pasta ./surveys com vários exemplos.
Este arquivo é necessário! O arquivo consiste em um objeto YAML com propriedades específicas que descrevem a pesquisa.
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.Este arquivo é necessário! O arquivo consiste em uma lista de perguntas, cada uma definida como um objeto YAML com propriedades específicas.
single-choice , multiple-choice e 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 : 3Este arquivo é opcional. O arquivo consiste em um objeto YAML com propriedades específicas para as configurações de segurança da pesquisa.
duplicateProtection : cookie # cookie | ipEste arquivo é opcional. O arquivo consiste em uma lista de variáveis, cada uma definida como um objeto YAML com propriedades específicas.
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne Solicita aos usuários uma breve resposta por escrito.
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Solicita aos usuários uma resposta escrita detalhada.
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Apresenta uma pergunta com apenas uma resposta correta de uma lista de opções.
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- CologneApresenta uma pergunta em que os usuários podem selecionar várias respostas (com limitações). Você pode personalizar as seleções mínimas e máximas permitidas na seção de validação.
- 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
- ColognePede aos usuários que digitem uma data específica.
- type : date
label : When was the Berlin Wall built?Apresenta uma escala para os usuários classificarem algo em um intervalo predefinido.
- type : rating
label : How much do you like Berlin?
min : 1
max : 5Pede aos usuários que classifiquem as opções com base em um determinado critério.
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-optionsApresenta uma pergunta em que os usuários só podem responder "sim" ou "não".
- type : yes-no
label : Is Berlin the capital of Germany?Leva o usuário a inserir seu e -mail
- type : email
label : Please enter your email.Solicita que o usuário envie seu arquivo com base em um determinado formato e tamanho máximo de upload.
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB As respostas podem ser mostradas na interface do usuário e exportadas como um JSON. Como alternativa, você pode usar a API REST para obter respostas de pesquisa:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc Onde {SURVEY_ID} id a UUID de uma determinada pesquisa.


docker-compose up -d --build
E você deve acessar a interface do usuário em http: // localhost: 3000 (autenticação básica padrão: user:pass ).
Você pode implantar serviços individuais em qualquer provedor de nuvem ou hospedá -los.
O serviço de demonstração (links acima) é implantado para voar.io (go, sqlite) e vercel (next.js) e estão sob as camadas gratuitas.
Instale o ar localmente a partir daqui
Execute o seguinte comando após a instalação do ar
cd api
air
Este comando ajudará a recarregar ao vivo sempre que as alterações forem feitas nas APIs usando air . Configurações personalizadas podem ser definidas modificando o arquivo air.toml
API:
DATABASE_TYPE - sqlite ou postgresDATABASE_URL - string de conexão PostGres ou SQLiteLOG_LEVEL - nível de log, por exemplo, infoSURVEYS_DIR - Diretório com pesquisas, por exemplo /root/surveys . Sugeriu -se usar volume montado para este diretório.UI:
CONSOLE_API_ADDR - endereço público do back -end. Precisa estar acessível no navegador.CONSOLE_API_ADDR_INTERNAL - endereço interno do back -end, por exemplo, http://api:8080 (pode ser o mesmo que CONSOLE_API_ADDR ).IRON_SESSION_SECRET - segredo para criptografia de sessãoHTTP_BASIC_AUTH - formato: user:pass para Auth Basic (Opcional) Certifique-se de instalar o Go-Migrar primeiro.
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
Puxe solicitações, relatórios de bugs e todas as outras formas de contribuição são bem -vindas e altamente encorajadas!