lastminute.com logo

Technology

Frontend and backend languages and frameworks

christian_speer
christian speer
giancarlo_di_paolantonio
giancarlo di paolantonio

In this third blog post of the series about our Tech ecosystem we look at the technologies that we adopted in the frontend and backend space, and explore the reasons behind our choices.


Christian Speer joined lm group in 2017, as an Engineering Manager. Christian leads 6 teams with a total of 23 engineers. Christian is passionate about web technology, he is an author and has been working in his field for more than 20 years. Christian founded the Community of Practice for frontend development in the company, introduced a common design system together with UX and continues to push frontend development always to the next level.

Giancarlo Di Paolantonio is a Tech Reference and Product Engineer here at lm group. He joined the company 7 years ago and during his time here he had the opportunity to work on many business domains and with different people. He is also an internal trainer for High Quality Software, TDD, Refactoring Legacy Code and one of the co-founders of the Ticino Software Craft Meetup.

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.

frontend tech stack
The frontend technology stack

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.

backend tech stack
The backend technology stack

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:


Read next

SwiftUI and the Text concatenations super powers

SwiftUI and the Text concatenations super powers

fabrizio_duroni
fabrizio duroni
marco_de_lucchi
marco de lucchi

Do you need a way to compose beautiful text with images and custom font like you are used with Attributed String. The Text component has everything we need to create some sort of 'attributed text' directly in SwiftUI. Let's go!!! [...]

A Monorepo Experiment: reuniting a JVM-based codebase

A Monorepo Experiment: reuniting a JVM-based codebase

luigi_noto
luigi noto

Continuing the Monorepo exploration series, we’ll see in action a real-life example of a monorepo for JVM-based languages, implemented with Maven, that runs in continuous integration. The experiment of reuniting a codebase of ~700K lines of code from many projects and shared libraries, into a single repository. [...]