Frontend languages and frameworks
The idea behind our frontend tech stack was actually relatively simple: we wanted to offer our employees a great working environment in which it is fun to operate. We also wanted to pull together a front end tech stack having the following characteristics: uniform, modern, fast, scalable and simple - and it definitely had to be industry standard.
With these prerequisites in mind, we analysed various frameworks and languages with our in-house Community of Practice for frontend, and created “proof of concepts” to test if they could function well in our Tech ecosystem. We ended up with Typescript, React, React Native, NextJS, Styled Components & Storybook.
Industry standard
All these frameworks, libraries and languages are definitely industry standard, and they are used and maintained by companies like Google, Spotify and Facebook, with community support all over the world.
Great working environment
This tech stack gives us the opportunity to work faster and have a better experience, thanks to some capabilities and key features, such as:
- Automatically reload the page during development
- Reuse existing applications for different use cases
- Create a company-wide design system with reusable components related to Storybook and Styled component.
- …and the list could go on and on.
Uniform, modern, fast, scalable and simple
We chose TypeScript because it is generally a superset of JavaScript, designed for large application development, and runs anywhere Javascript runs. It uses type inference, and it gives us great tooling without additional code with an awesome integration within the editor. And, of course, it saves us time debugging before we run our code.
Component-Based, Declarative and “Learn Once, Write Anywhere”, are values Facebook uses to promote its Javascript framework React / React Native. We were able to confirm this in our proof of concepts. In principle, it is also possible to use React in parts of existing applications. This simplifies the migration of legacy applications to the new tech stack. To take full advantage of sharable components and a common design system, we decided to use React Native for our mobile app as well.
In terms of speed and performance, we have been extremely successful in our latest projects thanks in part to NextJS. Thanks to the included features such as SSR & automatic code splitting, we were able to significantly reduce the loading time of some elementary pages of our funnel and landing pages.
The selection of our tech stack has also been successful in the search for new developers and in the onboarding area. We received numerous applications for the last open positions and newcomers were able to be productive in our new projects within 2 days.
Sounds exciting? Then apply now as a frontend developer!
Backend languages and frameworks
We want to support the business evolution in the best way possible, by reducing the amount of defects, waste and effort needed to introduce new features. We reach this goal by writing efficient and maintainable code.
We use a number of different technologies. Based on the requirements needed to support the business, we have products written on different stacks such as C#, PHP, Python and C++, but most of the product backend technology is based on the JVM stack: Java and Kotlin are the reference languages.
Let me tell you a story. Some years ago there were a lot of different services, based on different JVM/Tomcat/Spring versions, different release processes, different monitoring and a number of different implementations of the same thing over and over.
It was a mess! Cognitive load was at its maximum peak, product engineers had to maintain different ways of doing the same thing, on-call engineers were screaming to have a standard way to monitor applications, SREs had to support different versions of the same stack…
We wanted to standardise something, at least the fundamentals, and we didn’t want to reinvent the wheel each time we needed to develop a new feature. We wanted to leverage on standardised commodities to ease and speed up the development, deployment and monitoring of any feature or system. To achieve this, we decided to use industry standard technologies and adapt them to our needs. That’s why app-framework was born.
App-framework is our internal framework based on Spring Boot. It was conceived on our needings, leveraging on solutions born inside product teams and the experience that we as product engineers gained during the years. In fact, even if it is primarily maintained by a core team of developers inside the product area, anyone can contribute.
New technologies are continuously integrated to conform to configuration, monitoring, and security conventions and allow development teams to incorporate them into their solutions quickly.
Do you need something or make it more efficient? Just work on it, open a merge request and jump into the discussion! App-framework is community based (we use an inner source model): everyone is empowered to make it better, cleaner, and more beautiful.
Want to discover more?
This is the third in a series of articles where we talk about our pink world. If you want to discover more, read: