
포뮬러는 전통적인 설문 조사 빌더 대신 코드를 사용하여 설문 조사를 구축하고 배포하기위한 자체 주최 앱입니다.
이 접근법은 다음을 포함하여 여러 가지 장점을 제공합니다.
포뮬러는 인간으로 읽을 수있는 선언적 언어를 사용합니다.

관리자 패널
참고 : 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를 사용하여 Survey Resposnes를 얻을 수 있습니다.
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 Connection StringLOG_LEVEL 로그 레벨, 예를 들어 infoSURVEYS_DIR 설문 조사가있는 디렉토리, 예 : /root/surveys . 이 디렉토리에는 장착 볼륨을 사용하는 것이 좋습니다.UI :
CONSOLE_API_ADDR go 백엔드의 공개 주소. 브라우저에서 액세스 할 수 있어야합니다.CONSOLE_API_ADDR_INTERNAL go backend의 내부 주소, 예를 들어 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
요청, 버그 보고서 및 기타 모든 형태의 기여도를 환영하고 강력히 권장합니다!