Welcome to XRF-Explorer 2.0’s documentation!¶
The XRF Explorer 2.0 is a web application aimed at conservation scientists, that facilitates the analysis of paintings composition. Here you will find information about its source code, including how it works and how to use it for future development.
Getting Started¶
In this section you will find all the necessary steps to be able to run and contribute to the XRF-Explorer 2.0 codebase.
Backend Configuration¶
The XRF-Explorer backend is a Flask app served by waitress. The xrf_explorer/__init__.py
file contains the setup for the backend app and the run.py
file is the main file from which the backend is run. Further backend code is located in the xrf_explorer/server
directory.
Backend Dependencies¶
Python¶
The project’s backend runs on Python 3.12. To get started, download and install python from one of the following sources (depending on your OS):
Install on Windows
Install on Linux (Ubuntu):
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install python3.12
Python Libraries¶
Once you have the correct Python version installed, we highly recommend creating a virtual environment for the project, in order to keep dependencies containerized and the requirements.txt
file as limited as possible.
All dependencies needed to run and contribute to the project are located in the requirements.txt
file in the root directory. To install the dependencies, simply run:
$ pip install -r requirements.txt
The file can easily be updated by running
$ pip freeze > requirements.txt
WARNING: this command will place all the dependencies you have currently installed in the requirements.txt
file, so make sure you have removed any unnecessary dependencies from your environment beforehand.
Tools¶
To automatically generate the code’s documentation we use sphinx. In order to use sphinx and build the documentation, you will need Make.
If you’re using Linux, this should already be pre-installed.
If you’re using Windows, you can install Make with the Chocolatey package manager, which is installed alongside Node.js (see Frontend Dependencies). Once you have Chocolatey installed, simply run choco install make
from the CMD or PowerShell.
Running the Backend¶
To start the backend, you can simply run from the root directory:
$ python run.py
If you would like to test communication with a remote server, we recommend installing a VM running Ubuntu 23.04 and changing the necessary fields in xrf_explorer/client/config.ts
.
Generating Documentation¶
Generating the code documentation is very simple and only requires a couple of steps:
Navigate to the project’s root folder
From the terminal run the following to generate the ReST files. The .exe extension may be omitted in some environments.
$ sphinx-apidoc(.exe) -f -o ./documentation/sphinx/source/ .
Build the documentation in HTML format with
$ ./documentation/sphinx/make html
You can see all available formats with
$ ./documentation/sphinx/make
Frontend Configuration¶
The frontend is stored in the xrf_explorer/client
directory. The frontend is based on Vue.js and UI components are taken from the shadcn-vue project, documentation for which can be found here.
Frontend Dependencies¶
For developing the frontend npm
is required. To avoid issues, we recommend installing Node.js v20, which comes with npm
packaged:
Install on Windows.
Install on Linux (Ubuntu):
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y curl
$ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
$ sudo apt install -y nodejs
(Optional) You can alternatively easily manage multiple Node and npm versions directly from the CLI using Node Version Manager.
You can check that you have the correct versions with
$ node –version
and
$ npm –version
(The npm version you should be using is specified in xrf_explorer/client/package.json
)
Running the Frontend¶
To get started with the development process, run:
Download and install all the dependencies specified in
xrf_explorer/client/package.json
with:$ npm install
Move to the frontend development directory:
$ cd xrf_explorer/client
Compile the website to the
xrf_explorer/client/dist
directory, from which it can be served by the Flask backend, by running:$ npm run build
Start a development server with
$ npm run dev
Frontend Codestyle¶
To enforce consistency in the client code, prettier
and eslint
have been configured to the check code style.
Check if the client code conforms to the
prettier
andeslint
rules:$ npm run style:check
Fix some of the errors reported by
style:check
:$ npm run style:fix
Setting up the prettier formatter to automatically format on save can immediately remove large amounts of errors.
Code Documentation¶
Python Modules:
Vue Components: