> For the complete documentation index, see [llms.txt](https://docs.webgeoda.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.webgeoda.org/dependencies.md).

# Libraries and Dependencies

## Framework

WebGeoDa uses [Next.js](https://nextjs.org/), 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](https://xunli.gitbook.io/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](https://www.mapbox.com/) with [Deck.gl](https://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](https://redux.js.org/)/[React-Redux](https://react-redux.js.org/). 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:

```javascript
    // 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](https://react-bootstrap.github.io/), [Material-UI](https://material-ui.com/), [Ant Design](https://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](https://reach.tech/), a highly accessible foundation for React-based design systems and [Flexbox Grid](http://flexboxgrid.com/), a simple CSS-based column layout tool.

## WebWorker Management

We use [Comlink](https://github.com/GoogleChromeLabs/comlink) to call and manage our WebWorkers. It's lovely.
