Inside the box - July, 2016

Hi folks!

We have been a little quiet the last few weeks. We work hard on the new version! We made a lot of improvements and we want to share them with you.

To keep you involved about our progress on Strapi, we have thought about posting fresh news every two/three weeks on GitHub or on our blog. This is a way for us to keep you informed about what we are doing. Some of you told us that they can not see any activity on the project because we posted some news only on our Slack channel. We had heard you. That’s why we made the decision to post news on a regular basis.

v2.0 alpha release

As you certainly know, during the last months, we worked a lot of a brand new version of Strapi. The purpose was to move from Waterline to Bookshelf, change the repository structure, improve the GraphQL and JSON API implementations and make some performance improvements. However, we decided to move on (more details in our last blog post http://strapi.io/blog/the-future-of-strapi). The consequences were that this new version doesn’t fit with our future needs anymore.

Some of you had started their projects on the v2.0-alpha, that’s why we released it very discreetly to put your project in production. We will be following up with the people concerned about this version. However, please do not start your project on the v2.0-alpha, use the v1.5.4.

About the v3.0

In our new vision, we defined three main words: community, flexibility, simplicity. Which means Strapi will be very easy-to-setup and easy-to-use. Everything will be a plugin. You will be able to custom your project to perfectly fit with your needs. No more useless and unnecessary feature. And finally, a single marketplace for sharing plugins into the community.

To reach our goal, we had to make some changes in Strapi. Firstly, our framework layer had to be reworked a bit, and we need to build a brand new administration panel to embrace the plugins.

Framework layer advancements:

  • Using ES6 syntax in the whole codebase. We will still use require() while import/export are not natively supported by Node.js.
  • Separating hooks by categories. We divided the hooks into four parts (core, dictionary, models, web sockets). Each part is fully independent. This allows us to encapsulate bugs. For example, if the web sockets server crashes, the core (HTTP server) will not be impacted.
  • Rewriting of few parts to simplify and reduce the codebase and improve performances.
  • Supporting new property nextTo in the package.json hook to provide the ability to load a hook after another one. For example, Bookshelf needs to be loaded after Knex. This will be useful for the of the plugins load.
  • Supporting Mongoose ORM by default. You will still be able to use Bookshelf instead. However, the whole ecosystem (plugins) will have to use Mongoose. Why Mongoose? MongoDB is the most popular NoSQL database. It works pretty well with Node.js. It is efficient and it is very easy-to-setup. Moreover, it is more easy-to-use than SQL database (no migration, schemaless). Our main priority is to avoid frictions and build a dead simple ecosystem.
  • Removing GraphQL and JSONAPI from the core framework. The both functionalities will be plugins.

Administration panel advancements

  • Setting up the architecture. Our stack will be very basic: React, Redux, Webpack, and Bootstrap (custom).
  • Starting design of the administration panel.

Administration Panel

Plugins advancements

  • Setting up the architecture. A plugin is like a sub-app. It is a React component with a backend MVC layer. A plugin will be able to:
    • Interact with the backend server (routes, dictionary, hooks, etc).
    • Interact with the administration panel

Why can’t I see anything on GitHub?

Currently, we are working on a private repository. Our work had been dirty and instable to have time to find the right way to make what we described above possible. The framework layer will be pushed on the new branch called v3.0 within the next two weeks.

We are so excited about this brand new version

Community

We want to thank everyone for your support! More and more of you joined the community during the last weeks. We are now more than 300 on our public Slack channel and we reached one thousand of downloads on npm during the last month. We hope these numbers will continue to increase over the next months. This would be awesome!

We also published a new page on our website to share with you, our community statistics.

Next steps

For the next weeks, our main goals are :

  • Developing the structure of the administration panel
  • Starting the migration of the Studio’s features into plugins (API manager, Settings manager, Databases manager, etc.)

How can I help you? Feel free to submit a PR or open an issue on GitHub. Send us an email at hi@strapi.io, if you need support or anything else, we will be glad to chat with you. Don’t hesitate to ping us on Slack (@jim, @aureliengeorget, @pierreburgy).

Thanks for reading!