https://github.com/intercaetera/formuj
A delightful React form framework
https://github.com/intercaetera/formuj
form formik hacktoberfest react
Last synced: 6 months ago
JSON representation
A delightful React form framework
- Host: GitHub
- URL: https://github.com/intercaetera/formuj
- Owner: intercaetera
- Created: 2020-04-25T16:09:36.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-14T20:18:28.000Z (almost 3 years ago)
- Last Synced: 2025-04-11T21:55:44.959Z (6 months ago)
- Topics: form, formik, hacktoberfest, react
- Language: JavaScript
- Homepage: http://formuj.intercaetera.com
- Size: 4.5 MB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
![]()
# Formuj
[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]> Formuj is still work in progress and not production-ready, but ideas, PRs and bugfixes are most welcome.
Formuj is a delightful React form framework and set of patterns built on top of [Formik](https://github.com/jaredpalmer/formik).
- Formuj is **simple**. The schema pattern is very easy to pick up and Formuj does not do much magic under the hood.
- Formuj is **flexible**. There are many ways to inject custom behaviour into the schemas for all of your applications.
- Formuj is **battle-tested**. The schema pattern has been successfully used in production enterprise applications.
- Formuj is **Formik**. At the end of the day, you still have access to the underlying Formik API for complicated functionality.## Example
```js
import React from 'react';import Formuj, { Input } from 'formuj';
import required from './validators/required';const handleSubmit = values => console.log(values);
const Demo = () => {
return (
);
};
```You can also check out the [live demo on CodeSandbox](https://codesandbox.io/s/formuj-demo-yufd9?file=/src/App.js). (More examples in the `demo/src` directory).
## Another React form framework?
Formuj was designed with a specific purpose: to build complicated forms rapidly with a reusable library of form controls.
### When should you use Formuj?
- Your forms consist primarily of similar components that are reused a lot.
- Your forms have states that depend on previously entered data or validate based on previously entered data.
- You want to use pure JS functions for validation instead of a validation library.
- You often need to prototype forms out of reusable components quickly.
- You are looking for an opinionated way of working with Formik.
### When should you not use Formuj?
- Your forms have a variety of different fields and rarely the same type of form control is used in more than one form.
- Most of your validations are asynchronous.
## Credits
Maintainer: [@intercaetera](https://intercaetera.com)
Honourable mention: [@adam-golab](https://github.com/adam-golab) (for help with initial implementation)
[build-badge]: https://img.shields.io/travis/intercaetera/formuj/master.png?style=flat-square
[build]: https://travis-ci.org/intercaetera/formuj[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/formuj[coveralls-badge]: https://img.shields.io/coveralls/intercaetera/formuj/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/intercaetera/formuj