We started a company a couple of years ago. We were delivering mobile apps, websites, and custom software products. Our first challenge was that we didn't have a full-time backend developer on the team, and it wasn't easy to hire one.
We started experimenting with backend-as-a-service tools and other CMS like Firebase or Parse. However, they were not perfect - Firebase got too expensive for our clients, and Parse stopped the official support. That's why we decided to look for another solution, which would speed the development, let clients independently manage content, and fit our tech stack.
We tried the online demo; it was quick; we didn't need to install anything, fill out the form and use a sample project. Once we saw that the editorial features would fulfill the client's requirements, we tried to do a project with Strapi, and it worked like a charm. Our frontend developers quickly learned how to use it because it's based on Node.js.
What's more, we needed a solution that would be compatible with most hosting providers. We are using Heroku for 99% of projects and sometimes AWS. Strapi has great documentation that explains how to connect the project with different hosting providers.
We are using Strapi for almost all of our projects. We often use it with Flutter or React Native for mobile apps, and React + Next.js for web apps.
One of our initial projects with Strapi is a loyalty mobile app for Livision, an optical store in Croatia. The app contains information about the customers, their loyalty cards, discounts, news, and coupons.
The client wanted to be able to add most of the content to the app and trigger push notifications by himself. Back then, the roles and permissions feature wasn't available in Strapi, so we coded some parts by ourselves to make sure the client couldn't edit some of the collection types. It's great that Strapi is open-source, and we can add custom features if we need to.
We used Flutter and REST API to create a mobile app. The development was pretty straightforward, and everything was ready out of the box. The only part where we needed to add custom code was the push notifications logic. We connected Strapi with Firebase to be able to send notifications. The developer experience was great from day one, as we knew that requests and responses used the same forms and everything was consistent.
Later, we discovered GraphQL support and started using it on other projects. It's amazing because we can determine what kind of input and output we want.
We had some collection types, like users, posts, inventories (the items sold by the shop), discounts, and stores (company shops).
We also leveraged single types, a feature that not all CMSs have. One single type is called Configuration, and it lets us set all the parameters for a promotion campaign. For example, we can decide at what time of the day to send birthday coupons to users, with which discount, on which conditions, and with which image. We also have a single Loyalty Card, which contains info about each client's loyalty card.
With Strapi, we can ship new projects 3 times faster than before. It's easy to customize and adapt to clients' needs; it perfectly fits the tech stack. Last year some features were not available (like RBAC or internationalization). Still, we could develop our solution since Strapi is open-source and flexible.
Speaking of Livision app, 30% of the company's customers are using it daily, and the client can manage all the content in it independently.
We use Strapi for most of our projects, web, and mobile. It lets us deliver projects 3x faster, and customers use it with ease.