Monthly Update - September 2019

10 September 2019

Our short-term mission is to make Strapi the easiest and seamless content management software for developers. A few months ago, we ran a survey over the community to understand what were the pain points and how we could find solutions. After analysis, for some pain points, we realized that we only had to improve a feature, whereas, for others, we would have to create new features from scratch.

One main request from the community was the ability to create groups of fields and to repeat them. So, today, I'm thrilled to announce that Strapi now supports a new data structure called the Repeatable Groups. We simply named that feature "Repeatable Groups" because that's what this feature is about: first of all, this feature allows to group fields. But this feature unleashes its full power because you can repeat the Groups in your project.

Before going deeper into the product and the new feature, let's make a quick update on the company and the team.

👫 Company

We are happy to welcome Maeva as Product Designer in the team. She will help us improve the user experience and support the contributors to develop the best interfaces.

We apply the Buddy system to our onboarding process and therefore, to Maeva's arrival. The principle is simple: anytime she has a question about whatever subject Strapi-related, she can freely ask Alexandre for guidance. The purpose is to give more context, to make the integration smoother, and to have a better overview of the company processes.

On another subject, we are moving to our new Strapi HQ soon! We had to leave our previous office at the end of August, and our new office will not be available before the end of September. We saw this unusual situation as an opportunity to work as a full-remote company for three weeks. It's now been 10 days, and we are already changing our processes. We communicate more asynchronously and improve our writing skills. This will allow the recruitment of future remote team members.

And this makes the perfect introduction to our next subject. We are still looking for our new Product Manager/Owner. The job was initially located in Paris. But you can now apply from anywhere if you already worked remotely. Feel free to do it, we study and reply to every single application.

🕹 Product

With this new release comes a bunch of enhancements and fixes in the product. Here is a summary of the most significant changes.

Ability to filter using the created_at and
updated_at fields.

Fix and better handling of the date field whatever the database used.

Support of a new relationship: ManyWay.

Support of unique constraint for SQL databases.

Replace default _id by id in Mongoose.

You can find the full list of the fixed issues (more than 37) in this release here.

🛣 Roadmap

Good news! We are ahead on the roadmap. We made more things than planned, but we also had to postpone two of them.

The first one is the support of foreign keys constraints for SQL databases (#2). The reason is that when we dug into this subject, we saw that we would also need to think about the cascading delete/update strategy and how to handle required relation. This has increased the workload a lot, and we would prefer to delay it (see below).

We also decided not to start the development to be able to reorder fields (#4) in the Content-Type Builder because we missed information to deeply understand the needs of the requesting users. It doesn't make sense to us to reorder fields in the Content-Type Builder when you can already reorder the layout of fields in the Content Manager. We will interview the people who upvoted the feature to understand what are their use cases.

Improve the storage of the layout.

Support unique constraint and foreign keys.

Secure the administration access to the API.

Be able to reorder the fields (delayed).

Increase the flexibility for naming collection/table names.

Display images in the list view (in progress).

Allow new line in the layout and make it smoother.

Replace the current markdown editor by a rich text editor.

⚙️ Latest release

We are making use of the new data structure introduced by the Repeatable Groups feature to refactor and remove legacy code. To attract new contributors, we want to keep pushing and continuously improve the developer experience. That's why we started to migrate the codebase to React Hooks and to remove node-sass as a dependency. To do that, we are going to migrate all the components on styled-components and use the one available in our components library Buffet.js.

The global experience is a priority for us. We are listening carefully to the feedback from the community. This is why we removed the list view in the Content-Type Builder and developed a more user-friendly homepage.

🧗‍♂️Next steps

We identified that most of the pain points left were related to a single topic: the data.

Support foreign key constraint for SQL databases.

Let the users import and export data.

Migrate across environments (development, staging, production).

Databases validation errors management.

Easily * customize models* provided by a plugin.

Support GraphQL aggregation for SQL databases.

Create nested documents in a single query.

Renaming and editing model name or fields name with SQLite.

Support AND and OR filters in the API.

Be able to only see my own entries (isOwner policy).

Store and keep the order of relational entries.

To solve all these pain points, there is a single answer: a new data layer. We will share more on this in the next Monthly Update. For now, we want to keep focusing our efforts on the data structure and flexibility. Whatever the content or use cases, you should have an easy way to manage it with Strapi.

Please find below the updated and new product roadmap for the three upcoming months.

See pictures and files preview from the content manager list view.

Clean the content-type lifecycles (related to the new data layer topic).

Enhance the flexibility of the data structure with dynamic blocks in content type's schemas.

Be able to reorder fields in the content-type builder.

Support static (or singleton) content-type to manage website pages.

Support the Webhooks to trigger CI builds, update a backup mirror, or redeploy your frontend.

Add a Media Library to link a file to multiple entries.

Remove legacy code and technical debt, upgrade libraries, etc.

Conclusion

To dive in, I suggest you check out the RFC repository to see in details what are the other features which are going to be implemented. We make a lot of announcement on Slack or Twitter, feel free to subscribe or follow us!