VulcanJS / Vulcan

🌋 A toolkit to quickly build apps with React, GraphQL & Meteor
http://vulcanjs.org
MIT License
7.98k stars 1.89k forks source link

Telescope CMS? #1563

Closed dancastellon closed 5 years ago

dancastellon commented 7 years ago

Hey @SachaG and others,

I just started looking into the Nova framework and I have to say - it looks amazing. Really nice work so far. I'm here because I am currently researching options for creating a real-time content management system. The most popular CMS's - Drupal and Wordpress - are both overly complex, and years behind in terms of the development experience. A simple example - in Drupal 8 it takes roughly 600-700 lines of code to define a custom entity type with basic permissions and routes. Some code is PHP, some's YAML, and some is a special comment format (annotations). With that you get a simple table, add/edit/delete forms, and simple (not anywhere near complete) integration with the Views module - an unnecessary query/list display builder. Trying to customize what is given is possible in some instances but requires much more code.

It seems like the above would take 300-400 lines in Nova and is very easily customized. Therefore I'm interested in building an open source CMS on top of Nova that would eventually compete with the enterprise-level CMS's currently out there.

I'm not sure if this is the right place to ask, but I assume I can build anything with Nova? Is Nova's Apollo integration fully-reactive like Meteor's pub/sub? Are you planning on moving away from Meteor? And what do you think?

Best, Dan

SachaG commented 7 years ago

Great questions! Yeah, as you said Nova is a lot more flexible than Drupal/Wordpress/etc.

Ideally, rather than build a CMS on top of Nova, the plan would be to use one of the existing MongoDB-compatible back-ends, such as http://keystonejs.com/.

Sadly it's not currently compatible with Meteor apps. But as soon as that issue is solved, I think it'll make a great CMS for Nova.

Oh and Nova doesn't use pub/sub anymore, we've switched to Apollo in the latest version. This makes it easier to move away from Meteor if we ever decide to.

By the way I just counted, and the framework-demo package (which does what you described and more) is 728 lines of code total :)

vonwao commented 7 years ago

In some ways, Nova is already a kind of CMS (in the sense that a "post" is usually the core type of many CMS systems like Wordpress and I assume Drupal). Sure, the use case isn't quite the same, but it's a similar concept. It seems like the choice of using Nova or Keystone would depend on the use case. Keystone would be better for creating a website with editable content, while Nova would be better if you have a lot of business logic, for example it has a nice permission system and is more developer-friendly. This is my take. I'm still getting acquainted with Nova. It will be interesting to see how these projects evolve, converge, diverge in the future.

SachaG commented 7 years ago

@vonwao the idea is that you would use both. Nova for your user-facing site, and Keystone for your admin back-end.

vonwao commented 7 years ago

interesting @SachaG. Isn't it simple to display an admin panel once you have a schema with "isAdmin" permissions and you have a way to create forms dynamically based on schema? Orion.js had a built in admin panel, why not Nova?

It's great that you want to reuse code and not reinvent the wheel, but it seems Keystone JS doesn't use GraphQL and has its own schema so I don't know how it makes sense to combine the two.

SachaG commented 7 years ago

Yeah we could have a built-in admin panel, but that adds a lot of code surface to maintain. I'd rather focus on what Nova does best (user-facing stuff) rather than try and duplicate what other apps already do. If anybody wants to build an admin as a third-party plugin though, why not :)

And it's true that Keystone uses its own schema format, but it wouldn't be that hard to convert a Telescope schema into a Keystone schema.

osterkraft commented 7 years ago

I've investigated Keystone for some new projects but in the end I decided Nova will probably be better for what I'm looking at (more general web apps). The structure is solid, quite flexible and perfect as an introduction to GraphQL. I've had good use of the YouTube walkthroughs and the documentation so far!

I'm not sure what the plans are for the framework-demo package, but currently it seems to break easily and doesn't quite mirror the new "base" setup with separate files for fragments and so on. Perhaps it would be an idea to base new custom collections/modules on the posts or comments modules instead, as they are more actively maintained? Do you have any general recommendations here?

brucelane commented 7 years ago

+1 Telescope CMS!!!

SachaG commented 7 years ago

@osterkraft I think the general plan is to go more towards having the framework-demo package be what you start with, and the posts/comments/etc. to be extra features that you can drop in if you need them. So we should definitely make sure framework-demo is up to date, I'll take another pass at it soon.

vonwao commented 7 years ago

I'm thinking a Nova CRM+Ticketing system would be an even better project. CMS would compete with Keystone, like @SachaG said, and I'm not sure it's the best use-case for Nova and GraphQL. There are thousand different CMSs out there and in the end people will use Wordpress because it still works.

While there are also many CRM and Ticketing/Issue trackers, this system can benefit from the extensive Nova customization features like groups, permissions, forms, callbacks.

x5engine commented 7 years ago

@vonwao the goal with NOva is to give you the possibility to make whatever you want be it a : CMS, CRM....

those are different use cases which if Nova stick to one then the other would be hard to make because it contains a lot of non essential things for that use case.

So Nova provides you all the tools you need to make whatever you want :) and improving the performance.

xavxyz commented 7 years ago

Couldn't have said it better @meteorplus 💯

vonwao commented 7 years ago

@meteorplus I get it. My point was that, if someone wants to build an open source project that leverages and showcases Nova's features, then a CRM may be a good idea.

spawn-guy commented 7 years ago

i'll post it here for reference, and i, personally, haven't tried it

https://wrapbootstrap.com/theme/rubix-reactjs-powered-admin-template-WB09498FH

it is React, they say it plugs into MeteorJS 1.4 ... they plan to have a GraphQL version. and.. it is Paid