keystonejs / keystone-classic

Node.js CMS and web app framework
http://v4.keystonejs.com
MIT License
14.63k stars 2.21k forks source link

Version 0.4.0 #1612

Closed JedWatson closed 8 years ago

JedWatson commented 9 years ago

Today, I'm really excited to be merging our work on the elemental-integration branch into master.

We're really close to releasing a major new version which will finish our transition to React for the Admin UI, and be a strong foundation for a lot we've been wanting to do with Keystone for a long time, including opening up the Admin UI for customisation, and making the project more modular.

Once this lands, I expect we'll move much more quickly through the next few minor releases (0.5, 0.6, ...) as we introduce new functionality and potentially some breaking changes while we refactor the project more thoroughly. Our 1.0.0 release will follow as soon as we're ready to lock down the customisation and other APIs for long term support.

This means that master may be unstable for a while as the new UI is finished, but getting the project into a state where it is easier for others to contribute to the effort, and for the broader community to engage with our progress is really important. Until we get through this push, PRs and issues will continue to come in against a version that we've really moved on from, and I don't want to waste any of the valuable time and effort that's being dedicated to this project.

The other change that will happen from today is we'll start creating issues to track our progress towards 0.4.0 more granularly, and that will make more sense when the primary working codebase is the master branch. Up to now, @jossmac and I have worked largely behind the scenes on tasks that really only the two of us are across, and I'm keen to facilitate a much broader engagement with what's left to do. (we'll be rearranging the milestones and issue tags a bit to better support this today as well)

There will be a new 0.3.14 release today with all the current work in master before the merge, and we'll create a 0.3.x branch which we'll continue to release from if any critical issues pop up in that version.

Thanks everyone for your patience as we've been working towards this huge update, and for all your support and engagement over the last two years that Keystone has been out in the world. We're tremendously excited to get these changes we've been working on released, and move on to the next stage of Keystone's development.

Once this release settles down I'll be publishing a new roadmap for what's to come, and outline the vision we've got for the future of Keystone. In the meantime:

0.4.0 TODO

This list will be replaced with individual issues as we add them, but generally the entire Admin UI and back-end support for it has been rewritten. This means many features won't be completely working, and there's a few things left to add. The major areas are:

As a final, optional step there has been work done to centralise our Field types into a common Storage implementation. Because we're hoping to get this in, the different file field types (local, s3, etc) haven't had a huge amount of attention. Hopefully this can all be done but if it's dragging we'll just clean up what's there and get the release out, and refactor our file fields and storage for 0.5.

This is an area I'd really like some help with so if that interests you please let me know.

Changes

We'll be compiling a list of changes (particularly breaking changes) in the Wiki as we head towards release; please help by raising any upgrade issues you experience with your projects. Due to the scope of changes to Keystone's front end, we've tried to keep internal breaking changes to a minimum.

One of the big things worth calling out is we've updated to Mongoose v4.x, please see the mongoose changelog for details on what that involves.

Running Keystone 0.4.0 in development

To get up and running with the new version of Keystone, check out the master branch by specifying our github repo in your package.json:

"keystone": "https://github.com/keystonejs/keystone.git",

Please let us know what you like, what you don't, and any issues that you find (there will be heaps to start with, we know)

If you want to run Keystone in development mode to debug issues or help finish the new features, fork / clone Keystone locally, then run npm link in your keystone folder, followed by npm link keystone in your project.

Then to enable debug builds and file watching, start your project with the KEYSTONE_DEV environment variable:

KEYSTONE_DEV=true npm start

New Keystone Test Project

We have started a new project that can be used to test the various project and field configurations, and all the features supported in the Admin UI. It contains several models and init scripts that populate example data for testing against.

You can find it here: https://github.com/keystonejs/keystone-test-project

This is only a barebones project at the moment but we'll be adding a lot of lists, fields, data and options to it in the coming days and weeks. Ideas, additions and PRs for it are more than welcome.

Complete Getting Started Guide

git clone https://github.com/keystonejs/keystone.git
cd keystone
npm link
cd ..
git clone https://github.com/keystonejs/keystone-test-project.git
cd keystone-test-project
npm install
npm link keystone
KEYSTONE_DEV=true npm start

Developing Elemental UI

