Source: https://seerepo.com/r/keplergl/kepler.gl/built
Markdown source: https://seerepo.com/r/keplergl/kepler.gl/built.md
Description: kepler.gl is a TypeScript repo built with React. It makes its content with markdown-to-jsx, @loaders.gl/gltf, and @loaders.gl/csv.

# What is kepler.gl built with?

kepler.gl is a TypeScript repo built with React. It makes its content with markdown-to-jsx, @loaders.gl/gltf, and @loaders.gl/csv, validates its data with prop-types and Zod, is tested with tape, sinon, Apache Arrow, deck.gl, Testing Library, and 8 more, and uses pyarrow, DuckDB, MCP, and sql.js. It has 421,871 written lines, with 345 test files.

Read on November 11, 2026, at commit 0caee84.

Repository: https://github.com/keplergl/kepler.gl

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 52 files

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 9 files

### Interface

- **Mapbox**: 1 file

## Support (/)

### Testing

- **tape**: 127 files
- **sinon**: 49 files
- **Apache Arrow**: 16 files
- **deck.gl**: 16 files
- **Testing Library**: 14 files
- **redux-mock-store**: 11 files
- **@math.gl/web-mercator**: 3 files
- **@probe.gl/test-utils**: 3 files
- **[D3](https://seerepo.com/uses/d3)**: 2 files
- **@luma.gl/constants**: 1 file
- **jsdom**: 1 file
- **supercluster**: 1 file

### Tools

- **babel**: 1 file
- **ESLint**: 1 file
- **madge**: 1 file
- **TypeScript**: 1 file
- **Webpack**: 1 file
- **webpack-bundle-analyzer**: 1 file

### Other

- **es-toolkit**: 30 files
- **react-redux**: 15 files
- **global**: 13 files
- **moment**: 10 files
- **react-intl**: 3 files
- **Redux**: 3 files
- **d3-array**: 2 files
- **h3-js**: 2 files
- **Babel**: 1 file
- **copy-to-clipboard**: 1 file
- **redux-actions**: 1 file
- **zarrita**: 1 file

## Frontend (bindings/python)

### The base

- **[React](https://seerepo.com/uses/react)**: 2 files

### Interface

- **anywidget**: 1 file

## Backend (bindings/python)

### Data

- **Apache Arrow**: 1 file
- **[pyarrow](https://seerepo.com/uses/pyarrow)**: 1 file

## Support (bindings/python)

### Tools

- **@anywidget/types**: 1 file

### Other

- **GeoPandas**: 2 files
- **react-redux**: 1 file
- **Redux**: 1 file
- **traitlets**: 1 file

## Support (src/actions)

### Other

- **@reduxjs/toolkit**: 7 files
- **es-toolkit**: 1 file
- **Redux**: 1 file

## Frontend (src/charts)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 1 file

## Support (src/charts)

### Other

- **[D3](https://seerepo.com/uses/d3)**: 1 file
- **d3-time**: 1 file

## Frontend (src/cloud-providers)

### The base

- **[React](https://seerepo.com/uses/react)**: 3 files

## Support (src/common-utils)

### Other

- **[D3](https://seerepo.com/uses/d3)**: 1 file
- **global**: 1 file
- **h3-js**: 1 file

## Frontend (src/components)

### The base

- **[React](https://seerepo.com/uses/react)**: 467 files

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 244 files
- **[classnames](https://seerepo.com/uses/classnames)**: 64 files
- **@emotion/is-prop-valid**: 1 file

### Interface

- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 17 files
- **deck.gl**: 9 files
- **[lexical](https://seerepo.com/uses/lexical)**: 8 files
- **d3-axis**: 7 files
- **[@floating-ui/react](https://seerepo.com/uses/floating-ui-react)**: 5 files
- **@math.gl/web-mercator**: 4 files
- **@tippyjs/react**: 3 files
- **react-map-gl**: 3 files
- **[react-virtualized](https://seerepo.com/uses/react-virtualized)**: 3 files
- **@turf/helpers**: 2 files
- **[d3-selection](https://seerepo.com/uses/d3-selection)**: 2 files
- **[react-copy-to-clipboard](https://seerepo.com/uses/react-copy-to-clipboard)**: 2 files
- **react-modal**: 2 files
- **[react-tooltip](https://seerepo.com/uses/react-tooltip)**: 2 files
- **[MapLibre](https://seerepo.com/uses/maplibre)**: 1 file
- **[react-color](https://seerepo.com/uses/react-color)**: 1 file

## Support (src/components)

### Content

- **markdown-to-jsx**: 3 files

### Validation

- **[prop-types](https://seerepo.com/uses/prop-types)**: 47 files

### Testing

- **Testing Library**: 38 files
- **redux-mock-store**: 1 file

### Other

- **react-intl**: 60 files
- **es-toolkit**: 19 files
- **global**: 16 files
- **[D3](https://seerepo.com/uses/d3)**: 10 files
- **react-redux**: 10 files
- **reselect**: 10 files
- **copy-to-clipboard**: 7 files
- **moment-timezone**: 5 files
- **Redux**: 3 files
- **moment**: 2 files
- **fuzzy**: 1 file
- **suncalc**: 1 file

## Frontend (src/constants)

### Interface

- **[D3](https://seerepo.com/uses/d3)**: 2 files

## Support (src/constants)

### Other

- **global**: 2 files
- **chroma-js**: 1 file
- **d3-array**: 1 file
- **d3-time**: 1 file

## Frontend (src/deckgl-arrow-layers)

### Interface

- **deck.gl**: 5 files

## Backend (src/deckgl-arrow-layers)

### Data

- **Apache Arrow**: 7 files

## Support (src/deckgl-arrow-layers)

### Other

- **@geoarrow/geoarrow-js**: 4 files

## Frontend (src/deckgl-layers)

### Interface

- **deck.gl**: 23 files
- **luma.gl**: 14 files
- **@math.gl/web-mercator**: 2 files
- **supercluster**: 1 file

## Support (src/deckgl-layers)

### Other

- **@math.gl/core**: 3 files
- **es-toolkit**: 3 files
- **global**: 3 files
- **[D3](https://seerepo.com/uses/d3)**: 1 file
- **Mapbox**: 1 file
- **pbf**: 1 file

## Frontend (src/duckdb)

### The base

- **[React](https://seerepo.com/uses/react)**: 5 files

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 4 files
- **[classnames](https://seerepo.com/uses/classnames)**: 1 file

### Interface

- **[monaco-editor](https://seerepo.com/uses/monaco-editor)**: 1 file
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 1 file
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 1 file

## Backend (src/duckdb)

### Data

- **Apache Arrow**: 6 files
- **[DuckDB](https://seerepo.com/uses/duckdb)**: 2 files

## Support (src/duckdb)

### Other

- **react-redux**: 2 files
- **es-toolkit**: 1 file
- **global**: 1 file

## Frontend (src/effects)

### Interface

- **luma.gl**: 4 files
- **@deck.gl/core**: 3 files

## Support (src/effects)

### Other

- **moment-timezone**: 1 file

## Frontend (src/layers)

### The base

- **[React](https://seerepo.com/uses/react)**: 34 files

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 5 files

### Interface

- **deck.gl**: 37 files
- **@turf/helpers**: 6 files
- **@math.gl/web-mercator**: 5 files
- **luma.gl**: 5 files
- **d3-interpolate**: 2 files
- **d3-delaunay**: 1 file

## Backend (src/layers)

### Data

- **Apache Arrow**: 7 files

## Support (src/layers)

### Content

- **markdown-to-jsx**: 2 files
- **@loaders.gl/gltf**: 1 file

### Testing

- **supercluster**: 1 file
- **Testing Library**: 1 file

### Other

- **es-toolkit**: 9 files
- **@loaders.gl/core**: 4 files
- **[D3](https://seerepo.com/uses/d3)**: 4 files
- **reselect**: 4 files
- **@math.gl/core**: 3 files
- **global**: 3 files
- **a5-js**: 2 files
- **react-intl**: 2 files
- **zarrita**: 2 files
- **buffer**: 1 file
- **long**: 1 file
- **s2-geometry**: 1 file

## Frontend (src/localization)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file

## Support (src/localization)

### Other

- **react-intl**: 1 file

## Backend (src/mcp)

### Data

- **Apache Arrow**: 3 files

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 1 file · [src/mcp/src/server/stdio.ts, line 19](https://github.com/keplergl/kepler.gl/blob/0caee840965272e50e8f6b007f0abe296074540b/src/mcp/src/server/stdio.ts#L19)

## Support (src/mcp)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 22 files

### Other

- **Redux**: 1 file
- **ws**: 1 file

## Backend (src/processors)

### Data

- **Apache Arrow**: 3 files
- **[sql.js](https://seerepo.com/uses/sqljs)**: 2 files

## Support (src/processors)

### Content

- **@loaders.gl/csv**: 1 file
- **[D3](https://seerepo.com/uses/d3)**: 1 file

### Other

- **@loaders.gl/core**: 3 files

## Frontend (src/reducers)

### Interface

- **@math.gl/web-mercator**: 2 files
- **@deck.gl/core**: 1 file
- **@turf/helpers**: 1 file
- **d3-color**: 1 file

## Support (src/reducers)

### Content

- **[D3](https://seerepo.com/uses/d3)**: 1 file

### Testing

- **Apache Arrow**: 2 files

### Other

- **global**: 6 files
- **redux-actions**: 6 files
- **es-toolkit**: 4 files
- **deepmerge**: 3 files
- **Redux**: 2 files
- **@reduxjs/toolkit**: 1 file
- **copy-to-clipboard**: 1 file
- **reselect**: 1 file

## Backend (src/schemas)

### Data

- **Apache Arrow**: 1 file

## Support (src/schemas)

### Other

- **global**: 3 files
- **es-toolkit**: 2 files

## Frontend (src/sqlrooms)

### The base

- **[React](https://seerepo.com/uses/react)**: 28 files

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 10 files

### Interface

- **[@dnd-kit/core](https://seerepo.com/uses/dnd-kit-core)**: 3 files

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 11 files

## Backend (src/sqlrooms)

### Data

- **Apache Arrow**: 1 file

## Support (src/sqlrooms)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Tools

- **Babel**: 1 file

### Other

- **react-intl**: 7 files
- **zustand**: 2 files
- **@paralleldrive/cuid2**: 1 file
- **Immer**: 1 file
- **react-redux**: 1 file
- **Redux**: 1 file
- **redux-logger**: 1 file

## Frontend (src/styles)

### Styles

- **[styled-components](https://seerepo.com/uses/styled-components)**: 2 files

## Support (src/table)

### Testing

- **Apache Arrow**: 1 file

### Other

- **@loaders.gl/core**: 3 files
- **[D3](https://seerepo.com/uses/d3)**: 2 files
- **es-toolkit**: 2 files
- **global**: 2 files
- **zarrita**: 2 files
- **moment**: 1 file

## Frontend (src/utils)

### The base

- **[React](https://seerepo.com/uses/react)**: 1 file

### Interface

- **@deck.gl/core**: 3 files
- **@math.gl/web-mercator**: 2 files
- **@turf/helpers**: 1 file
- **d3-color**: 1 file
- **Mapbox**: 1 file
- **[MapLibre](https://seerepo.com/uses/maplibre)**: 1 file
- **react-map-gl**: 1 file

## Backend (src/utils)

### Data

- **Apache Arrow**: 5 files

## Support (src/utils)

### Testing

- **assert**: 2 files

### Other

- **global**: 9 files
- **[D3](https://seerepo.com/uses/d3)**: 8 files
- **es-toolkit**: 7 files
- **h3-js**: 2 files
- **moment**: 2 files
- **decimal.js**: 1 file
- **moment-timezone**: 1 file
- **Redux**: 1 file
- **resize-observer-polyfill**: 1 file
- **suncalc**: 1 file

## Other repos with a similar stack

- [apache/superset](https://seerepo.com/r/apache/superset/built): React, pyarrow, DuckDB, MCP, Mapbox, classnames, deck.gl, @math.gl/web-mercator, react-map-gl, d3-selection, MapLibre, markdown-to-jsx, prop-types, D3, supercluster, d3-interpolate, Zod · [Compare](https://seerepo.com/compare/apache/superset/vs/keplergl/kepler.gl)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): React, MCP, classnames, lexical, @floating-ui/react, react-copy-to-clipboard, D3, Radix UI, react-resizable-panels, Zod, Lucide · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/keplergl/kepler.gl)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, MCP, dnd-kit, lexical, D3, monaco-editor, Radix UI, react-resizable-panels, Zod, Lucide · [Compare](https://seerepo.com/compare/keplergl/kepler.gl/vs/supabase/supabase)
- [appsmithorg/appsmith](https://seerepo.com/r/appsmithorg/appsmith/built): React, MCP, styled-components, classnames, @floating-ui/react, react-modal, D3, Radix UI, Zod · [Compare](https://seerepo.com/compare/appsmithorg/appsmith/vs/keplergl/kepler.gl)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, MCP, dnd-kit, lexical, Radix UI, react-resizable-panels, Zod, Lucide · [Compare](https://seerepo.com/compare/keplergl/kepler.gl/vs/paperclipai/paperclip)
- [cheaper-inference/OmniRoute](https://seerepo.com/r/cheaper-inference/OmniRoute/built): React, MCP, sql.js, dnd-kit, monaco-editor, Radix UI, Zod, Lucide · [Compare](https://seerepo.com/compare/cheaper-inference/OmniRoute/vs/keplergl/kepler.gl)

## Frequently asked questions

### What language is kepler.gl written in?

kepler.gl is written in TypeScript, with 421,871 written lines.

### What framework does kepler.gl use?

kepler.gl is built with React.

### What services does kepler.gl use?

kepler.gl uses pyarrow, DuckDB, MCP, and sql.js.

### Does kepler.gl have tests?

Yes. kepler.gl has 345 test files and is tested with tape, sinon, Apache Arrow, deck.gl, Testing Library, redux-mock-store, @math.gl/web-mercator, @probe.gl/test-utils, D3, @luma.gl/constants, jsdom, supercluster, and assert.

### Which repos have a stack like kepler.gl's?

The ones that share most of its stack: apache/superset, infiniflow/ragflow, and supabase/supabase.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
