
Formulositas adalah aplikasi yang diselenggarakan sendiri untuk membangun dan menggunakan survei menggunakan kode alih-alih pembangun survei tradisional.
Pendekatan ini menawarkan sejumlah keuntungan, termasuk:
Formulositas menggunakan bahasa deklaratif yang dapat dibaca manusia YAML.

Panel Admin
Catatan: Gunakan user / pass untuk masuk ke UI konsol.
Setiap direktori di SURVEYS_DIR adalah survei. Anda dapat mengonfigurasi sumber survei Anda dengan mengatur berbagai SURVEYS_DIR Env Var.
surveys/
├── survey1/
│ ├── metadata.yaml
│ ├── questions.yaml
│ ├── security.yaml
│ ├── variables.yaml
│ └── ...
└── survey2/
├── metadata.yaml
├── questions.yaml
└── ... Untuk memulai, lihat folder ./surveys dengan beberapa contoh.
File ini diperlukan! File ini terdiri dari objek YAML dengan properti spesifik yang menggambarkan survei.
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.File ini diperlukan! File ini terdiri dari daftar pertanyaan, masing -masing didefinisikan sebagai objek YAML dengan properti spesifik.
single-choice , multiple-choice dan 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 : 3File ini opsional. File ini terdiri dari objek YAML dengan properti spesifik untuk pengaturan keamanan survei.
duplicateProtection : cookie # cookie | ipFile ini opsional. File ini terdiri dari daftar variabel, masing -masing didefinisikan sebagai objek YAML dengan properti spesifik.
variables :
- id : german-city-options # must be unique
type : list
options :
- Berlin
- Munich
- Hamburg
- Cologne Meminta pengguna untuk jawaban tertulis singkat.
- type : short-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Meminta pengguna untuk jawaban tertulis yang terperinci.
- type : long-text
label : What is the capital of Germany?
# set min/max characters
validation :
min : 10
max : 100Menyajikan pertanyaan dengan hanya satu jawaban yang benar dari daftar opsi.
- type : single-choice
label : What is the capital of Germany?
options :
- Berlin
- Munich
- Paris
- London
- Hamburg
- CologneMenyajikan pertanyaan di mana pengguna dapat memilih beberapa jawaban (dengan batasan). Anda dapat menyesuaikan pilihan minimum dan maksimum yang diizinkan di bagian validasi.
- 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
- CologneMeminta pengguna untuk memasukkan tanggal tertentu.
- type : date
label : When was the Berlin Wall built?Menyajikan skala bagi pengguna untuk menilai sesuatu pada kisaran yang telah ditentukan.
- type : rating
label : How much do you like Berlin?
min : 1
max : 5Meminta pengguna untuk memberi peringkat opsi berdasarkan kriteria yang diberikan.
- type : ranking
label : Rank the following cities by population
optionsFromVariable : german-city-optionsMenyajikan pertanyaan di mana pengguna hanya dapat menjawab "ya" atau "tidak".
- type : yes-no
label : Is Berlin the capital of Germany?Meminta pengguna untuk memasukkan email mereka
- type : email
label : Please enter your email.Meminta pengguna untuk mengunggah file mereka berdasarkan format yang diberikan dan ukuran unggahan maksimum.
- type : file
label : Upload a Berlin Image
validation :
formats :
- .jpg
- .png
max_size_bytes : 5*1024*1024 # 5 MB Respons dapat ditampilkan di UI dan diekspor sebagai JSON. Atau Anda dapat menggunakan REST API untuk mendapatkan respos Survei:
curl -XGET
http://localhost:9900/app/surveys/{SURVEY_ID}/sessions ? limit=100 & offset=0 & sort_by=created_at & order=desc Di mana {SURVEY_ID} id UUID dari survei yang diberikan.


docker-compose up -d --build
Dan Anda harus dapat mengakses UI di http: // localhost: 3000 (Default Basic Auth: user:pass ).
Anda dapat menggunakan layanan individu ke penyedia cloud atau menampung diri sendiri.
Layanan demo (tautan di atas) digunakan untuk terbang.io (go, sqlite) dan vercel (next.js) dan berada di bawah tingkatan gratis.
Pasang udara secara lokal dari sini
Jalankan perintah berikut setelah instalasi udara
cd api
air
Perintah ini akan membantu dalam memuat ulang langsung setiap kali perubahan dilakukan di API menggunakan air . Konfigurasi khusus dapat diatur dengan memodifikasi file air.toml
API:
DATABASE_TYPE - sqlite atau postgresDATABASE_URL - string koneksi postgres atau sqliteLOG_LEVEL - Level log, misalnya infoSURVEYS_DIR - Direktori dengan survei, misalnya /root/surveys . Disarankan untuk menggunakan volume yang dipasang untuk direktori ini.UI:
CONSOLE_API_ADDR - Alamat publik dari go backend. Perlu diakses dari browser.CONSOLE_API_ADDR_INTERNAL - Alamat internal backend Go, misalnya http://api:8080 (bisa sama dengan CONSOLE_API_ADDR ).IRON_SESSION_SECRET - Rahasia untuk enkripsi sesiHTTP_BASIC_AUTH - format: user:pass untuk auth dasar (opsional) Pastikan untuk menginstal Go-Migrate terlebih dahulu.
cd api
migrate create -dir migrations/postgres -ext sql -seq name
migrate create -dir migrations/sqlite -ext sql -seq name
cd api
make test
Permintaan tarik, laporan bug, dan semua bentuk kontribusi lainnya disambut dan sangat dianjurkan!