First end-to-end ownership · small team lead · Tecon (Ekiba) · 2021–2022

GICA — wildfire management system for GEACAM

The system GEACAM's wildfire crews use to report their work from the field, even with no phone signal, while a web back office orchestrates shifts and campaigns and turns the day's work into management reports.

GICA — wildfire management system for GEACAM

GEACAM is the public company in charge of preventing and fighting wildfires in Castilla-La Mancha. Out in the field, every crew is led by a capataz who has to report the day's work, and that information is what later feeds the running of the campaign.

The catch is that crews work deep in the countryside, often with no phone signal at all, and the reporting still has to happen every day. GICA is the system I built to make that work. It was also the first project I owned from end to end: requirements with the client, the architecture, the build, and a small team alongside me. What follows is a short overview, kept deliberately high-level.

How it works #s1

At the centre is a set of shared data — shifts, campaigns, crews — that has to be kept up to date from a web back office. That web is where GEACAM's staff orchestrate the shifts and campaigns that flow down to the field app, and where the day's work, once it comes back, is turned into the reports used to manage the working day.

On the other end is a mobile app, the only thing the capataces touch. Because crews can spend the whole day somewhere with no coverage, it's built to work fully offline: it captures the day's work on the device and syncs it back to the shared data once there's a connection again. The mobile app was delegated to a teammate; my scope was the full-stack platform behind it — the web back office and the data it all runs on.

GICA system at a glance A bird's-eye view of the system. On the field side, a mobile app works with no coverage and syncs back when it can. In the middle sits the central platform with the common data (shifts, campaigns, crews). On the management side, a web back office orchestrates that data and generates the reports used to manage the working day. In the field intermittent coverage Field app mobile · offline logs the day's work the foreman reports offline no coverage syncs even while offline Central platform shared data shifts · campaigns staff and crews Back office orchestrates shifts and campaigns Reports to manage the working day updates & orchestrates generates
A web back office keeps the shared data (shifts, campaigns, crews) up to date and orchestrates it for a field mobile app. The mobile app works offline and syncs the day's work back. From the same data, the web generates the reports used to manage the working day.

From the daily report to the management reports #s2

Where the system earns its keep is the reports. From those daily field entries GEACAM has to produce the reports it runs the working day on: who worked in each unit, in which role, with which reliefs.

The hard part is shift changes. A crew isn't a fixed list: across the day and the month there are regulars, substitutions and people swapping shifts, and the report has to reflect who actually covered each position. Reconciling that by hand, unit by unit and day after day, was slow and easy to get wrong.

GICA streamlines it by automating it: from the field data it reconstructs who held each position, reliefs included, and generates the finished reports as downloadable files — one per unit, bundled together when several are requested. What used to be manual, error-prone work became a couple of clicks.

The reports, before and with GICA Before-and-after of the reporting process. On the left, the manual process: scattered data (shifts, substitutions, shift changes), reconciling by hand who covered each position day after day, and one error-prone Excel per unit. A central arrow marks that the process gets automated. On the right, with GICA: the already-synced field entries, an automatic reconstruction that resolves shifts and substitutions, and the finished reports as downloadable files in a couple of clicks. BEFORE · by hand WITH GICA · automated Scattered data shifts · substitutions · shift changes Reconcile by hand who covered each position, day by day slow One Excel per unit manual and error-prone automated Field data the entries, already synced Automatic reconstruction resolves shifts and substitutions Downloadable reports one file per unit · ZIP if several a couple of clicks
Before and after the reports. The manual process on the left: scattered data (shifts, substitutions, shift changes), reconciling by hand who covered each position day after day, and one error-prone Excel per unit. With GICA on the right: the already-synced field entries, an automatic reconstruction that resolves shifts and substitutions, and the finished reports as downloadable files in a couple of clicks.

At real scale #s3

GICA was never a pilot. More than 2,200 users filed their work every single day, across Castilla-La Mancha — sustained, real-world use rather than a demo. That scale is also why automating the reports mattered so much: at that volume, reconciling shifts by hand simply doesn't hold up.

GICA daily usage A picture of usage volume: more than 2,200 users filed their work every day from the field. On the left, the headline number; on the right, a pictogram of figures representing that sustained daily use across Castilla-La Mancha. +2,200 users every day filing their work from the field daily, sustained use real, sustained daily use across Castilla-La Mancha (illustrative pictogram)
More than 2,200 users filed their work every day from the field — sustained daily use across Castilla-La Mancha.

The technology, at a glance #s4

Under the hood it's a conventional three-tier setup, kept deliberately high-level here: the two clients — the field mobile app and the Angular management web — talk over HTTP to a Node.js and Express API written in TypeScript, which sits in front of a relational MySQL database.

GICA technology, at a glance A simple three-tier view of the technologies. The clients are a field mobile app (Android, offline) and an Angular management web; both talk over HTTP to a Node.js and Express API written in TypeScript, which reads and writes a relational MySQL database. Client Field app mobile · Android offline Management web Angular Server · API Node.js · Express TypeScript Database MySQL relational HTTP reads & writes
A three-tier view of the technologies: the clients are a field mobile app (Android, offline) and an Angular management web; both talk over HTTP to a Node.js and Express API written in TypeScript, which reads and writes a relational MySQL database.

What I took away #s5

GICA was where I first carried a product on my own shoulders: talking to the client, deciding the architecture, writing the code, and leading a small team. The freedom to move fast and own the outcome is still one of the things I've enjoyed most in my career.

It also grew well beyond its first scope, which taught me early how much a clean architecture pays off the moment a system has to grow into something its first spec never mentioned.

Stack

Angular Node.js · Express TypeScript MySQL