Custom Backend for a Smart Flower Pot
Belitsoft helped a French company upscale their product and optimize the backend.
- Technologies: Ruby on Rails, Bluetooth 4.0 Low Energy, PostgreSQL, redis, React.JS
- Team size: 1 software developer
Belitsoft was approached by a leading European manufacturer of smart devices.
One of the client’s products is a smart flower pot. The inbuilt sensors monitor moisture, light, temperature and sun exposure. The information is then used to give users targeted, plant-specific, and situation-specific advice about how to best care for their flowers.
The platform was working well for individual users, but it needed adjustment to fit the agricultural market. There could be thousands of pots in use on a single farm and the software wasn’t able to handle such a load.
After considering their options, the client chose Belitsoft for the following reasons:
- Efficient communication. During the project discussions the managers were professional in understanding the client’s needs, as well as helpful and open to contact;
- Transparent quote. The estimate that the development team has provided was detailed and realistic, demonstrating their competence;
- Relevant experience. Belitsoft had developers who had the required domain expertise.
The project was delivered with an Agile approach. The development was split into 2-week long springs with a demo session at the end of each. This allowed the client to see the progress and make adjustments as necessary.
We used Skype, Slack and Google Hangouts for day-to-day communication. The customer required that we use their Mantis bug tracker.
The development was guided by a Project manager from the client’s staff.
Processing large amounts of data was the main issue we needed to address. The end user’s farm had 6000 pots which gathered information every 15 seconds. And the system needed to provide yearly statistics.
To make this possible, Belitsoft has created a new API for large-scale farms. We used bulk data transfer to process high volumes of information and compile the reports.
A lot of work was done at the database level.
- We replaced ORM with direct requests to optimize memory usage;
- We normalized the DB. After the adjustments, it updated only the necessary fields, instead of the whole table;
- We applied sharding. The monolithic database was split into several smaller ones to speed up information processing.
The results were visible both to the client and their bottom line. The time for processing user request decreased from 30 to 7 seconds. And the costs of server use decreased by over five times, from $8000/month to $1200/month.
The customer was happy with the project and asked us to take over the work on the app for drone cameras.