The new Keystone Admin UI is built on our Elemental UI project. As the master branch of Keystone is developed, we'll be rapidly releasing new Elemental versions, so it will be important to keep up to date with the latest. If you experience problems with the development version of Keystone, check for an update to Elemental before looking into it further.

If you want to run against the master branch of Elemental (or make changes to that project for Keystone) you'll need to clone it, link it and run npm watch to build it with babel.

Following on from the guide to developing Keystone above, set it up like this:

git clone https://github.com/elementalui/elemental.git
cd elemental
npm link
npm run watch

Then:

cd keystone
npm link elemental
cd ../keystone-test-project
KEYSTONE_DEV=true npm start
jacargentina commented 9 years ago

Any advice on how to migrate any project to use it and test fully? There are some required routes to be registered on web.js for this new ui to work correctly? When clicking on any model list I get an infinite request which never renders the page...

cantuket commented 9 years ago

So excited for 0.4.0! I'm building pretty much all hobby apps in Express/Flux/React now and going forward. Having all my day-job/CMS's on the same stack is pretty much a dream come true so thanks for the amazing work!

I'd love to help where I can on the front-end design/development in Admin Area and will pull down the master to see what I can do. I'm using Keystone for 6 clients right now and would like to use it for everything pretty soon. Just want to add my 2-cents on the feature updates that I've found to be most critical to me from a business/client stand point and I know you're working on already...

Sub-collections (https://github.com/keystonejs/keystone/issues/153) Getting off Cloudinary - too expensive! (https://github.com/keystonejs/keystone/issues/526) Getting time zones completely solid (https://github.com/keystonejs/keystone/issues/1487) and a separate Time field would be great too.

I'd be very interested in making some example sites/themes for the community, like sydjs, but completely out of react-router/react in tandem with the 0.4.0 launch. Basically SPAs for the client side, which I think may be the future of agency level development. Probably going to be using a mix of http://material-ui.com/ and http://materializecss.com/ for the front-end, with some GSAP fanciness, some out-of-the-box load order optimization and a workflow like http://www.christianalfoni.com/articles/2014_12_13_Webpack-and-react-is-awesome. I'm going to start on the front-end for a few and hopefully I can integrate with 0.4.0 as it becomes more stable.

Thanks for the amazing work guys!

~ Kyle

jacargentina commented 9 years ago

My problem was simply this https://github.com/casesandberg/react-color/pull/26 @JedWatson May be we need a react-color fork to make v0.4 JUST WORK for newcomers? And then go back to upstream when they apply that PR.

matthewchung74 commented 9 years ago

Just played with the keystone-test-project. Really nice stuff. The ability to update in batch is great. For the main page, I'm not sure how I feel about the Grid vs the Table view, but I can see why you went that direction. For pagination, sometimes it's nice when it's on the top and bottom opposed to just the top.

gemscng commented 9 years ago

The UI is really nice and beautiful. I am wonder when we should expect to finish. We have a project which need to do customization about the admin ui. Anything we can help?

cantuket commented 9 years ago

@gemscng You could definitely help out with either of these 0.4 additions...

1633 (critical for 0.4)

1636 (improvement/addition for 0.4)

I was going to take these on, but had some projects snowball on me and have been behind schedule ever since. I'm still planning on starting them in the next week or so.

Sorry guys just trying to keep the lights on at the moment.

frisksitron commented 9 years ago

Hi, is there an ETA for 0.4?

JedWatson commented 9 years ago

There are only a few major things to complete; specifically:

As long as nothing unexpected comes up, expect a release later this month.

cantuket commented 9 years ago

@LorbusChris I'm just finishing up my last open project today so I'm going to take a crack the mentioned improvements about mid-week if they're still on the table.

Regrettably I haven't been able to contribute much to Keystone myself, but I'm always spreading the word here in Chicago and trying to get people involved.

I'm sitting down with a dev shop on Wednesday who seem interested in looking deeper into Keystone so hopefully I can convince them try a project with it. They specialize in React so they may be able to bang out the above issues/improvements way faster than me and would likely add a lot more value to the project than I can.

I'll keep you posted.

marutypes commented 9 years ago

I'd love to put in some effort on this. Keystone is my favourite CMS atm and I am considering it as a tool of choice for some talks I'm giving around rapid prototyping soon. Can you point me at some issues that need love?

For example, any outstanding todos on the REST API side or some such.

vikrant1011 commented 9 years ago

love the new Admin UI,

will be going more testing and will get back soon. keep it up!!

vikrant1011 commented 9 years ago

what will be the best way of posting the errors?

like : the add new company button is not working on the admin home page : url : http://localhost:3000/keystone/companies?create

efernandesng commented 9 years ago

@vikrant1011 this issue was reported. See #1723 Check if the issue was reported, if not, create one.

JedWatson commented 8 years ago

Big news - I've just updated the demo site (http://demo.keystonejs.com) to run the latest version from master. It's not quite ready for general release yet but all the features the demo uses work, so please check it out and let me know what you think!

And, if you find any (unreported) problems with it, please help out by opening issues here :)

