|
| 1 | +# Libraries |
| 2 | + |
| 3 | +Data Expert is built on open-source libraries. This page lists the notable ones, what each does in the app, and |
| 4 | +where to learn more. Exact versions are pinned in [`backend/requirements.txt`](../backend/requirements.txt) and |
| 5 | +[`frontend/package.json`](../frontend/package.json) (resolved in `package-lock.json`). |
| 6 | + |
| 7 | +## Backend (Python 3.14) |
| 8 | + |
| 9 | +| Library | Version | Used for | License | |
| 10 | +|---------|---------|----------|---------| |
| 11 | +| [FastAPI](https://fastapi.tiangolo.com/) | 0.142 | REST API: routes, request validation, OpenAPI docs at `/docs` | MIT | |
| 12 | +| [Starlette](https://www.starlette.io/) | 1.7 | ASGI toolkit under FastAPI; streamed downloads | BSD-3-Clause | |
| 13 | +| [Uvicorn](https://www.uvicorn.org/) | 0.54 | ASGI server that runs the backend (`python -m app.main`) | BSD-3-Clause | |
| 14 | +| [sse-starlette](https://github.com/sysid/sse-starlette) | 3.5 | Server-sent events for streamed AI responses | BSD-3-Clause | |
| 15 | +| [Pydantic](https://docs.pydantic.dev/) v2 | 2.14 | Request and response models, AI plan validation | MIT | |
| 16 | +| [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) | 2.15 | Settings from `config.yaml` and environment variables | MIT | |
| 17 | +| [PyYAML](https://pyyaml.org/) | 6.0 | Reads `config.yaml` | MIT | |
| 18 | +| [Polars](https://pola.rs/) | 2.0 | The data engine: lazy reading of every format, paging, search scans, edits, transforms, statistics, export | MIT | |
| 19 | +| [PyArrow](https://arrow.apache.org/docs/python/) | 25 | Parquet metadata (instant file open), streaming row readers, Arrow IPC browse copies, ORC | Apache-2.0 | |
| 20 | +| [NumPy](https://numpy.org/) | 2.5 | Search index fingerprints and vectorized statistics | BSD-3-Clause | |
| 21 | +| [HTTPX](https://www.python-httpx.org/) | 0.28 | Calls to OpenAI-compatible, Anthropic and Gemini model APIs | BSD-3-Clause | |
| 22 | +| [fastexcel](https://github.com/ToucanToco/fastexcel) | 0.21 | Reading Excel files (`.xlsx`, `.xls`) through Polars | MIT | |
| 23 | +| [XlsxWriter](https://xlsxwriter.readthedocs.io/) | 3.2 | Exporting to Excel through Polars | BSD-2-Clause | |
| 24 | +| [fastavro](https://fastavro.readthedocs.io/) | 1.13 | Reading Avro files | MIT | |
| 25 | + |
| 26 | +## Frontend (React + TypeScript) |
| 27 | + |
| 28 | +| Library | Version | Used for | License | |
| 29 | +|---------|---------|----------|---------| |
| 30 | +| [React](https://react.dev/) | 18 | UI components | MIT | |
| 31 | +| [TypeScript](https://www.typescriptlang.org/) | 5 | Static types for the whole frontend | Apache-2.0 | |
| 32 | +| [Vite](https://vite.dev/) | 8 | Dev server and production build | MIT | |
| 33 | +| [Tailwind CSS](https://tailwindcss.com/) | 3 | Styling | MIT | |
| 34 | +| [Radix UI](https://www.radix-ui.com/primitives) | 1–2 | Accessible primitives behind `src/components/ui/` (select, tabs, dropdown, checkbox, scroll area) | MIT | |
| 35 | +| [TanStack Table](https://tanstack.com/table) | 8 | The Browse data table: columns, sizing, row selection | MIT | |
| 36 | +| [TanStack Query](https://tanstack.com/query) | 5 | Server-state caching and request deduplication | MIT | |
| 37 | +| [zustand](https://zustand.docs.pmnd.rs/) | 4 | Global state stores (`src/stores/`) | MIT | |
| 38 | +| [axios](https://axios-http.com/) | 1 | HTTP client behind every `src/lib/*Api.ts` module | MIT | |
| 39 | +| [Recharts](https://recharts.org/) | 2.12 | Charts in Stats and column details | MIT | |
| 40 | +| [CodeMirror 6](https://codemirror.net/) via [@uiw/react-codemirror](https://uiwjs.github.io/react-codemirror/) | 6 / 4.25 | JSON row editor and code views | MIT | |
| 41 | +| [lucide-react](https://lucide.dev/) | 0.303 | Icons | ISC | |
| 42 | +| [react-hot-toast](https://react-hot-toast.com/) | 2 | Notifications | MIT | |
| 43 | +| [clsx](https://github.com/lukeed/clsx) + [tailwind-merge](https://github.com/dcastil/tailwind-merge) | 2 / 3 | Combining class names (`cn()` helper) | MIT | |
| 44 | + |
| 45 | +## Development and testing |
| 46 | + |
| 47 | +| Library | Used for | License | |
| 48 | +|---------|----------|---------| |
| 49 | +| [pytest](https://pytest.org/) and [pytest-asyncio](https://pytest-asyncio.readthedocs.io/) | Backend test suite (`cd backend && pytest`) | MIT / Apache-2.0 | |
| 50 | +| [mypy](https://mypy-lang.org/) | Optional static type checks for the backend | MIT | |
| 51 | +| [ESLint](https://eslint.org/) 9 with [typescript-eslint](https://typescript-eslint.io/), react-hooks and react-refresh plugins | Frontend linting (`npm run lint`) | MIT | |
| 52 | +| [PostCSS](https://postcss.org/) and [Autoprefixer](https://github.com/postcss/autoprefixer) | Tailwind build pipeline | MIT | |
| 53 | + |
| 54 | +## AI model servers |
| 55 | + |
| 56 | +Data Expert does not bundle a model. It talks to any OpenAI-compatible server (for example |
| 57 | +[llama.cpp](https://github.com/ggml-org/llama.cpp), [Ollama](https://ollama.com/), [LM Studio](https://lmstudio.ai/) |
| 58 | +or [vLLM](https://docs.vllm.ai/)) and to hosted providers. See [AI assistant](ai-assistant.md). |
0 commit comments