← All workENTERPRISE · MOBILE·2019

Agriscience Field App

Mobile backend for field specialists (NDA) — A global agriscience company (under NDA) ran iOS and Android apps for field specialists on an ageing Drupal 7 backend. The work was to modernise it — newer PHP, a redesigned API, push notifications — while keeping every app version already installed in the field working.

Drupal 7PHP 7NginxMySQLFirebaseGuzzleHTTPJSON/AJAXcURL
Agriscience Field App
Sector
Enterprise · Mobile
Year
2019
Role
Backend engineer
Outcome
PHP 5.6 → 7.4 · API 2.0 with backward compatibility · Firebase push
The problem

What needed fixing.

You can't force a field technician to update an app on their schedule, so the backend had to serve both the new app and every old one at once. On top of that it was running on PHP 5.6 — past end of life, a security and performance liability — and needed push notifications it didn't have.

The approach

How I built it.

I migrated the backend from PHP 5.6 to 7.4, then designed API 2.0 for the updated app with full backward compatibility, so older installs kept working while new ones got the new surface. I integrated Firebase and built push notifications on top of it. Unglamorous, high-stakes plumbing — the kind where success means nobody in the field notices anything changed.

The Drupal backend behind iOS and Android apps for field specialists — modernised under the apps' feet without breaking the old versions still in the field.

Objectives
  • 01Modernise an ageing Drupal 7 mobile backend without disrupting live apps
  • 02Migrate from end-of-life PHP 5.6 to 7.4
  • 03Design API 2.0 with backward compatibility for older app versions
  • 04Add push notifications via Firebase
Key elements built
  • PHP 5.6 → 7.4 migration on a live production backend
  • API 2.0 designed with backward compatibility for fielded app versions
  • Firebase integration and app push notifications
  • Drupal 7 backend serving both iOS and Android clients

The backend behind the app in the field

Some software lives on a desk; this lived in a glovebox. A global agriscience platform with iOS and Android apps for specialists working out where the signal is patchy and the phone is three versions behind — and behind all of it, a Drupal 7 backend I supported and extended. The brief was never "rewrite it"; it was "keep it running, make it more, and don't break the apps already out there in the world."

A new API that didn't abandon the old phones

The updated app needed a new API — call it 2.0 — but you cannot post a software update to a tractor. Plenty of users would stay on older app versions for months, and every one of them still had to work. So the new API shipped with backward compatibility deliberately built in: two versions answering at once, the old phones none the wiser, the new ones getting the better contract. Boring to the user, which is exactly the point.

Telling phones things, on purpose

Then came Firebase and push notifications — the unglamorous plumbing that lets a backend tap a specialist on the shoulder when something in the field needs them. Guzzle for the integrations, JSON over the wire, and a PHP 5.6 → 7.4 migration underneath the whole thing so the platform wasn't standing on an end-of-life runtime. Modernise the foundations, extend the reach, break nothing in service. That was the job.

Push notifications
Push notifications: the backend tapping a specialist on the shoulder.
Full stack
Drupal 7PHP 7NginxMySQLFirebaseGuzzleHTTPJSON/AJAXcURL

Got something with similar shape? I read every message personally.

Start a project →