An open API service indexing awesome lists of open source software.

https://github.com/tpenaranda/duckform

Laravel package to modelize Forms/Surveys, save them into DB and handle them using API endpoints. Compatible with VueJS using https://github.com/tpenaranda/vue-duckform package.
https://github.com/tpenaranda/duckform

forms typeform vuejs

Last synced: about 1 month ago
JSON representation

Laravel package to modelize Forms/Surveys, save them into DB and handle them using API endpoints. Compatible with VueJS using https://github.com/tpenaranda/vue-duckform package.

Awesome Lists containing this project

README

          

# Laravel Duckform

[![Latest Stable Version](https://poser.pugx.org/tpenaranda/duckform/v/stable)](https://packagist.org/packages/tpenaranda/duckform) [![Total Downloads](https://poser.pugx.org/tpenaranda/duckform/downloads)](https://packagist.org/packages/tpenaranda/duckform) [![License](https://poser.pugx.org/tpenaranda/duckform/license)](https://packagist.org/packages/tpenaranda/duckform)

Laravel package to modelize Forms/Surveys, save them into DB and handle them using API endpoints. There is a VueJS package to handle the FE side ([see here](https://github.com/tpenaranda/vue-duckform)).
Check https://vue-duckform-demo.tpenaranda.com for a live version of the FE side.

*Form schema is defined [this way](https://raw.githubusercontent.com/tpenaranda/duckform/master/src/Database/Seeders/FormExamples/patient-intake-questionnaire.php).*



## Installation

### Require package
```bash
$ composer require tpenaranda/duckform
```

### Run migrations in order to create tables for forms schemas and user responses.
```bash
$ php artisan migrate
```

### Seed DB with a sample form
```bash
php artisan db:seed --class TPenaranda\\Duckform\\Database\\Seeders\\DuckformSeeder
```

### Alternatively you can use factories to generate random form.
```bash
php artisan tinker
>>> use TPenaranda\Duckform\Facade\Duckform\Duckform
>>> use TPenaranda\Duckform\Models\Form
>>> Duckform::factory(Form::class)->states('with-sections-with-questions-with-possible-answers')->create()
```

### Routes (remember `php artisan route:list` for entire list)
```
Form objects (Form structure)
=============================
GET 'api/duckforms/' Get all Forms.
GET 'api/duckforms/{id-slug-token}' Get single Form.

FormSubmit objects (Data submitted for a Form)
==============================================
POST 'api/duckforms/{id-slug-token}/submits' Create a FormSubmit.
PATCH 'api/duckforms/{id-slug-token}/submits/{submitToken}' Modify a FormSubmit
GET 'api/duckforms/{id-slug-token}/submits/{formSubmitToken}' Get a single FormSubmit.
GET 'api/duckforms/{id-slug-token}/submits' Get all submits for a single Form.
```