Sinar TXM

We started building a Bluetooth-based mobile app for measurement device manufacturer Sinar in early 2017. The main purpose of this app is to connect the iOS / Android mobile app which we developed, to a hardware sensor, called a “TXM” which is a piece of Bluetooth hardware which Sinar produce.

The app is targeted at both small-scale, and large-scale farmers, who grow crops, and process the raw material harvested from said crops on-site on their farms.

The TXM device plugs into a variety of Sinar’s hardware products. These products measure the moisture, temperature, weight, and other metrics of a given crop sample. These crops include corn, maize, wheat, green coffee beans, brown coffee beans, and an array of other popular crop types produced around the globe.

The TXM provides a Bluetooth capability to the measurement device, which sends the measurement readings as they come in to a connected Bluetooth client, i.e. this mobile app.

Previously Sinar’s measurement instruments would require the user to use the instrument to take a measurement reading of a crop sample, and then plug the device into a computer, i.e. laptop or desktop, and export the readings into a CSV file, which the user would then open in Excel. Naturally this is time consuming, and in most cases, prevents the user from carrying out the measurement analysis on-site, thus finding out if the crop is okay to process there and then. Without the mobile app, they’d have to take their instrument back to the office to examine the CSV spreadsheet file, before giving the go ahead to process the crop.

We built the Sinar app using React Native. The app is available on the iOS and Android operating systems and comes with the purchase of Sinar’s TXM unit.

The app plays the role of the Bluetooth client, which connects to the TXM. We utilise the Bluetooth sensor on the mobile device to connect with a user’s TXM (or multiple TXMs) and then utilise the sensor again to listen out for incoming measurement readings.

When a new reading reaches the mobile app, it is displayed on the homepage, displaying to the user the key information they’ll be looking for, i.e. the moisture content of their sample. This information is critical to the user, as they will not be able to process their crop (roast / dry / ship to client) if the moisture content is not within a defined range. This range is typically defined by their buyers. For example, Costa Coffee will only accept green coffee beans which were roasted between a given range of moisture values.

Clearly then, the mobile app’s utilisation of sensors on the device was the most critical component. It allowed us to interact with the TXM unit, and bring the readings through into the app, ready to display to the farmer in the field. Allowing them to make the judgement call there and then whether or not a harvested crop is ready for processing.

Launch Tide

We worked with the staff of the R&D department of the United Kingdom Hydrographic Office (UKHO) to create the Launch Tide app, which is an iOS and Android app the UKHO designed in collaboration with the RNLI, to assist RNLI rescue staff with the provision of key tidal, weather, and sea state data, describing the current, and future conditions of their set stations and beaches.

Launch Tide allows RNLI staff to register an account, search for their relevant RNLI stations and beaches, either using a text search, or through utilising the device’s GPS sensory unit, to return a list of the nearest stations / beaches which are closest to the user’s device. The user can then view and interact with the key tidal, weather, and sea state conditions, based on their current set location.

Launch Tide is a JavaScript hybrid mobile app, which was built using the React Native framework. Interaction with mobile sensors is performed within the app, i.e. using interfaces to provide a bridge between the JavaScript application code, and the underlying native sensor APIs, exposed by the device’s operating system.

Conditions Screen

The conditions screen does what it says on the tin, it displays the following data, which provide an insight into the weather conditions at the user’s location, for the current time, and it provides a look-ahead feature, whereby if you swipe right, the data values will change to display the condition predictions in the following 3 hours, i.e. you’re looking ahead to what the conditions will be like in the next 3 hours – a potentially critical feature for ensuring the safety of the RNLI crew when on long rescues.

The data on the conditions screen is broken down into three cards:


The tide card shows the current height of the tide, the time until the next turn in the tide, i.e. high tide / low tide, as well as the expected height of the tide at the next scheduled turn.

The look ahead feature is enabled for this card, allowing the user to see what the tide state will be like in the next 3 hours.


The weather card shows the temperature, wind speed, and wind direction.

The look ahead feature is also enabled for this card, allowing the user to see what the weather will be like in the next 3 hours.

Sea State

The sea state card shows the current wave height, sea temperature, and wind direction in the area, essential data for an RNLI rescue mission!

Tide Predictions Screen

The tidal prediction screen allows the user to interact with UKHO’s tidal prediction API, to browse the tidal prediction data, based on their set current location.

The app allows users to choose a date, which defaults to the current time, this date is then passed to two of UKHO’s tidal prediction API functions – one which returns a set of information, detailing the next 4 changes in tide (high tide / low tide).

The second function from UKHO’s tidal prediction API returns a dynamically rendered PNG graph, this graph visualises the changes in tide in a graph, with the app allowing the user to pinch to zoom the image to get a close-up view of what the tide height prediction is for a given time.

Changing the date using the calendar icon at the top-right of this screen will trigger the screen to automatically update with UKHO’s tidal prediction API, and therefore allows the user to seamlessly view both current and future tide predictions for their current location.


We helped the United Kingdom Hydrographic Office (UKHO) build PortDB, a web portal which displays maritime related geospatial data such as berths, dredged areas, restrictions, and many more. The geospatial data is stored in a PostgreSQL database and rendered using Mapbox GL JS, a JavaScript library that uses WebGL to render interactive maps from vector tiles and Mapbox styles.

We used completely open source tools to build this platform. It’s hosted using an Amazon EC2 server running Linux Ubuntu.

We used AngularJS to build the front-end application and MapBox GL JS to render the map. For the back-end system we built a PHP API which interacts with a PostgreSQL database which stores the user authentication data along with some of the geospatial data.

