webiny / webiny-js

Open-source serverless enterprise CMS. Includes a headless CMS, page builder, form builder, and file manager. Easy to customize and expand. Deploys to AWS.
https://www.webiny.com
Other
7.39k stars 612 forks source link

Add a "Dynamic Field" on the Content Model builder (Headless CMS). #2474

Open ademoverflow opened 2 years ago

ademoverflow commented 2 years ago

Is your feature request related to a problem? Please describe.

Not a problem, just a new feature ๐ŸŽ‰

Describe the solution you'd like.

I started to use Webiny for my projects because it supports serverless deployment on AWS (but not only for that).

I would like to use the headless API part of webiny as a page content manager, and thus I need a field that can hold a list of different fields (not predefined fields ofcourse, that's why it is called dynamic).

Describe alternatives you've considered.

I was wondering if I can manage to use plugins to write my own custom field that suits my needs, or maybe there will be a support for that feature soon ?

SvenAlHamad commented 2 years ago

Hey @adem-usta, thanks for raising this request. We will have a feature coming soon where you'll be able to do something like that. In the meantime, if it's urgent for you, you can build a custom field type for your project that adds such support using this guide here: https://www.webiny.com/docs/headless-cms/extending/custom-field-type

ademoverflow commented 2 years ago

Hey @SvenAlHamad , thank you for your fast answer ! Yes, I saw this part of the documentation, I will dig it.

Has webiny got a public roadmap for its new coming features ? That would be great !

SvenAlHamad commented 2 years ago

Weโ€™re a bit behind in updating our public roadmap at the moment, but I hope weโ€™ll have something online in the next few weeks. In the meantime if you do have any roadmap questions, just ping us on our community slack.

Pavel910 commented 2 years ago

@adem-usta Do you have a more concrete example of what you're looking for? Maybe another CMS that has that feature or maybe just a UI sketch? I'd like to understand your requirement a bit better.

The issue with dynamic fields is that they need to generate a proper GraphQL schema, which is challenging if every entry can have entirely different fields. Unless you make a container field, and make it of type JSON.

So if you can provide more insight, we could exchange ideas and probably come up with something.

ademoverflow commented 2 years ago

The idea is pretty simple:

Imagine that you want to manage a website pages with Webiny (without using the Page Builder).

You'll create a "Page" Content model, with some basic info:

I think it could be a list of references, or a list of generic objects.

There is a similar feature on strapiJS, which is called DynamicField (yeah, I'm not so creative haha). A link to illustrate: https://strapi.io/blog/release-beta-18-dynamic-zones

After digging a little, I think that the same thing could be achieved with Object + References in Webiny, but with less freedom ?

And to finish, maybe what I want is possible to do with the Page Builder ? Then, my question is:

Thank you for your time @Pavel910 !

Pavel910 commented 2 years ago

Thanks for all the details @adem-usta, this really helps setting the stage.

Dynamic Zone is something we do plan to add, we actually built a PoC for that, and I think our implementation will even have more flexibility. Judging by your description and the link you shared, our approach should be a good fit for your problem, but it's not yet ready for release.

To answer your second question, yes, Page Builder can be queried via GraphQL, that's actually the only way to get page data, and you get back JSON which you can then render yourself. Check out the code in your Webiny project, in apps/website/code/src/components/Page.

ademoverflow commented 2 years ago

Thank you for your answer @Pavel910

Great to read that ! Any idea on when do you plan to release this feature ?

Pavel910 commented 2 years ago

@adem-usta we'll be working on proper implementation in Q3. Can't give you any better estimates for now, unfortunately.

Please let us know which way you proceed, and we'd really appreciate if you could share some visuals/videos of whatever you come up with.

ademoverflow commented 2 years ago

Thank you for your answer @Pavel910 Great news ! Waiting for this key new feature ๐Ÿ”ฅ

Please let us know which way you proceed, and we'd really appreciate if you could share some visuals/videos of whatever you come up with.

Yes completely, I am currently working on a viable solution. Once I am satisfied with it, I'll share my temporary solution here.

ademoverflow commented 2 years ago

Hi @Pavel910, any update on this feature ?

Pavel910 commented 2 years ago

@adem-usta this is being worked on, but it will be more than just a new field. We've developed an entire new concept of "Headless Pages" which is specifically targeted at managing pages in a headless manner. More on this very soon :)

ademoverflow commented 2 years ago

Great to read that ! Can't wait to test it ๐Ÿ”ฅ

robin-vinck commented 2 years ago

Hi @Pavel910 ,

Do you have an update on this matter? Out of necessity I created a custom post field just for this, but it has much less flexibility.

Do you have an example of the solution and an ETA?

ademoverflow commented 1 year ago

Hey @Pavel910 , I'm back 4 months later to check what's up with this feature ? Is this still on your roadmap ?

Thanks in advance :)

Pavel910 commented 1 year ago

@ademoverflow @robin-vinck this is landing in the next release, 5.34., we're wrapping up the release preparations as we speak :)

ademoverflow commented 1 year ago

What a good news ! Can't wait ๐Ÿ”ฅ