# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.webgeoda.org/dependencies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
