Ask HN: Is there a markup language for forms?
I've been coding web and mobile apps for 12 years and I've worked on countless forms. It seems like there should exist a formal way to define them (field names, data types, validation, endpoints, etc.), compatible with backend and frontend languages. Then a library, in each given language to render the form. Anyway, I'd like to define a form once and render it or process it without any extra work. Do any hackers know of such a thing?
13 comments
[ 2.5 ms ] story [ 32.3 ms ] threadhttps://stackoverflow.com/questions/40325231/is-xforms-still...
Like most XML standards, it favors generality over simplicity. There are some indications that while this is good for complicated forms, it could be overkill for simple forms.
https://lists.w3.org/Archives/Public/public-forms/2014Oct/00...
Json schema also has many tools for validation, which is nice if you're passing the form data around.
Looks promising. However my recommendation is create single components for common elements you use a lot...
Like... have a structure like resources/js/form/elements where you might have: Input.vue Email.vue Password.vue and all types... set some sensible defaults put use props so they're all overrideable.
Then create forms by model: resources/js/users/forms: FirstName.vue would look something like: <template><form-input extraJson:"{readonly: true}" /></template>
Then your users/form.vue would be like" <template> <first-name /> <last-name> <email> </template>
Then say you have two types of users like users and customers... and two different forms -- you can reuse the email/name input modules in other forms so you don't duplicate content. I use inertiajs+laravel+vue though, and handle validations via laravel and don't generally need to use the whole json schema thing, as it just makes for more code. I like handling the validations in the backend and let the frontend just focus on ui/ux.
Includes multiple nested field sets, fields shown/activated by other fields etc.
The gist is: structure in yaml/json, then field code templates in partials, and validations on the back end. Included Salesforce list validations which was pretty neat.
The code is nowhere near reusable unfortunately.
https://idyll-lang.org/