Software Architecture

Naufal
HappyFresh Fleet Tracker
2 min readNov 14, 2019

Deep understanding of the tools needed to develop and deliver our products is a rudimentary factor in ensuring that the team and the services we provide is competitive in the market. In the HappyFresh Fleet Tracker project, our code will be hosted as an image using Docker, deployed to an Amazon EC2 server provided by HappyFresh.

Credit: Danny August Ramaputra

This simple diagram describes the flow of data and logic throughout our project. HappyFresh provides an API which will provide information about the driver’s general information such as name and ID, the order’s detail which includes the order ID, customer’s delivery location. Data that need to be gradually updated, which in our context, is the coordinates of the driver’s position are sent through a message-queue which will be sent to our system in a certain interval.

The back-end stack, written in GoLang, is responsible in providing endpoints between HappyFresh and our system. The raw message will then be wrapped as a json file which could then be processed by the front-end stack.

In the front-end stack, the map interface, hosted by google maps, is implemented using React JS. The data received from the back-end is sent through a websocket connection, and is then used to render each respective markers in the interface.

Our application will then be as Docker containers which is processed into an image using Docker compose, a tool to define and run multi-container docker applications. This eases and automates the process of building our image and gets our code ready for deployment at a moment’s notice. Below is our YAML configuration file:

Credit: Danny August Ramaputra

That’s it for our software architecture. Other details such as NGINX reverse proxy and SSL encryption aren’t quite implemented yet as our application is not yet deployed onto the HappyFresh EC2 server.

--

--