An online medium-long term apartment and room rental web platform.
Nestpick is a company that allows to rent homes or apartments to people for a mid-long term (from 1 month to 1 year). The company was Founded by Fabian Dudek when he was just 20. Rocket Internet (and others) invested more than 10M euro in the idea.
I joined Nestpick as Senior Software Engineer right after the first round of substantial investments and in the maximum growth period. I quickly moved to a Tech-Lead role and acquired more and more responsibilities.
The main product was quickly built from an existing code base in really short time with a team of 7 developers, 1 quality assurance and a product manager (excluding the marketing and operations teams that quickly reached more than 100 heads).
The old application
The first application was built with PHP, using Zend Framework 1 application for the backend and Yii Framework for the frontend. Mysql for the main database, Solr as search engine and Memcache for boost performance.
A really big monolith, a single repo for everything and all the code was sharing dependencies everywhere.
The application worked fine but soon we stared to see rooms for improvement and the team velocity going down. We quickly realized that we have to start improving it. We decided to start a refactoring process.
The main constraint was a continuous improvement that meant improving the application from the technical point of view while continuously delivering improvements from the business point of view (more features and less bugs).
The new application
We started adding a Symfony 3.0 API as main access point to the data stored in the database, a webpack and React.js frontend, and removed thousands lines of codes that allowed us to improve performance and deliver features quicker and quicker.
We focused at the beginning on the user-facing part of the application. Later we started also to improve the operations-facing part of it by trying to increase the velocity on the back-office. We decided to start dropping the "custom" back-office and use SonataAdmin, and "admin-generator" that allows to create basic back-office panels in hours for some simple areas.
The new architecture had a much more clear dependency graph, that allowed to have less bugs and to increase the speed of delivering new feature.