The backend of FreeDATA is built with python, with a couple dependencies written in C/C++, and the frontend is build with VueJS, so you will need Python (from 3.10 to 3.13) to work on the backend, and node+npm to work on the frontend.
System dependencies required:
- python3 (with virtual environment support)
- portaudio
- hamlib (optional, there is a vendored version bundled with the freedata server, or you can build it from source)
- nodejs + npm
Example for debian trixie: sudo apt update && sudo apt install python3 python3-venv nodejs npm portaudio19-dev
Example for MacOS: brew install python pyenv-virtualenv npm node@24 portaudio
To fetch the python dependencies create a virtual environment and next use pip:
- Create a virtual environment:
python -m venv venv - Load the virtual environment
source venv/bin/activate - There are several sets of dependencies you can install:
pip install .installs only the libraries required to run freedatapip install .[test]installs the libraries required for running and testing freedatapip install .[dev]installs the libraries required for running, testing and linting/checking freedatapip install .[build]installs only the libraries required to run and build the freedata pip modulepip install .[nuitka]installs only the libraries required to run and build the freedata windows executable
To fetch the npm dependencies go inside ./freedata_gui and run npm install. See ./freedata_gui/README.md for additional informations.
The python sources must be formatted and checked using ruff. There is a CI
workflow that block all PRs that do not pass the linter/formatter checks.
- To check formatting run
ruff format --check(lists file that needs formatting) - To see what the automatic formatter will change run
ruff format --preview --diff(shows diff-style changes). - To automatically format files run
ruff format --preview
NOTE: the --preview enables new auto-formatting actions and enables a feature
usefull in the CI. In the future it will no longer be necessary
- To run the checker/linter execute
ruff check - Some errors can be automatically fixed running
ruff check --fix, but always check and test the changes made by ruff. There are errors that ruff cannot safely fix automatically, you must fix them manually.
To run the backend tests run inside the virtual environment python -m unittest discover tests