decaporg / decap-cms

A Git-based CMS for Static Site Generators
https://decapcms.org
MIT License
17.87k stars 3.04k forks source link

Design Improvement: The Editor #180

Closed rafaelconde closed 6 years ago

rafaelconde commented 7 years ago

The Current State

screenshot 2016-12-02 15 17 42

Honestly there's a lot going on, and nothing major in need of improvement, but in the other hand there's just so much room for improvement that I think every element could use some love.

Some of the things that I focused on:

My Proposal

new post 2x

Some things to consider:

The Empty State

With a couple more fields, which is customizable (right?) πŸ˜… new post empty state 2x

Here's an example of a field being filled in new post writing 2x

Validating

When the user hits the Publish button, the app should run some validation and prevent the post of being published if there's some required fields missing.

Like this new post validation 2x


This is part 1 of the improvements to the Editor, I still have some things left to cover, but I would love to hear your thoughts and suggestions πŸ‘ πŸ’―

cassiozen commented 7 years ago

Wow, this is amazing! So much cleaner, I really like it!

But be aware of two things:

To cope with this, the CMS has an "inference system" - a fancy name for a built in list of rules and synonyms used to try to guess the following fields: title, short title (or short description), author and content body.

Now, I said all this to explain how it works, but what i'm trying to say is:

... And a few minor tweeks...

biilmann commented 7 years ago

Some additions here:

General Look'n feel

It's too minimalist. Remember at all times that we're not doing a Ghost or a blog editor, etc, but a CMS that will support lots of different content types with complex content models. It's really important that we design with this in mind.

Plenty of collections won't have a main markdown body at all, and as @cassiozen mentioned, we might not have a "title" but instead a "headline" or "name" depending on the collection and the web project in question.

Hiding the labels when a field is filled in is a no-go, there should always be a clear visible label for each piece of content for the same reason.

Metadata

In the old Ember prototype we did actually have the concept of meta data:

http://cms.netlify.com

If you navigate to an entry you can open the "Settings" panel where the meta data lives. Each collection would have both fields and meta properties like this. These meta fields are actually still present in our example config.yml right now: https://github.com/netlify/netlify-cms/blob/master/example/config.yml#L17

Apart from the fields defined in meta fields in the config, we always have the slug which is not a field as such, and that the typical content author won't care about, but that we should ideally still have some way of editing...

Validations

We should have a clear way to indicate that an individual field is invalid after the validations have run.

rafaelconde commented 7 years ago

Changes

new post_ empty state new post_ writing new post_ done writing new post_ validation

rafaelconde commented 7 years ago

Also, given the Open Source nature of this project, I've decided to Open Source the Design as well. Everyone is welcome to contribute πŸ‘‹

https://www.figma.com/file/N3E88guK9a2Z3OmevEN54yEi/netlify-cms

budparr commented 7 years ago

I think these are really great; very clean. A couple notes on language (with apologies if this isn't the appropriate thread for that)

1) Is it possible where it says "new post" to instead use a word that is less specific (to blogs), like, perhaps, "item" or even something related to the collection?