Map Filter

PortDB has a filter whereby the user can choose what should be displayed to them on the map. They can also this filter to switch between a raster map layer or a satellite image.

User Profile

We implemented a user profile in PortDB which allows the user to define a profile about themselves. This was designed so that, if a user was responsible for sailing a tanker, then they could opt to only show relevant geospatial data for tankers on the map. The profile also allows the user to define the vessel size, draft size, and length of their vessel to further tailor the data displayed to them.

Site Tour

PortDB has a “tour” which we built using AngularJS. This function gives the user a tour of the web portal showing them all of the key features that they can use.

“Typeahead” Location Search

We implemented a “typeahead” search function for PortDB. As the user types into the location search bar we send Ajax JavaScript requests from our Angular app to the PHP API which then queries the PostgreSQL database for any ports matching the text the user input. Upon clicking on a search result the map then pans to the desired location.

Maritime Information Portal

MIP (Maritime Information Portal) is a web application we produced for the United Kingdom Hydrographic Office (UKHO). MIP was created for mariners who wish to view a variety of information sources including:

  • Reported and unconfirmed Hydrographic Notes sourced directly from the portal and via the ADMIRALTY H-Note App
  • Product Limits
  • Maritime information such as RNWs, World Ports, and Anti shipping activity

The portal aids mariners, particularly those who actively use a vessel by presenting them with relevant maritime information data such as wrecks, water pollution, and new sea features (such as piers). This data can help mariners plan their journeys around any potentially hazardous maritime incidents.

The Maritime Information portal has a front-end AngularJS application which gets displayed to the user, this application uses a google map to display the geospatial data to users. There is a PHP API that the Angular app communicates with. This PHP API is connected to both a PostgreSQL database which holds the geospatial data and a MySQL database which holds the user authentication data.


We built in a “gamification” mechanism into the Angular app. Users would score points for every H-Note they submitted to the App which got verified. Once they reach certain milestones, their H-Note rank increases. This is displayed visually on the front-end as a collection of stars. Users ranking range from 1 to 5. This mechanism helps users engage with the portal and provides an incentive for them to report H-Note incidents via the portal.

Bello Wild Food

Bello Wild Food

The Bello Wild Food App is a bespoke, ecommerce solution built for a producer / distributor of British wild ingredients, e.g. seaweed, mushrooms, etc. They sell their freshly sourced wild ingredients directly to restaurants around the UK.

We developed a full-stack Javascript solution for Bello Wild Food, comprising of a NodeJS / MongoDB backend database, along with an AngularJS / Apache Cordova hybrid mobile (JavaScript) application, which runs on both Android and iOS mobile operating systems.

We utilised the AngularJS JavaScript framework in this project to develop some of the following elements:

  1. Develop both the client-facing, and administration elements of a product ordering system, allowing clients to fill a basket of goods, and fulfil a purchase order, as well as an administration suit, which allows the administrators of the Bello Wild Food app to login and manage / analyse their orders, and order history. We used the flexibility of Angular’s router to conditionally declare routes in the application, this allowed us to create a completely different experience for both clients, and administrators of the system, through the same application.
  2. We developed the data-entry element of the app to work completely offline, this allows Bello Wild Food foragers to capture photos of their produce, straight from the source and upload a new product listing to the store. This process works completely offline, we developed an upload queue using Angular services, which stores the data for new products, places it in a queue, and attempts upload at the first available moment, i.e. when a network connection has been established.
  3. Both a local, and push notification services were developed for the Bello Wild Food app, notifying customers when new products have been uploaded to the store, and administrators when orders are made, and modified by clients using the app. The local notification service simply alerts, and displays notifications generated through actions on the app, to it’s users, e.g. client makes an order, admin gets a notification – these notifications are persistent, and act as an audit log history for your account in effect. The push notification service was developed to notify chefs directly, as soon as fresh produce was available, this has the advantage of not requiring the chef to be using the app to know something is available, their phone will ding, and let them know on their lock screen!
  4. Develop a data-light, lazy loading shop, which allows the user to scroll through the entire Bello Wild Food product listings, only loading items as they come into view, providing the user with a fluid user experience, whilst at the same time being very light on their data plan.


Heropreneurs celebrates and rewards the energy, passion and dedication, of our British Armed Forces Community looking to forge a new path in business.

Theresa May, UK Prime Minister

We all owe our service men and women a huge debt of gratitude for the sacrifices they make for our country. The support and advice you provide through Heropreneurs is giving talented current and former personnel interested in starting their own businesses the chance to realise their potential.

Cavanna Homes website 2019 design

Cavanna Homes

Cavanna Homes have been building beautiful new homes across the South West since the firm was established in 1923.

Today, the company is run by the third generation of Cavanna family and continues to construct stunning properties that customers love.

They are now the largest independent house builder based in the South West – a proud developer with an unbeatable reputation for the highest standards of design and build quality.


With a passion for gardening and a love of the outdoors, Jardinopia have created a multi-faceted garden oriented company that offers innovative new designs for practical and utilitarian products – affording something different for people that enjoyed the same lifestyle.

Their first product, Potty Feet, is a range of unique decorative bronze and hand painted plant pot feet depicting a range of characters and animals, including popular dog breeds.

Memory Bubbles

Memory Bubbles is a social network which stores user’s photos and videos allowing them to organise them and add extra metadata to them, e.g. who took the photo, when was it taken, etc. Users can then search their photos using these fields.

Memory Bubbles consists of a web application, an iOS app, and an Android app, all of which were built using AngularJS.