paynecodes commented 8 years ago

@JedWatson What's the demo user/pass?

JedWatson commented 8 years ago

@jpdesigndev demo@keystonejs.com / demo (it's in the right hand column on the home page)

paynecodes commented 8 years ago

Ah! Thanks.

Mentioum commented 8 years ago

Looking forward to general release and a good migration doc :) :+1:

Richie765 commented 8 years ago

I'm very enthusiastic about this new version, it looks awesome! I don't want to come across negative but I can't help but notice that the dependencies have increased massively. For a basic 'yeoman' app, the size of the node_modules directory jumped from 222 MB (v0.3.16) to a massive 377 MB (0.4.0-alpha). I suppose much of this also gets loaded into memory so can increase hosting costs. Am I correct? Is this something that is on your radar?

opensrcken commented 8 years ago

Once 0.4 is live, how much more work would it take to enable rendering of all templates via React?

ericelliott commented 8 years ago

@opensrcken I have an open PR ready for review that adds React universal routing + rendering capabilities. Ready for review. Want to give it a try and comment?

gongbi commented 8 years ago

I'm a new guy to keystone. May I know if there is a way to generate the demo project with v0.4.0 by generator-keystone? which is same as http://demo.keystonejs.com/

Mentioum commented 8 years ago

@gongbi Pretty sure you can just clone the demo project from github? Isn't that easier?

gongbi commented 8 years ago

@Mentioum Thanks for your reply, I found the source of the demo project now, https://github.com/keystonejs/keystone-demo.

alancwoo commented 8 years ago

@JedWatson Is it possible to simply upgrade an existing 0.3.x project's package.json, or is the migration path not so simple? I upgraded to 0.4.x and after a number of npm install issues, I now get:

/node_modules/keystone/admin/server/middleware/logError.js:7 var msg =[${endpoint}];


EDIT My mistake, a simple upgrade of my node version to 5.x fixed everything, works beautifully, thanks for the hard work, the new admin ui is wonderful!

puijob commented 8 years ago

Hey guys, I'm new to KeystoneJS. I want to test the demo admin UI (http://demo.keystonejs.com/keystone/signin), but I get a "The email and password you entered are not valid." message. I'm using demo@keystonejs.com/demo for user/pass. Am I missing anything, or is anybody else experiencing same issue?

morenoh149 commented 8 years ago

@puijob noted https://github.com/keystonejs/keystone-demo/issues/34

puijob commented 8 years ago

Thanks @morenoh149

karlAlnebratt commented 8 years ago

Hi

How far away is the release of 0.4. We are starting a new project and we intend to use keystone. My question is. Should we use 0.3 and migrate to 0.4? or could we start developing with 0.4? @JedWatson

morenoh149 commented 8 years ago

@karlAlnebratt use 0.3 as 0.4 release date is unknown

karlAlnebratt commented 8 years ago

Thanks for the info @morenoh149

rodenp commented 8 years ago

Hi, Great framework by the way!

I am new to KeystoneJS and have a few questions. Do you have a roadmap of where you see Keystone JS heading? Do you plan on supporting bootstrap 4, or is it possible to configure the version of bootstrap used? Is it possible to remove the dependency on jquery? I can see that KeystoneJS is built on nodejs, express and mongoDB. And with the new release you will be moving to the Admin UI to ReactJS and Elemental.

Will it be possible to build Angular/Angular2 websites with the new version of KeystoneJS? I am looking into building mobile apps. Is this possible with the new Keystone version?