2) Where it says in the image upload interface "…drag and drop it like it's hot" is fun and friendly, but may feel out of place for some users. (I've known many highly intelligent non-technical people who are easily flummoxed by web interfaces and extra or fun words just gives them something more to think about)

biilmann commented 7 years ago

Great points @budparr - I agree with both.

I think the "New " in the breadcrumb should simply be based on the label or name for the collection in the configuration so it's contextual.

Agree that we should be conservative when it comes to copy. People will use this in lots of different contexts and there are just some places where "fun" copy can just seem cheeky or out of place (imagine that the content editor is working on an obituary, and suddenly a small bit of copy like that can really seem grating)...

rafaelconde commented 7 years ago

@budparr great points!

In the "New", like @biilmann said, is suppose to reflect the collection's name. I've updated the Figma file with the changes πŸ‘

verythorough commented 7 years ago

Regarding item names, as in "New ___", I suggest adding a new property for collections, called something like singular_name. The existing name property represents the general collection title, e.g. "Blog" or "Posts", and singular_name would be used in situations like "New post" or "Edit post". Omission of the singular_name property could default to the value of name.

A similar property pairing is used in the configuration of WordPress custom post types.

calavera commented 7 years ago

That's a good idea @verythorough. Additionally, we could also have a set of sane defaults hardcoded, because we already know that if the collection name is Posts or Blog you are going to create a New post. I don't think it'd be hard to maintain if we try to keep it as simple as possible.

cassandraoid commented 7 years ago

Just took a look at this, it is beautiful just a couple points to add to what other's have said:

How would I know what section is coming up or which sections exist? I personally feel that a 'form' like setting is something editors are used to seeing and therefore more likely to be comfortable to use it.

The fields don't look quite look 'clickable' to me either.

Is the publish button there so it no longer has to follow that editorial workflow set up now (you can't publish unless you go to main page)? Is there a 'save for later' or another option or do we just expect people to exit out (totally get that it says 'saved' so that should indicate but just play a lil devil's advocate.).

eliwilliamson commented 7 years ago

@rafaelconde I had some issues with figma so i exported to sketch and made my changes there.

Here are the image exports:

new post editing new post error new post initial new post validated home collections cards home collections list home queue list home queue scrolled home queue login

rd18aac commented 7 years ago

I love the look of Netlify CMS on desktop but does anyone know when/if it will become responsive/mobile-friendly? Great work tho πŸ‘

eliwilliamson commented 7 years ago

@robdixn I hope take a pass at it early next week depending on the feedback I recieve on the desktop concept above πŸ‘

imorente commented 7 years ago

@eliwilliamson this is beautiful!

One thing to keep in mind is that it's hard to know what's going on without relying on color. Once "This is an APPROVED title"/"This is an article UNDER REVIEW"/etc. are replaced with the actual title of the content, there's no good way to know

screen shot 2017-03-24 at 8 02 19 pm
eliwilliamson commented 7 years ago

Good point! Perhaps we can add some sort of label; not just for the editorial flow but for any custom flow as indicated by the 'create a new row' button πŸ’―

-Eli

Sent from my iPhone. Kindly, pardon brevity and spelling.

On Mar 24, 2017, at 11:23 PM, imorente notifications@github.com wrote:

@eliwilliamson this is beautiful!

One thing to keep in mind is that it's hard to know what's going on without relying on color. Once "This is an APPROVED title"/"This is an article UNDER REVIEW"/etc. are replaced with the actual title of the content, there's no good way to know

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

indysigner commented 7 years ago

Hey @rafaelconde, the new UI design is looking fantastic. Let me add some function related inquiries / suggestions:

MVP stuff

Fancy stuff (nice to have)

CC'ing @erquhart and @biilmann, too :-)

erquhart commented 7 years ago

@eliwilliamson I just want to reiterate what's already been said: the design work here is incredible! Glad to see all of the UX considerations coming in from contributors, too. This is going to be awesome.

calavera commented 7 years ago

@indysigner it would be great if those were separated issues, otherwise they will be lost in this thread.

At the moment, this is "only" trying to find a better look and feel for what we have now, and hopefully put a small design system in place for new features.

If we had those as issues, other contributors could jump of them as they feel, they can be very isolated as individual contributions.

indysigner commented 7 years ago

Hi @calavera, this is a good call. I'm now searching for any existing issues or will create new ones and reference them here. :-)

danielpost commented 7 years ago

Hey guys, I've been working on a prototype for the UI, and specifically how to handle the List widget. It can be foundhere and all thoughts and feedback are much appreciated!

indysigner commented 7 years ago

Hi @danielpost, really love it! Really like how clean the design looks and everything is at its right place. Just a little suggestion to use the vertical line in the middle of the window to make both parts of the window resizable. But I'm sure you wanted to do this anyway! ;-)

danielpost commented 7 years ago

@indysigner Thanks! It's not really meant to be a full fledged page at this point, more a prototype of how different widgets could look and function. I'm planning on adding a bunch of extra ones just so we can explore different options.

erquhart commented 7 years ago

Awesome, looking forward to it.

imorente commented 7 years ago

@danielpost, I love how nice and clean that design looks, while still being really functional (good contrast, labels and form controls are clear...). Can't wait to see more!

erquhart commented 7 years ago

A general design improvement will be important for 1.0. Here are my thoughts on the path forward, with feedback from all of the comments on this issue:

Aesthetics

The designs from @rafaelconde, @eliwilliamson, and @danielpost are all moving in a generally solid direction. Whatever we settle on aesthetically needs to be effectively communicative, accessible, cohesive, and scalable. As Mathias mentioned, this CMS has to cover use cases we can't even think of right now, so we'll want to avoid bending toward a particular kind of content.

Markdown by default

I agree with using Markdown as default (in a sense) and eschewing the dual editor approach. I think the rub here are two somewhat conflicting goals:

Because we'll soon be using Slate for the visual editor, we can easily offer a Paper-like experience by default (Markdown shortcuts, where the markers disappear) with the option to show the markers if desired. Slate has examples of both in the Markdown Shortcuts and Markdown Preview examples, respectively.

All of that said, this should probably be handled under a different issue.

List vs. Card

For now, it may be best to use a list for entries and search results, but retain the card UI for the editorial workflow.

The rest

kosirm commented 7 years ago

Sorry, but I can't not to comment on this: I really don't like whole idea of side by side editing in netlifycms. Please re-consider front-end editing. Otherwise people will just stay with cloudcannon & similar. Side by side editing is for geeks, "normal" people hate it, especially designers :) There are many tools already developed (like https://github.com/sofish/pen, maybe not best example) which could be used. For wordpress users opensource tools like elementor are normal here and here (again, maybe not best example) so why not bring this also to netlifycms? Best regards.

Benaiah commented 7 years ago

@kosirm the preview pane can be disabled trivially by either the user themselves or by disabling it for a collection in the config. Does that work for what you're looking for, or are you talking about something more involved?

andreasvirkus commented 7 years ago

@Benaiah I think @kosirm means live editing. Something similar to what Mavo.io does (a demo: https://mavo.io/demos/homepage/)

kosirm commented 7 years ago

@andreasvirkus whatever frontend technology (mavo looks really nice project, thanks for link). Idealy cms would cover multiple roles: designers, content editors, translators, etc. For some of them live editing is desirable, designers just need more broad access to structure and style (html dom) then content editors, but for translators probably best UX would be table view with text fields, etc. What I miss with netlifycms is really open architecture. Under warm "bateries included" feeling I hope to find replacable parts and not api with 4 methods. For example, I tried to implement this nice opensource template editor, but I was "short", not sure if because of my poor knowledge of react or because it is not possible at all... I invested some time to learn a bit hugo and react, which I never used before just to be capable to use netlifycms, because I really like it, it has great community and all... so to summarize, I hope netlifycms could be also front-end agnostic, not only back-end agnostic with strong and clear api in both directions.

tech4him1 commented 7 years ago

@kosirm I think the markdown editor that Netlify CMS already has is a core part of how the CMS works. One of the main differences that I see between the examples that you are providing (Mavo, CloudCannon, GrapeJS) is that they all edit HTML directly instead of Markdown. How are you thinking these would integrate with the CMS' markdown centric workflow? If you are thinking of it as a new feature, that would allow different front-ends to be hooked in, then maybe we should continue discussion in a separate issue.

kosirm commented 7 years ago

@tech4him1 that's exactly what I expect netlifycms to do - all up'n'down stuff (besides everything else what is doing - git workflow, netlify upload, etc), just do it behind the scenes, please :)

This is how I would like to see netlifycms: cms

Maybe I'm just in the wrong place, sorry if this is so.

erquhart commented 7 years ago

@kosirm the CMS isn't meant to be used only with websites - the content that is created and edited in the CMS might be used in any number of non-website applications (mobile apps, for example).

If you can give a concrete example of what kind of interface and end result you're expecting (the graph above is super high level), we can discuss more, but I'd ask that we move this conversation to our Gitter channel: https://gitter.im/netlify/netlifycms.

Benaiah commented 7 years ago

@kosirm, here's a paste of some of my earlier discussion regarding this in Gitter:

The issue with live editing isn’t Markdown vs HTML - we aren’t really tied to markdown in any way except having a bunch of support for it. The issue with live-editing a site is that we have very little knowledge of or control over how the content we edit ends up in the final product. We try to sort-of-imitate the final site with the preview system, but it’s not exactly the same. We could definitely improve the UX of that, perhaps by bringing the control and preview panes together somehow, but it won’t be the edit-the-site-directly approach @kosirm seems to be looking for.

As for that template editor, that may actually be feasible (depends on the architecture of that particular library). It just needs to be embeddable in a widget (so it needs to work inside React) and be able to serialize its data to text so we can save it.

kosirm commented 7 years ago

@erquhart thanks, ok see you there @Benaiah thanks, sorry I don't get "we have very little knowledge..." sentence, maybe I'm a little dumb though :)

tech4him1 commented 7 years ago

@kosirm The CMS is designed just to edit the content itself, it doesn't know what the final output or styling will be.

erquhart commented 6 years ago

A lot of this (original issue aim) was realized in 1.0. Closing.

ParisaTork commented 2 years ago

@kosirm is the front end builder and static site generator part of the CMS? What would an internal design of the CMS look like?