Metadata-Version: 2.4
Name: subgraph-studio
Version: 1.0.0
Summary: Desktop GUI for introspecting GraphQL schemas and building VANTAGE query configurations
Author: VANTAGE
License-Expression: MIT
Keywords: graphql,subgraph,introspection,vantage,gui,tkinter
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Requires-Dist: keyring>=23.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Dynamic: license-file

# Subgraph Studio

Desktop GUI for introspecting GraphQL schemas and building VANTAGE query configurations.

## Features

- Discover subgraph endpoint names from `.env` files using AES keyring service
- Supply subgraph URLs manually
- Introspect live GraphQL schemas
- Browse query roots and fields
- Build GraphQL queries with field selection
- Preview live responses
- Export VANTAGE-style protocol JSON configuration files

## Installation

### From source (pip)

```bash
cd subgraph_studio
pip install .
```

### Run directly

```bash
python -m subgraph_studio
```

### As a CLI command (after pip install)

```bash
subgraph-studio
```

## Docker

### Build

```bash
docker build -t subgraph-studio .
```

### Run (with X11 forwarding for GUI)

```bash
# Linux
xhost +local:docker
docker run -it --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v $HOME/.Xauthority:/root/.Xauthority:ro \
  -v $(pwd):/data \
  --network host \
  subgraph-studio
```

## Dependencies

- Python 3.10+
- `requests` - HTTP client for GraphQL requests
- `keyring` - Secure credential storage
- `tkinter` - GUI framework (usually included with Python; install `python3-tk` on Debian/Ubuntu)

## Development

```bash
pip install -e ".[dev]"
```

## Project Structure

```
subgraph_studio/
├── pyproject.toml          # Package configuration
├── requirements.txt        # Python dependencies
├── Dockerfile              # Container definition
├── .dockerignore           # Docker build exclusions
└── subgraph_studio/        # Python package
    ├── __init__.py         # Package exports
    ├── __main__.py         # Entry point (python -m subgraph_studio)
    ├── app.py              # Main SubgraphStudio GUI class
    ├── constants.py        # Constants and introspection query
    ├── schema.py           # GraphQL schema data models
    ├── query.py            # Query builder
    ├── utils.py            # Utility functions
    └── widgets.py          # Custom Tkinter widgets
```
