Libraries and Dependencies
AKA What's keeping this thing afloat?

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

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.

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

In the works 👀

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
})
}

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.

We use Comlink to call and manage our WebWorkers. It's lovely.
Copy link
On this page
Framework
Geospatial Engine
Mapping
Visualization and Information Expression
State Management
UI Toolkit
WebWorker Management