{"id":19413922,"url":"https://github.com/tpenaranda/duckform","last_synced_at":"2026-05-15T17:05:18.492Z","repository":{"id":57072288,"uuid":"222418557","full_name":"tpenaranda/duckform","owner":"tpenaranda","description":"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.","archived":false,"fork":false,"pushed_at":"2020-02-04T01:07:27.000Z","size":278,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-03T15:35:13.876Z","etag":null,"topics":["forms","typeform","vuejs"],"latest_commit_sha":null,"homepage":"https://vue-duckform-demo.tpenaranda.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpenaranda.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-18T10:08:13.000Z","updated_at":"2020-02-04T01:07:29.000Z","dependencies_parsed_at":"2022-08-24T10:40:52.842Z","dependency_job_id":null,"html_url":"https://github.com/tpenaranda/duckform","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tpenaranda/duckform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpenaranda%2Fduckform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpenaranda%2Fduckform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpenaranda%2Fduckform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpenaranda%2Fduckform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpenaranda","download_url":"https://codeload.github.com/tpenaranda/duckform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpenaranda%2Fduckform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33072975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["forms","typeform","vuejs"],"created_at":"2024-11-10T12:35:33.234Z","updated_at":"2026-05-15T17:05:18.476Z","avatar_url":"https://github.com/tpenaranda.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Duckform\n\n[![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)\n\nLaravel 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)).\nCheck https://vue-duckform-demo.tpenaranda.com for a live version of the FE side.\n\n*Form schema is defined [this way](https://raw.githubusercontent.com/tpenaranda/duckform/master/src/Database/Seeders/FormExamples/patient-intake-questionnaire.php).*\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/tpenaranda/duckform/master/screenshot.png\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## Installation\n\n### Require package\n```bash\n$ composer require tpenaranda/duckform\n```\n\n### Run migrations in order to create tables for forms schemas and user responses.\n```bash\n$ php artisan migrate\n```\n\n### Seed DB with a sample form\n```bash\nphp artisan db:seed --class TPenaranda\\\\Duckform\\\\Database\\\\Seeders\\\\DuckformSeeder\n```\n\n### Alternatively you can use factories to generate random form.\n```bash\nphp artisan tinker\n\u003e\u003e\u003e use TPenaranda\\Duckform\\Facade\\Duckform\\Duckform\n\u003e\u003e\u003e use TPenaranda\\Duckform\\Models\\Form\n\u003e\u003e\u003e Duckform::factory(Form::class)-\u003estates('with-sections-with-questions-with-possible-answers')-\u003ecreate()\n```\n\n### Routes (remember `php artisan route:list` for entire list)\n```\nForm objects (Form structure)\n=============================\nGET 'api/duckforms/' Get all Forms.\nGET 'api/duckforms/{id-slug-token}' Get single Form.\n\nFormSubmit objects (Data submitted for a Form)\n==============================================\nPOST 'api/duckforms/{id-slug-token}/submits' Create a FormSubmit.\nPATCH 'api/duckforms/{id-slug-token}/submits/{submitToken}' Modify a FormSubmit\nGET 'api/duckforms/{id-slug-token}/submits/{formSubmitToken}' Get a single FormSubmit.\nGET 'api/duckforms/{id-slug-token}/submits' Get all submits for a single Form.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpenaranda%2Fduckform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpenaranda%2Fduckform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpenaranda%2Fduckform/lists"}