SmartCities

The urban platform, change by change

We support the development of the core of Mejora tu Ciudad: the tests every change goes in with and the background work inside the platform itself.

Technology Partnership

Starting point

An urban services platform grows by accumulation: every municipal department asks for its module, every new regulation adds a requirement, and the system ends up holding together operations nobody designed as a whole. The challenge wasn’t building an application, it was taking charge of a living product that can’t stop.

What we did

The platform is Mejora tu Ciudad, by Radmas Technologies, S.L., and we work on its development side by side with their team, here on the core of the backend. The roadmap is decided together every cycle: which module goes in, which technical debt gets paid down and what gets postponed, with the Radmas team in Spain and ours in Colombia, which meant decisions had to be written down instead of living in the head of whoever happened to be online at the time.

We started with the tests. We built the automated test base that every change goes in with today, and we have maintained it with the product ever since: every fix goes in with its own, which is what stops a bug already resolved from coming back through the back door.

The data arrives complete. We strengthened the persistence layer —where the platform stores every report—, the downloads councils use to work with their data, the searches and the processes that handle many reports at once, and we completed those downloads with the data councils were asking for.

The background work runs inside the platform. We replaced the queue service hosted by a third party with components that run on the infrastructure Radmas already operates, and we defined an explicit contract for each message. With that we retired old dependencies and that work moved onto what the platform already came with.

A new council goes in through configuration. We adjusted the configuration and the search engine so that a council arriving draws on what already exists, and we strengthened the webhooks the platform uses to talk to the council’s own systems. Onboarding no longer asks for changes to the application’s structure.

And the deployment is portable across cloud providers, which was a deliberate decision and not a consequence.

The result

The relationship is still open and the work is concentrated where the business is: the flow a report travels through its statuses until it is resolved. Every change goes in with its test, the background work belongs to the platform, and onboarding a new council is done by configuring.

PHP / SymfonyRabbitMQElasticsearchMongoDB