Cocoliche

Ruby on Rails team for a second-hand clothes marketplace

1 — About Cocoliche

Cocoliche is a quality second-hand clothes shop. They have several physical shops in La Plata and Buenos Aires, Argentina, as well as an online marketplace.

2 — The challenge

Brenda and Constanza, founders of the brand, approached us with an exciting opportunity to improve their back-office operations. They were looking to increase performance and introduce new features, including Inventory Control and Barcode Scanner Integration.

After thoroughly reviewing the code, we found several key areas for improvement. The first thing we noticed was the lack of updates through the years, making this old Ruby on Rails application obsolete. Both the Ruby interpreter and Ruby on Rails were 5 or 6 years old. The second thing we noticed was the infrastructure had some issues and could be greatly improved. The application was deployed to a VPS (Virtual Private Server) and it ran both the production and the staging environment, as well as the database server. The third thing we noticed was it had a lot of technical debt.

"Their efficiency, kindness, and punctuality were impressive. They delivered excellent solutions."

Constanza Darderes | Founder

3 — The solution

The solution consisted of 3 parts. The first one was updating Ruby and Ruby on Rails so we could take care of the infrastructure. We recommended transitioning both the production and staging environments to Heroku. This move not only simplifies maintenance compared to the current setup but also enhances security and cost-efficiency.

The second part of the solution consisted of improving the overall performance of the application. Years of accumulated technical debt had significantly contributed to the poor performance of certain key modules that Cocoliche's staff relies on daily.

Lastly, the new features: Inventory Control and Barcode Scanner Integration. Cocoliche sells unique garments, there aren't two of the same kind and they frequently move between stores, most of them exposed to the public. Keeping track of each garment manually was a tedious and time-consuming process. Integrating a Barcode Scanner was necessary not only for the Inventory Control, but also for simplifying the staff when selling clothes.

4 — The outcome

After 2 months of hard work, the Ruby on Rails application was upgraded from version 5.0 to version 7.0, and along with it the Ruby interpreter from version 2.3 to 3.1. Two separate production and staging environments were deployed to Heroku, and as a byproduct of these, we migrated the old MySQL database the application was running to a newer PostgreSQL database.

The performance improved greatly: the application had some technical debt that made some pages load in over 30 seconds. By fixing this technical debt, we took these pages to load in less than 500ms.

We built the Inventory Control module and integrated the Barcode Scanner. These two features allow printing product codes to barcodes and scanning them to make sales and perform searches. It also provides comprehensive control over stock across all branches, allowing for individual item tracking and historical analysis. These features reduced the amount of work each store needed to do every single day before closing, from hours to minutes.

screenshot of the app

Technologies

Ruby on Rails Postgres