{"id":18926943,"url":"https://github.com/bedrockstreaming/forms","last_synced_at":"2025-04-15T13:33:38.609Z","repository":{"id":38987920,"uuid":"432154706","full_name":"BedrockStreaming/forms","owner":"BedrockStreaming","description":"react.js form generation and validation libraries based on react-hook-form","archived":false,"fork":false,"pushed_at":"2024-07-01T09:13:25.000Z","size":2840,"stargazers_count":14,"open_issues_count":22,"forks_count":2,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-28T22:08:24.674Z","etag":null,"topics":["form-builder","form-validation","forms","react","react-hook-form"],"latest_commit_sha":null,"homepage":"https://bedrockstreaming.github.io/forms/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BedrockStreaming.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-26T11:28:33.000Z","updated_at":"2024-05-22T10:50:31.000Z","dependencies_parsed_at":"2023-11-15T16:28:03.065Z","dependency_job_id":"fb735179-db9d-4355-a885-dd0c4c1887b9","html_url":"https://github.com/BedrockStreaming/forms","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BedrockStreaming%2Fforms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BedrockStreaming%2Fforms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BedrockStreaming%2Fforms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BedrockStreaming%2Fforms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BedrockStreaming","download_url":"https://codeload.github.com/BedrockStreaming/forms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249080538,"owners_count":21209540,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["form-builder","form-validation","forms","react","react-hook-form"],"created_at":"2024-11-08T11:17:38.075Z","updated_at":"2025-04-15T13:33:38.211Z","avatar_url":"https://github.com/BedrockStreaming.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003eWelcome to Forms 👋\u003c/h1\u003e\n\u003cp\u003e\n  \u003ca href=\"https://github.com/BedrockStreaming/forms/blob/main/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/Bedrock_Stream\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Twitter: Bedrock_Stream\" src=\"https://img.shields.io/twitter/follow/Bedrock_Stream.svg?style=social\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/BedrockStreaming/forms/actions/workflows/main.yml\" target=\"_blank\"\u003e\n    \u003cimg alt=\"CI\" src=\"https://github.com/BedrockStreaming/forms/actions/workflows/main.yml/badge.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/BedrockStreaming/forms\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/BedrockStreaming/forms/branch/master/graph/badge.svg?token=073DJ56DNX\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n:octocat: Monorepo exposing a set of form libraries we, [BedrockStreaming](https://www.bedrockstreaming.com/), are using in our production react applications to handle dynamic forms generation and validation.\n\n## :package: Packages\n\n- [@bedrockstreaming/form-builder](libs/form-builder/README.md) :construction_worker:\n- [@bedrockstreaming/form-validation-rule-list](libs/form-validation-rule-list/README.md) 🧑‍⚖️\n- [@bedrockstreaming/form-redux](libs/form-redux/README.md) :globe_with_meridians:\n- [@bedrockstreaming/form-context](libs/form-context/README.md) :globe_with_meridians:\n\n## Why\n\nThe idea of this library came from the variety of requests our customers had in terms of forms. Thus, we wanted to be able to generate any form by simply passing some config and a dictionary of inputs to go with.\nAs we were eager to keep some control over the process, but not willing to control the form state ourselves, we went with [react-hook-form](https://react-hook-form.com/) which has great capabilities. Unfortunately we were missing some features that we had to implement ourselves.\n\n- Complex validation with multiple visuals feedback (at the same time)\n- Steps handling\n\nWe believe that anyone using react could use our libraries to create and manage forms the way we do. We are still exposing - what we think are - the relevant parts of `react-hook-form` API so we think of the FormBuilder as an opinionated solution to industrialize forms across your application.\n\n## 🤝 Contributing\n\nFirst read the [Contributing](.github/CONTRIBUTING.md) and [Code of conduct](.github/CODE_OF_CONDUCT.md) sections.\n\n:point_up: Note that this project was generated using [Nx](https://nx.dev).\n\n### Getting started\n\nCheck each library's documentation.\n\nTo test each library development, we'll use the demo app and the docsite (dog-fooding strategy).\n\nThis project handles 4 libraries packages, which are used in two apps: demo and docsite (e2e apps are simply holding test code about those apps)\nThe `demo` project is there to smoothe the dev experience\nThe `docsite` project is the one used on https://bedrockstreaming.github.io/forms/\n\nIn order to start on the project, you can start with the demo project:\n`yarn start demo`\n\n### Generate an application\n\nRun `yarn nx g @nrwl/react:app my-app` to generate an application.\n\n\u003e You can use any of the plugins above to generate applications as well.\n\nWhen using Nx, you can create multiple applications and libraries in the same workspace.\n\n### Generate a library\n\nRun `yarn nx g @nrwl/react:lib my-lib` to generate a react library.\nRun `yarn nx g @nrwl/react:web my-lib` to generate a web library.\nRun `yarn nx g @nrwl/react:node my-lib` to generate a node library.\n\n\u003e You can also use any of the plugins above to generate libraries as well.\n\nLibraries are shareable across libraries and applications. They can be imported from `@forms/mylib`.\n\nIf you want the library to be publishable use:\n\n```bash\nyarn nx g @nrwl/react:lib my-lib --publishable --importPath=\"@bedrockstreaming/form-foo\"\n```\n\n### Development server\n\nRun `yarn nx serve my-app` for a dev server. Navigate to [http://localhost:4200/](http://localhost:4200/). The app will automatically reload if you change any of the source files.\n\n### Code scaffolding\n\nRun `yarn nx g @nrwl/react:component my-component --project=my-app` to generate a new component.\n\n### Build\n\nRun `yarn nx build my-app` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\n### Running unit tests\n\nRun `yarn nx test my-app` to execute the unit tests via [Jest](https://jestjs.io).\n\nRun `yarn nx affected:test` to execute the unit tests affected by a change.\n\n### Running end-to-end tests\n\nRun `yarn nx e2e my-app` to execute the end-to-end tests via [Cypress](https://www.cypress.io).\n\nRun `yarn nx affected:e2e` to execute the end-to-end tests affected by a change.\n\n### Understand your workspace\n\nRun `yarn nx dep-graph` to see a diagram of the dependencies of your projects.\n\n### Further help\n\nVisit the [Nx Documentation](https://nx.dev) to learn more.\n\n## Contributors\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hpierre74\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25172711?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePierre Huyghe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=hpierre74\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=hpierre74\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-hpierre74\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-hpierre74\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-hpierre74\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"http://slashgear.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6263857?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAntoine Caron\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=Slashgear\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=Slashgear\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-Slashgear\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-Slashgear\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-Slashgear\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/fdubost\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3973818?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFlorent Dubost\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=fdubost\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=fdubost\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-fdubost\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-fdubost\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-fdubost\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/renaudAmsellem\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5941601?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erenaudAmsellem\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=renaudAmsellem\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=renaudAmsellem\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-renaudAmsellem\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-renaudAmsellem\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-renaudAmsellem\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jcoquet\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26571211?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejcoquet\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=jcoquet\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=jcoquet\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-jcoquet\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-jcoquet\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-jcoquet\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/UltiXstorm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/53232310?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eUltiXstorm\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=UltiXstorm\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=UltiXstorm\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-UltiXstorm\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-UltiXstorm\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://lacruz.org/team/alves-mickael\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/60877626?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlves Mickaël\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=Cruz-Azul\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=Cruz-Azul\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-Cruz-Azul\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-Cruz-Azul\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/nicolasca\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2886734?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNicolas Castejon\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=nicolasca\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=nicolasca\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-nicolasca\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-nicolasca\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/MaximeBF2000\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46478550?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMaxime BOUNAAS-FERRET\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=MaximeBF2000\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=MaximeBF2000\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-MaximeBF2000\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-MaximeBF2000\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-MaximeBF2000\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"http://pioupioum.fr/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22614?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMehdi Kabab\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=piouPiouM\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/BedrockStreaming/forms/commits?author=piouPiouM\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#example-piouPiouM\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-piouPiouM\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-piouPiouM\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n## :memo: Licence\n\nCopyright © 2022 [BedrockStreaming](https://github.com/BedrockStreaming).\u003cbr /\u003e\nThis project is [MIT](https://github.com/BedrockStreaming/forms/blob/master/LICENSE) licensed.\n\n---\n\n_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbedrockstreaming%2Fforms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbedrockstreaming%2Fforms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbedrockstreaming%2Fforms/lists"}