Skip to content
Open Data Editor
GitHub

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.