{"id":13880685,"url":"https://github.com/aws/graph-explorer","last_synced_at":"2026-01-07T23:12:40.444Z","repository":{"id":65291251,"uuid":"558108873","full_name":"aws/graph-explorer","owner":"aws","description":"React-based web application that enables users to visualize both property graph and RDF data and explore connections between data without having to write graph queries. ","archived":false,"fork":false,"pushed_at":"2025-05-12T19:53:40.000Z","size":6394,"stargazers_count":365,"open_issues_count":160,"forks_count":56,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-05-12T20:52:11.154Z","etag":null,"topics":["amazon-neptune","apache-tinkerpop","graph","graph-database","graph-visualization","opencypher","rdf"],"latest_commit_sha":null,"homepage":"https://github.com/aws/graph-explorer","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aws.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-26T23:06:31.000Z","updated_at":"2025-05-12T19:53:44.000Z","dependencies_parsed_at":"2023-10-14T21:19:27.911Z","dependency_job_id":"943e4889-90b5-483e-8411-b4c0a904074b","html_url":"https://github.com/aws/graph-explorer","commit_stats":{"total_commits":245,"total_committers":20,"mean_commits":12.25,"dds":"0.44897959183673475","last_synced_commit":"52283ba5d6c186d119fc67e82422b511d4ad0121"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Fgraph-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Fgraph-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Fgraph-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Fgraph-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aws","download_url":"https://codeload.github.com/aws/graph-explorer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436944,"owners_count":22070946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-neptune","apache-tinkerpop","graph","graph-database","graph-visualization","opencypher","rdf"],"created_at":"2024-08-06T08:03:23.510Z","updated_at":"2025-12-12T07:31:31.926Z","avatar_url":"https://github.com/aws.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Graph Explorer\n\nGraph Explorer provides a React-based web application that enables users to\nvisualize both property graph and RDF data and explore connections between data\nwithout having to write graph queries. You can connect to a graph database over\nHTTP that supports the\n[W3C RDF/SPARQL](https://www.w3.org/TR/sparql11-overview/) open standard, the\n[openCypher](https://opencypher.org) open source specification, or the open\nsource [Apache TinkerPop Gremlin](https://tinkerpop.apache.org/).\n\nTo get started, you can deploy Graph Explorer on a local machine using\n[Docker Desktop](https://www.docker.com/products/docker-desktop/), or in the\ncloud using [Amazon EC2](https://aws.amazon.com/ec2/) or a container service\nlike [Amazon ECS](https://aws.amazon.com/ecs/).\n\n![A sample image of property graph created by Graph Explorer](./images/LPGIMDb.png)\n![A sample image of RDF graph created by Graph Explorer](./images/RDFEPL.png)\n\n## Getting Started\n\nThere are many ways to deploy and run Graph Explorer. If you are new to graph\ndatabases and Graph Explorer, we recommend that you check out the\n[Getting Started](./additionaldocs/getting-started/README.md) guide.\n\n- [Local Docker Setup](./additionaldocs/getting-started/README.md#local-docker-setup) -\n  A quick start guide to deploying Graph Explorer locally using the official\n  Docker image.\n- [Amazon EC2 Setup](./additionaldocs/getting-started/README.md#amazon-ec2-setup) -\n  A quick start guide to setting up Graph Explorer on Amazon EC2 with Neptune.\n- [Local Development](./additionaldocs/getting-started/README.md#local-development-setup) -\n  A quick start guide building the Docker image from source code.\n- [Troubleshooting](./additionaldocs/troubleshooting.md) - A collection of\n  helpful tips if you run in to issues while setting up Graph Explorer.\n- [Samples](./samples) - A collection of Docker Compose files that show various\n  ways to configure and use Graph Explorer.\n\n### Minimum Recommended Versions\n\nGraph Explorer does not block any particular versions of graph databases, but\nthe queries used may or may not succeed based on the version of the query\nengine.\n\nFor Neptune databases, we recommend\n[version 1.2.1.0](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases-1.2.1.0.html)\nor above, which include the summary API and TinkerPop 3.6.2.\n\nFor non-Neptune databases, we recommend at least TinkerPop 3.6.\n\n## Features Overview\n\nGraph Explorer offers a comprehensive set of tools for interacting with graph\ndatabases:\n\n- **Connections** - Create and manage connections to graph databases\n- **Graph View** - Visualize and interact with graph data through:\n  - Interactive graph visualization\n  - Powerful search capabilities\n  - Custom query execution and visualization\n  - Customizable styling options\n  - Detailed node/edge information\n- **Tabular View** - Interact with nodes \u0026 edges that have been added to the\n  graph view\n  - Show or hide individual nodes \u0026 edges\n  - Filtered nodes and edges will fade in the graph view\n  - Export table to CSV or JSON file\n- **Data Explorer** - Examine specific node types and send nodes to the graph\n  view\n\nFor complete documentation on all features and functionality, please see our\n[detailed features guide](./additionaldocs/features/README.md).\n\nIf you're interested in our future development plans, check out our\n[roadmap](./ROADMAP.md) and participate in the discussions.\n\n## Connections\n\nGraph Explorer supports visualizing both **property graphs** and **RDF graphs**.\nYou can connect to Amazon Neptune or you can also connect to open graph\ndatabases that implement an Apache TinkerPop Gremlin endpoint or the SPARQL 1.1\nprotocol, such as Blazegraph. For additional details on connecting to different\ngraph databases, see [Connections](./additionaldocs/connections.md).\n\n### Providing a Default Connection\n\nTo provide a default connection such that initial loads of Graph Explorer always\nresult with the same starting connection, modify the `docker run ...` command to\neither take in a JSON configuration or runtime environment variables. If you\nprovide both a JSON configuration and environmental variables, the JSON will be\nprioritized.\n\n#### Environment Variables\n\nThese are the valid environment variables used for the default connection, their\ndefaults, and their descriptions.\n\n- Required:\n  - `PUBLIC_OR_PROXY_ENDPOINT` - `None` - See\n    [Add a New Connection](#connections-ui)\n- Optional\n  - `GRAPH_TYPE` - `None` - If not specified, multiple connections will be\n    created for every available graph type / query language. See\n    [Add a New Connection](#connections-ui)\n  - `USING_PROXY_SERVER` - `False` - See [Add a New Connection](#connections-ui)\n  - `IAM` - `False` - See [Add a New Connection](#connections-ui)\n  - `GRAPH_EXP_HTTPS_CONNECTION` - `True` - Controls whether Graph Explorer uses\n    SSL or not\n  - `PROXY_SERVER_HTTPS_CONNECTION` - `True` - Controls whether the server uses\n    SSL or not\n  - `GRAPH_EXP_FETCH_REQUEST_TIMEOUT` - `240000` - Controls the timeout for the\n    fetch request. Measured in milliseconds (i.e. 240000 is 240 seconds or 4\n    minutes).\n  - `GRAPH_EXP_NODE_EXPANSION_LIMIT` - `None` - Controls the limit for node\n    counts and expansion queries.\n- Conditionally Required:\n  - Required if `USING_PROXY_SERVER=True`\n    - `GRAPH_CONNECTION_URL` - `None` - See\n      [Add a New Connection](#connections-ui)\n  - Required if `USING_PROXY_SERVER=True` and `IAM=True`\n    - `AWS_REGION` - `None` - See [Add a New Connection](#connections-ui)\n    - `SERVICE_TYPE` - `neptune-db`, Set this as `neptune-db` for Neptune\n      database or `neptune-graph` for Neptune Analytics.\n\n#### JSON Configuration Approach\n\nFirst, create a `config.json` file containing values for the connection\nattributes:\n\n```js\n{\n  \"PUBLIC_OR_PROXY_ENDPOINT\": \"https://public-endpoint\",\n  \"GRAPH_CONNECTION_URL\": \"https://cluster-cqmizgqgrsbf.us-west-2.neptune.amazonaws.com:8182\",\n  \"USING_PROXY_SERVER\": true,\n  \"IAM\": true,\n  \"SERVICE_TYPE\": \"neptune-db\",\n  \"AWS_REGION\": \"us-west-2\",\n  // Possible Values are \"gremlin\", \"sparql\", \"openCypher\"\n  \"GRAPH_TYPE\": \"gremlin\",\n  \"GRAPH_EXP_HTTPS_CONNECTION\": true,\n  \"PROXY_SERVER_HTTPS_CONNECTION\": true,\n  // Measured in milliseconds (i.e. 240000 is 240 seconds or 4 minutes)\n  \"GRAPH_EXP_FETCH_REQUEST_TIMEOUT\": 240000,\n  \"GRAPH_EXP_NODE_EXPANSION_LIMIT\": 500,\n}\n```\n\nPass the `config.json` file path to the `docker run` command.\n\n```bash\ndocker run -p 80:80 -p 443:443 \\\n --env HOST={hostname-or-ip-address} \\\n -v /path/to/config.json:/graph-explorer/config.json \\\n public.ecr.aws/neptune/graph-explorer\n```\n\n#### Environment Variable Approach\n\nProvide the desired connection variables directly to the `docker run` command,\nas follows:\n\n```bash\ndocker run -p 80:80 -p 443:443 \\\n --env HOST={hostname-or-ip-address} \\\n --env PUBLIC_OR_PROXY_ENDPOINT=https://public-endpoint \\\n --env GRAPH_TYPE=gremlin \\\n --env USING_PROXY_SERVER=true \\\n --env IAM=false \\\n --env GRAPH_CONNECTION_URL=https://cluster-cqmizgqgrsbf.us-west-2.neptune.amazonaws.com:8182 \\\n --env AWS_REGION=us-west-2 \\\n --env SERVICE_TYPE=neptune-db \\\n --env PROXY_SERVER_HTTPS_CONNECTION=true \\\n --env GRAPH_EXP_FETCH_REQUEST_TIMEOUT=240000 \\\n --env GRAPH_EXP_NODE_EXPANSION_LIMIT=500 \\\n public.ecr.aws/neptune/graph-explorer\n```\n\n## Development\n\nFor development guidance, see [Development](./additionaldocs/development.md).\n\n## Security\n\nYou can use Graph Explorer to connect to a publicly accessible graph database\nendpoint, or connect to a proxy endpoint that redirects to a private graph\ndatabase endpoint.\n\nGraph Explorer supports the HTTPS protocol by default and provides a self-signed\ncertificate as part of the Docker image. You can choose to use HTTP instead by\nchanging the\n[environment variable default settings](./additionaldocs/development.md#environment-variables).\n\n### HTTPS Connections\n\nIf either Graph Explorer or the proxy-server are served over an HTTPS connection\n(which it is by default), you will have to bypass the warning message from the\nbrowser due to the included certificate being a self-signed certificate. You can\nbypass by manually ignoring them from the browser or downloading the correct\ncertificate and configuring them to be trusted. Alternatively, you can provide\nyour own certificate. The following instructions can be used as an example to\nbypass the warnings for Chrome, but note that different browsers and operating\nsystems will have slightly different steps.\n\n1. Download the certificate directly from the browser. For example, if using\n   Google Chrome, click the “Not Secure” section on the left of the URL bar and\n   select “Certificate is not valid” to show the certificate. Then click Details\n   tab and click Export at the bottom.\n2. Once you have the certificate, you will need to trust it on your machine. For\n   MacOS, you can open the Keychain Access app. Select System under System\n   Keychains. Then go to File \u003e Import Items... and import the certificate you\n   downloaded in the previous step.\n3. Once imported, select the certificate and right-click to select \"Get Info\".\n   Expand the Trust section, and change the value of \"When using this\n   certificate\" to \"Always Trust\".\n4. You should now refresh the browser and see that you can proceed to open the\n   application. For Chrome, the application will remain “Not Secure” due to the\n   fact that this is a self-signed certificate. If you have trouble accessing\n   Graph Explorer after completing the previous step and reloading the browser,\n   consider running a docker restart command and refreshing the browser again.\n\n\u003c!-- prettier-ignore --\u003e\n\u003e [!TIP] \n\u003e \n\u003e To get rid of the “Not Secure” warning, see\n[Using self-signed certificates on Chrome](./additionaldocs/development.md#using-self-signed-certificates-on-chrome).\n\n## Permissions\n\nGraph Explorer does not provide any mechanisms for controlling user permissions.\nIf you are using Graph Explorer with AWS, Neptune permissions can be controlled\nthrough IAM roles.\n\nFor information about what permissions Graph Explorer requires check out the\ndocumentation on\n[SageMaker configuration](./additionaldocs/sagemaker/README.md#minimum-database-permissions).\n\n\u003c!-- prettier-ignore --\u003e\n\u003e [!CAUTION] \n\u003e \n\u003e By default, a Neptune Notebook will have full read \u0026 write access to Neptune data.\n\n## Authentication\n\nAuthentication for Amazon Neptune connections is enabled using the\n[SigV4 signing protocol](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).\n\nTo use AWS IAM authentication, you must run requests through a proxy endpoint,\nsuch as an EC2 instance, where credentials are resolved and where requests are\nsigned.\n\nTo set up a connection in Graph Explorer UI with AWS IAM auth enabled on\nNeptune, check Using Proxy-Server, then check AWS IAM Auth Enabled and type in\nthe AWS Region where the Neptune cluster is hosted (e.g., us-east-1).\n\nFor further information on how AWS credentials are resolved in Graph Explorer,\nrefer to this\n[documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html).\n\n## Health Check Status\n\nThe `graph-explorer-proxy-server` provides a `/status` endpoint for monitoring\nits health and readiness. This endpoint is crucial for ensuring reliable service\noperation and can be utilized in various deployment scenarios.\n\n**Key Features:**\n\n- **Health Check:** The `/status` endpoint serves as a basic health check,\n  confirming that the Express server is running and responding. This is\n  essential for load balancers (like AWS ALB) to determine if the server is\n  operational and should receive traffic.\n- **Readiness Probe:** It also functions as a readiness probe in container\n  orchestration systems (like Kubernetes). This allows the orchestrator to know\n  when the server is ready to accept requests, preventing traffic from being\n  routed to instances that are still starting up or experiencing issues.\n- **Expected Response:** A successful health check or readiness probe will\n  result in an HTTP `200 OK` response with the body containing `OK`.\n\n## Logging\n\nLogs are, by default, sent to the console and will be visible as output to the\ndocker logs. If you want to access the full set of logs, you can run\n`docker logs {container name or id}`.\n\nThe log level will be set via the `LOG_LEVEL` env variable at\n`/packages/graph-explorer/.env` where the possible options, from highest to\nlowest, are `error`, `warn`, `info`, `debug`, and `trace` such that `error` is\nthe highest level and will only include logs labeled as errors and `trace` the\nlowest and will include any type of log.\n\nBy default, the log level is set to `info` and the only type of logs generated\nare those of `error`, `info`, or `debug`. If you need more detailed logs, you\ncan change the log level from `info` in the default .env file to `debug` and the\nlogs will begin printing the error's stack trace.\n\nWithin node-server.js, you'll notice three things.\n\n1. A `proxyLogger` object - This is responsible for actually recording the logs.\n2. An `errorHandler` - This automatically sends errors to the `proxyLogger` and\n   can log extra information by adding wanted text to the error object at a key\n   called `extraInfo`.\n3. An endpoint called `/logger` - This is how you would log things from the\n   browser. It needs a log level and message header passed and you can then\n   expect to see the message logged at the provided log level.\n\n## Contributing Guidelines\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws%2Fgraph-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faws%2Fgraph-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws%2Fgraph-explorer/lists"}