Development
Open Data Editor uses a client/server architecture wrapped into a desktop application. As a server, we use a Python codebase that uses frictionless-py for data and metadata processing. As a client, we use this codebase written in TypeScript that uses React for components and Zustand for state management. As a desktop wrapper, we use Electron for NodeJS.
Prerequisites
To start working on the project you need the following dependencies in your machine:
- Python 3.11+
- Node 20+
- python3.11-dev (For PyInstaller)
Enviroment
NPM is included into the Node distribution so we just need to install hatch
:
pip3 install hatch
Python
Before starting with the project we recommend configuring hatch
. The following line will ensure that all the virtual environments will be stored in the .python
directory in project root:
hatch config set 'dirs.env.virtual' '.python'
hatch shell # Enter the venv
Now you can setup you IDE to use a proper Python path:
.python/opendataeditor/bin/python
Installation
To start working on the project install the dependencies:
make install
JavaScript
We highly recommend enabling TypeScript checks for your IDE.
Codebase
Application
To work on the whole application:
make start
Note that there are few CSV files in the data
folder to test the app. You can find more in the internet (it’s good to test it using different files).
Server
Running the server in isolation:
make server # default folder
# OR
hatch run start <data-folder> # optionally provide a data folder path
Client
Running the client in isolation:
make client
# OR
npm run start
Desktop
Previewing descript application:
make preview
# OR
npm run preview
Documentation
Documentation is written with Starlight (in the portal
directory). The source articles are in the portal/content/docs
directory. To start a live-reload server and work on the docs:
make docs
It will be automatically published on CloudFlare when merged to the main
branch with previews available for pull requests.