toolbox-server
Resources for the server that hosts the toolbox (Backend)
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (18.7%) to scientific vocabulary
Repository
Resources for the server that hosts the toolbox (Backend)
Basic Info
- Host: GitHub
- Owner: ProvideQ
- License: mit
- Language: Java
- Default Branch: develop
- Homepage: https://provideq.kit.edu
- Size: 48.9 MB
Statistics
- Stars: 4
- Watchers: 0
- Forks: 1
- Open Issues: 24
- Releases: 5
Metadata Files
README.md
ProvideQ Toolbox Server
This repository contains the source code for the ProvideQ Toolbox server. A web-based user interface can be found in our ProvideQ/ProvideQ repository.
Development setup
- Install Java 17 or newer (check with
java -version) - Clone this repository
- [Optional, Solver Installation - install the Solvers that you want/need]
- Python-based Solvers (Qiskit, Cirq, Dwave, Qrisp)
- Install Python
- Install Python dependencies by running
python scripts/install-python-dependencies.py
Note: Ensure that you execute the script from the root directory! Otherwise the created venv/ directory might be created at the wrong path.
- Compiled Solvers (e.g. used for VRP and TSP)
- Solvers implemented in compiled languages must be executed via binaries that are compiled for your operating system. For those types of solvers we usually include pre-compiled binaries for windows, mac (only arm), and unix.
- In case the pre-compiled versions do not work on your machine: re-compile them. Detailed compliation guides can be found in the solvers/custom/[solver-name] directory.
- GAMS (multiple solvers are build on this):
- Install a python env that works with GAMS (skip this step if you don't need GAMS)
- Install GAMS. (https://www.gams.com/download/)
- Install miniconda (or anaconda, if you prefer that): https://conda.io/projects/conda/en/stable/user-guide/install/index.html
- Create a GAMS conda environment:
conda create --name gams python=3.10 --yes - Activate your conda environment:
conda activate gams. - Make GAMS use that python environment by setting the
GMSPYTHONLIB=<path-to-conda>/envs/gams/lib/libpython3.10.soenvironment variable. - Install GAMS packages to the GAMS conda env:
pip install gams[core,connect] --find-links <path-to-gams>/api/python/bdist- If you get an error building
psycopg2, try to install these postgres packages:sudo apt-get install postgresql libpq-devand run thepip install ...command again
- If you get an error building
- Install the python dependencies we use in our python packages:
pip install -r ./solvers/gams/python/requirements.txt
- Python-based Solvers (Qiskit, Cirq, Dwave, Qrisp)
- Run the server using
./gradlew bootRun
Deployment
This repository is designed to be deployed with Dokku, but you can also run
the Java application directly or inside a docker container (Dockerfile is included!).
The docker container can be built and run as follows:
```shell
we assume that you have a gamslice.txt file in this directory containing a valid GAMS license (typically 6 lines)
docker build --tag provideq-toolbox-backend --build-arg GAMS_LICENSE=$(base64 --wrap=0 ./gamslice.txt) . docker run --publish 8080:5000 provideq-toolbox-backend ```
Releasing a new version
- Create a release branch from develop:
git checkout -b release/x.y.z. - Bump the version number in the
build.gradlefile to the new version number and commit it to the release branch. - Push to GitHub and create a pull request to merge the release branch into
main. - Make sure to test your new version!
- Write a changelog.
The PR can help you identify differences between the last release (
main) and the next one (your release branch). - Merge the PR into main.
- Create a new GitHub release with a new tag named like your
version number
x.y.zand use the changelog as the description. - Pull the main branch (
git checkout main && git pull), merge it into the develop branch (git checkout develop && git pull && git merge main) and push it (git push).
CI / CD
We're using GitHub Actions to automate the execution of our validation tools and the deployment of our software. To use this, enable GitHub Actions and configure the following secrets in the GitHub repository settings:
GAMS_LICENSE:- Get a license for GAMS and put it in a
gamslice.txtfile. A free demo or community license should be sufficient. - Convert the license text to base64 using this command:
shell base64 --wrap=0 ./gamslice.txt - Copy the printed base64 string to the
GAMS_LICENSEsecret in your GitHub repository.
- Get a license for GAMS and put it in a
DOKKU_SERVER_ADDRESS:- Install Dokku on your deployment server. Make sure it can be reached from GitHub Actions!
- Set the
DOKKU_SERVER_ADDRESSsecret to the address of your server.
Tip: If you use an IP address, the IP address will be obfuscated in the Actions logs. Counterintuitively, using a domain name as an address might leak your IP address due to SSH address resolution logs.
DOKKU_DEPLOYMENT_KEY:- Generate an ssh key and register it as a dokku user.
- Make sure this user has push access the
toolbox-frontend,toolbox-backend,toolbox-frontend-stagingandtoolbox-backend-stagingapps. - Set
DOKKU_DEPLOYMENT_KEYto the private key generated in step i.
License
Copyright (c) 2022 - 2023 ProvideQ
This project is available under the MIT License.
Owner
- Name: ProvideQ
- Login: ProvideQ
- Kind: organization
- Repositories: 2
- Profile: https://github.com/ProvideQ
Citation (CITATION.bib)
@article{eichhorn2025provideq,
title = {ProvideQ: A Quantum Optimization Toolbox},
author = {Eichhorn, Domenik and Poser, Nick and Schweikart, Maximilian and Schaefer, Ina},
journal = {arXiv preprint arXiv:2507.07649},
year = {2025}
}
GitHub Events
Total
- Create event: 30
- Release event: 2
- Issues event: 27
- Watch event: 6
- Delete event: 2
- Issue comment event: 139
- Push event: 245
- Gollum event: 8
- Pull request review event: 46
- Pull request review comment event: 46
- Pull request event: 49
Last Year
- Create event: 30
- Release event: 2
- Issues event: 27
- Watch event: 6
- Delete event: 2
- Issue comment event: 139
- Push event: 245
- Gollum event: 8
- Pull request review event: 46
- Pull request review comment event: 46
- Pull request event: 49
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 18
- Total pull requests: 18
- Average time to close issues: 6 months
- Average time to close pull requests: about 2 months
- Total issue authors: 4
- Total pull request authors: 4
- Average comments per issue: 0.33
- Average comments per pull request: 1.28
- Merged pull requests: 13
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 15
- Pull requests: 17
- Average time to close issues: about 2 months
- Average time to close pull requests: 22 days
- Issue authors: 3
- Pull request authors: 4
- Average comments per issue: 0.2
- Average comments per pull request: 1.0
- Merged pull requests: 12
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Elscrux (14)
- koalamitice (11)
- schweikart (3)
- tubadzin (3)
- SirNoName2705 (1)
Pull Request Authors
- Elscrux (15)
- koalamitice (13)
- tubadzin (7)
- zaibod (7)
- schweikart (3)
- SirNoName2705 (1)
- LucasBerger (1)