Metadata-Version: 2.4
Name: kineviz-database-proxy
Version: 1.1.4
Summary: Kineviz Database Proxy - Secure middleware for connecting GraphXR to databases
Author-email: Sean Li <sean@kineviz.com>, Kineviz <support@kineviz.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Kineviz/kineviz-database-proxy
Project-URL: Documentation, https://docs.kineviz.com/kineviz-database-proxy
Project-URL: Repository, https://github.com/Kineviz/kineviz-database-proxy
Project-URL: Bug Tracker, https://github.com/Kineviz/kineviz-database-proxy/issues
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.104.0
Requires-Dist: uvicorn[standard]>=0.24.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: python-multipart>=0.0.6
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: google-cloud-spanner>=3.40.0
Requires-Dist: google-cloud-bigquery>=3.25.0
Requires-Dist: google-cloud-resource-manager>=1.10.0
Requires-Dist: google-auth-oauthlib>=1.0.0
Requires-Dist: google-auth>=2.0.0
Requires-Dist: aiofiles>=23.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: httpx>=0.25.0
Requires-Dist: neo4j<6,>=5.28.0
Requires-Dist: packaging>=23.0
Requires-Dist: sqlalchemy>=2.0
Provides-Extra: ui
Requires-Dist: aiofiles>=23.0.0; extra == "ui"
Provides-Extra: mssql
Requires-Dist: pymssql>=2.3; extra == "mssql"
Provides-Extra: postgresql
Requires-Dist: psycopg[binary]>=3.1; extra == "postgresql"
Provides-Extra: mysql
Requires-Dist: PyMySQL>=1.1; extra == "mysql"
Provides-Extra: snowflake
Requires-Dist: snowflake-sqlalchemy>=1.7; extra == "snowflake"
Requires-Dist: sqlalchemy<2.1,>=2.0; extra == "snowflake"
Provides-Extra: relational
Requires-Dist: kineviz-database-proxy[mssql,mysql,postgresql,snowflake]; extra == "relational"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
Provides-Extra: all
Requires-Dist: kineviz-database-proxy[dev,relational,ui]; extra == "all"
Dynamic: license-file

# Kineviz Database Proxy

> This project replaces `graphxr-database-proxy`. Install
> [kineviz-database-proxy](https://pypi.org/project/kineviz-database-proxy/)
> and use the [new repository](https://github.com/Kineviz/kineviz-database-proxy).

[English](README.md) | [中文](README.zh.md)

FastAPI middleware that connects [GraphXR](https://www.kineviz.com/graphxr) to
databases through a REST API, with a React admin UI for connections and settings.

Supports Spanner Graph, BigQuery, RocketGraph, Neo4j, Memgraph, Kuzu, Ladybug,
LatticeDB, SQL Server, PostgreSQL, MySQL and Snowflake. Optional admin-password and API-key
authentication protect management and database access.

## Quick start

```bash
pip install "kineviz-database-proxy[ui]"
kineviz-proxy --ui
```

The Python package and source directory are named `kineviz_database_proxy`.
Update existing Python imports to use this name. The `graphxr-proxy` command,
`GRAPHXR_PROXY_*` environment variables and existing storage paths remain
supported for compatibility.

Open http://localhost:9080/admin, create a project and copy its API URL into
GraphXR's **Database Proxy** connection. For example:
`http://localhost:9080/api/spanner/Test`.

For SQL drivers, install the corresponding extra: `[mssql]`, `[postgresql]`,
`[mysql]`, `[snowflake]` or `[relational]` for all four. See the
[user guide](doc/USAGE.md) for connection and authentication setup.
Snowflake connection and mapping details are in the [Snowflake guide](doc/SNOWFLAKE.md).

## Develop from source

Requires Python >= 3.9, Node.js >= 22 and [uv](https://docs.astral.sh/uv/).

```bash
git clone https://github.com/Kineviz/kineviz-database-proxy.git
cd kineviz-database-proxy
uv sync --extra dev
npm install
npm run install:frontend
npm run dev
```

The API runs at http://localhost:9080; open the frontend URL printed by webpack
(the port is selected automatically unless `PORT` is set). API docs are at
http://localhost:9080/docs.

Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI share
[AGENTS.md](AGENTS.md). See the [development guide](doc/DEV_GUIDE.md) for tool
entry points and verification commands.

## Docker

```bash
docker run -d -p 9080:9080 --name kineviz-database-proxy -v graphxr-proxy-config:/app/config kineviz/kineviz-database-proxy:latest
```

Open http://localhost:9080/admin. The named volume preserves project configuration.

## Documentation

- [Usage and authentication](doc/USAGE.md) · [Python examples](examples/README.md)
- [Development](doc/DEV_GUIDE.md) · [Architecture](doc/ARCHITECTURE.md)
- [API reference](doc/API_Reference.md) · [Relational admin API](doc/RELATIONAL_API.md)
- [Relational mapping](doc/RELATIONAL_MAPPING.md) · [Embedded stores](doc/EMBEDDED_STORES.md)
- [Docker publishing](doc/DOCKER_PUBLISHING.md) · [PyPI publishing](doc/PYPI_PUBLISHING.md)

[MIT license](LICENSE) · [Issues](https://github.com/Kineviz/kineviz-database-proxy/issues)
· support@kineviz.com
