Building a web application with Compose as a server.

Jetpack Compose is a upcoming declarative UI framework for Android with many new features provided by its compiler plugin and smart runtime. As a long-time Kotlin enthusiast, I was amazed when it was announced a year ago and still discover something new in there every now and then.

However, the Compose story doesn’t end on “just” building UI. Even during the first talks describing magic behind the curtain, the library goal was defined as “to efficiently build and maintain tree-like data structures”. …

Image for post

Some time ago, I read an article describing a problem experienced with Kotlin objects and serialization using built-in Java methods. The author suggests an amazing solution involving adding the readResolve method to each object implementing rather than using instance checks.

Despite this approach seemingly being the most correct one to go with, supporting it might be quite a nightmare. Given that here, at Bumble and Badoo, we don’t use Serializable anywhere except for Bundle, we decided to keep is for each clause of when expression, and forget about that problem altogether. However, in the back of my mind, I just could not understand why Kotlin compiler does not generate readResolve by itself for JVM targets. …

Image for post

MagicLab is developing several applications (i.e: Badoo, Bumble, Chappy and Lumen) and each one of them is a separate product with its own features, management, product and engineering teams. However, we all work together in the same office and solve similar problems.

Nevertheless, projects have diverged greatly during development. The codebase was influenced not just by different time frames and product decisions, but by the vision of the developers as well. In the end, we noticed that projects have the same functionality, which substantially differs in implementation.

We then decided to move towards a structure which would give us the opportunity to reuse features in different applications. Now, instead of developing functionality for individual projects, we create common components that can be integrated into all of the products. If you’re wondering how we got there, welcome to the rest of the article! …

Andrei Shikov

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store