Once again a very promising framework you guys have developed. Good work!!

regards Peter

morenoh149 commented 8 years ago

@rodenp drop jquery is something we'll probably do at some point in the future. Keystone is just a backend adminUI. You should be able to use whatever you want to power your frontend.

jorisw commented 8 years ago

+1 on redux. If your goal with React is to speed up development, it would seem like a missed opportunity if that doesn't make it into 0.4.

https://github.com/reactjs/redux

nickeblewis commented 8 years ago

+1 Redux too :-)

michaelerobertsjr commented 8 years ago

+1 Redux, but I don't think it is worth delaying a release cycle to add Hot Module Reloading etc.

Also it's not clear what the pace of this release cycle is. I know it's behind, but I personally would be interested in using this framework (and contributing), and would like know realistic projections on a release date (best and worst case projections, etc.)

arlejeun commented 8 years ago

I'm about to start a basic project and I would like to benefit from Keystone 0.4 with all improvements and cool Admin UI compared to earlier version. Great work! Thank you for sharing.. I've never deployed Keystone on production yet (hopefully May timeframe) so I wonder if we have an idea when Keystonejs 0.4 will be available with general release (handlebars,...). Thanks!

VinayaSathyanarayana commented 8 years ago

Any idea when Keystone V0.4 is expected to be released?

VinayaSathyanarayana commented 8 years ago

I would strongly recommend that the Keystone API be documented as a swagger spec (Ref: http://swagger.io/) [currently open API: https://openapis.org/ ]

Api usage to consider [CRUD Operations S=Search/Find] POST /list to create a new item [C] PUT /list to update an existing item [U] GET /list/filter - Find an item by filter [S] GET /list/{id} - Find an item by id [R] DELETE /list/{ListId} - Deletes an item [D]

ericelliott commented 8 years ago

IMO, queries like filter are better implemented with query strings, which can be much more flexible, and easily applied to many URL endpoints using the same code. See the responsive APIs section of "Programming JavaScript Applications".

VinayaSathyanarayana commented 8 years ago

@ericelliott - Currently Keystone [V0.3] does not use http verbs PUT and DELETE.

All the CRUD operations use GET and POST. Can we update Keystone.js to use:

Also see #2363

ericelliott commented 8 years ago

See the section on resourceful routing for a discussion on why I like to use PUT for both create & update (also supporting POST for Create).

Basically, the mapping I prefer is:

GET     /albums           ->  index
POST    /albums           ->  create, return URI
GET     /albums/:id       ->  show
PUT     /albums/:id       ->  create or update
DELETE  /albums/:id       ->  destroy
morenoh149 commented 8 years ago

in post /albums you could also echo the created object. That's what I've seen in the past.

VinayaSathyanarayana commented 8 years ago

In V0,3 GET is used for delete. Hope the mapping gets updated for V0,4. Would appreciate if there is guidelines on how to modify V0,3 to use DELETE for delete

VinayaSathyanarayana commented 8 years ago

Can we add support for Google File Storage in addition to Amazon S3 and Azure?

yornaath commented 8 years ago

When is the ETA on this? Editing the admin ui is a BIG thing

mxstbr commented 8 years ago

No ETA as of yet, but it won't be too long!

anjmao commented 8 years ago

Good work ! Just wonder if you guys thinked about using Typescript for codebase, which would give a lot of benefits(tooling, code quality and stability, new ES6-ES7 features and amazing async await support). Typescript also have good support for react. If where is any plans for this I can take care to convert all code to Typescript and prepare infrastructure, just let me know :)

mxstbr commented 8 years ago

The biggest problem with Typescript is that it's going to scare away new contributors. I'm not sure I (as a newcomer to a codebase) would be willing to dive into a new technology (TypeScript) just to contribute a small fix to an open source project.

I think TypeScript is a great technology, and I love what it does, but I'm not convinced it's the right choice for Keystone at this point.

anjmao commented 8 years ago

@mxstbr As I see keystone already use babel to allow ES6 and react html tags in js. Typescript have all this and much more. I highly suggest to watch this video for all developers and you may change your thinking about javascript development. Anders Hejlsberg know what he is talking http://youtu.be/6wEVu_mkJjM :)