alan-turing-institute / CROP

CROP is a Research Observation Platform
MIT License
24 stars 4 forks source link
crop digital-twin hut23 hut23-1234 hut23-378 hut23-637 hut23-708 hut23-739

CROP

License: MITBuild Status

CROP is a Research Observations Platform designed and created by the Research Engineering Group at the Alan Turing Institute in collaboration with Dr Ruchi Choudhary's research group and Growing Underground.

Summary

The aim of CROP is to prototype a digital twin of the Growing Underground underground farm.

CROP is an on cloud-based application which utilizes the flexibility, customization and evolution that a cloud-native system provides, to better refine, simplify and improve the processes and architecture of the system with regards to our research needs.

The digital twin:


Key Functionalities

The Unity 3D model is found in this repo

Implementation

CROP is implemented using a well established software stack (given below) and exploits four different services on the Azure cloud computing platform.

Software stack

Platform Service Software

Function









WebApp

Storage

PostgreSQL

Repository structure

The directories are structured as follows:

All of tests, webapp, ingress_functions, util_scripts, and models import and use various parts of core. None of them import from or talk to each other.

The repository root also has three Docker files:

Some of the subfolders have their own READMEs. See them for more details of each part.

Development credits

Gentelella - a free to use (MIT license) Bootstrap admin template on which the webapp is built.

Deployment

We employ a continuous delivery toolchain using Github Actions which deploys the latest version of CROP when a push or a PR is made to the main or develop branches. The Github Actions

The Azure services for the webapp and the ingress functions listen to updates on Docker Hub, and deploy the latest container once it has been pushed to the Hub.

The main and develop branches are deployed to production and testing versions of the platform, respectively. The former is relatively stable, the latter may be broken in the course of development.

Scripted deployment

A complete set of infrastructure for a CROP deployment on Microsoft Azure cloud can bet setup using Pulumi.
For instructions on how to do this, see here

Developer instructions/running locally

When developing the code for the CROP platform, it may be useful/necessary to run the webapp locally. To do this:

Getting help

If you found a bug or need support, please submit an issue here.

How to contribute

We welcome contributions! If you are willing to propose new features or have bug fixes to contribute, please submit a pull request here if you have permissions, or fork the repository, make your changes, and submit a pull request from your fork.