From 0718d111aa938030b0cc6a49d8bd9aca7aed9a5c Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Sun, 9 Feb 2025 15:00:18 -0600 Subject: [PATCH] Added arch diagram and download repo instructions --- episodes/01-Introduction.md | 23 ++++++++++------------- episodes/fig/Nova_Architecture.png | Bin 0 -> 36297 bytes 2 files changed, 10 insertions(+), 13 deletions(-) create mode 100644 episodes/fig/Nova_Architecture.png diff --git a/episodes/01-Introduction.md b/episodes/01-Introduction.md index c17073e4..b43717b7 100755 --- a/episodes/01-Introduction.md +++ b/episodes/01-Introduction.md @@ -45,19 +45,7 @@ NOVA is a framework that aims to simplify the development of applications that i To better understand how NOVA works with NDIP, consider this simplified architecture: -NOTE: THIS WILL BE REPLACED WITH AN ACTUAL DIAGRAM ONCE CHANGES SETTLE -``` -User Application (Built with NOVA) - | (Leverages) - V -NOVA Framework -+-----------------+ +-----------------+ +-----------------+ -| nova-galaxy |---| nova-trame |---| nova-mvvm | (NOVA Libraries) -+-----------------+ +-----------------+ +-----------------+ - | (Interacts with) - V -NDIP Platform (Neutron Data Interpretation Platform) -``` +![](fig/Nova_Architecture.png) In essence, you will build your **User Application** using the **NOVA Libraries**, which in turn will interact with the **NDIP Platform** to perform neutron data analysis tasks. @@ -76,6 +64,15 @@ In this tutorial, you will learn how to use these three core NOVA libraries to b We\'ll be using example tools as a demonstration for this tutorial, however, the lessons learned here can be applied to a wide variety of neutron scattering data analysis applications. This hands-on tutorial will guide you through each step of the process, empowering you to build your own interactive tools. +## Downloading the tutorial repository + +The tutorial is hosted on the ORNL gitlab at [https://code.ornl.gov/ndip/public-packages/nova-carpentry-tutorial](https://code.ornl.gov/ndip/public-packages/nova-carpentry-tutorial). The simplest and recommended way to download the tutorial repository is by using git and the command: +```bash +git clone https://code.ornl.gov/ndip/public-packages/nova-carpentry-tutorial.git +``` + +It is also possible to download a zipped copy of the repository directly from the repository\'s gitlab web site. + ## Code Examples Directory All of the code examples used in this tutorial are available in the `code` directory of the tutorial repository. These examples are built upon the template application that you will clone in the next episode. The code is organized by episode, with each episode having its own subdirectory (e.g., `code/episode_2`, `code/episode_3`, etc.). diff --git a/episodes/fig/Nova_Architecture.png b/episodes/fig/Nova_Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbf916d0dfb4f7eec96741c74dee63a86c8425e GIT binary patch literal 36297 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 X)q6hczW&C*z`)??>gTe~DWM4fAXY|O literal 0 HcmV?d00001 -- GitLab