Libraries and Dependencies

AKA What's keeping this thing afloat?

Framework

WebGeoDa uses Next.js, a server-side rendering JavaScript framework by Vercel.

Geospatial Engine

Our geospatial engine (and namesake) is Dr Xun Li and Dr Luc Anselin's jsGeoDa, a WebAssembly-based geospatial analysis module. By default, it's accessed in a WebWorker, aka a separate thread, meaning your interface is free for interaction while Geospatial analysis is going on.

Mapping

By default, mapping is done using Mapbox with Deck.gl layered on top. In the future, additional map components may be available.

Visualization and Information Expression

In the works 👀

State Management

State management is done with Redux/React-Redux. Redux is a classic, and a good fit here given the frequent state updates, partial state access, and potentially high cost of re-rendering the map. Our built-in actions use just a reducer and inline-actions, rather than an additional actions file:

    // some component
    const dispatch = useDispatch(); // send an action to the reducer
    const myFunction = (someData) => {
        dispatch({
            type: 'Very Import Update',
            payload: someData
        })
    }

UI Toolkit

There are numerous UI toolkits available in the React ecosystem, like React Bootstrap, Material-UI, Ant Design, and others.

Our provided UI toolkit focuses on simple, vanilla HTML and CSS focused components and high accessibility. So, we base our interactive components on Reach UI, a highly accessible foundation for React-based design systems and Flexbox Grid, a simple CSS-based column layout tool.

WebWorker Management

We use Comlink to call and manage our WebWorkers. It's lovely.

Last updated