jgaehring.com logo
Screenshot of farmOS Field Kit

farmOS Field Kit

An extensible hybrid app for farmOS, with offline capabilities

Technologies used:

  • Vue.js
  • Apache Cordova
  • Progressive Web App


farmOS is a web-based application for farm management, planning and record keeping. While farmOS can run on any computer, phone or other device with a web-browser, farmOS Field Kit is intended to provide more mobile-friendly, lightweight applications that farmers can use from anywhere on their farm. This way, they can update their farmOS records even if they're out of range of wifi or a cellular signal.

Field Kit is built using Vue.js and is available at farmos.app as a Progressive Web App (PWA), or as native apps for Android and iOS (via Cordova). The Android app is currently in beta release on the Play Store, and the iOS app is on Test Flight, available via invite. As with farmOS Core, Field Kit and native applications are 100% open source.

The first features developed for Field Kit were commissioned by Paicines Ranch in California. The ranch was already using farmOS to keep track of the grazing conditions for their livestock, but wanted to be able to take observations of the forage quality with their phones, while surveying the many paddocks spread out on their 7000 acres of pasture. Although farmOS could easily be loaded in their phone's browser, the moment they left the wifi range of their farm office, they could no longer make updates to farmOS, because that process was reliant on a connection to their farmOS server. The native application solves this by having its own persistent storage, which can be synced with the farmOS server at a later time when connectivity is restored. Farmers can also take pictures with their phones and easily include them with those observations, because the native app can access the phone's hardware directly.

Working with Knuth Farms of Nebraska we expanded the features to function as a task scheduler. Upcoming activities could be generated by the farm manager and then synced to users' phones. Then the user could make live updates from the field, mark the task as complete, and later sync it back to the server.

In the future we're aiming to expand the capabilities of the app even further with a concept we call "field modules." These are Vue plugins that can be lazy-loaded into the app based on data from the server. In this way we hope to provide highly customizable interfaces that can meet the needs of specific farms, while also avoiding feature bloat and UI clutter. Further discussion and a proof-of-concept can be found on GitHub.