Client side neo4j visualization with api request rate limit

I have a neo4j database on the server side, and I’m building a service where users can explore the data in my database.

I envision the users be able to select a node, then interactively expand its neighbors on the direction that is interesting to them.

I like the Explore tool that comes with neo4j Desktop 2.x, and I am exploring how I can use this tool for my use-case. Specifically:

  • Is embedding Explore on client side is supported, where the tool is shown on the user’s browser, and configured to query my database.
  • If the above is possible, is there a native solution for user AuthNZ. I can think of a service and API gateway with built-in user authnz (e.g., oauth2.0/oidc). But I wonder how that architecture can work with a neo4j database and the Explore tool.
  • Is there a native way for API or query throttle/size limit per user. For instance, n nodes and e relationships per hour.

If these are outside of scope for Explore (neo4j Bloom), I wonder what are the alternatives the community suggest for such use-cases.

Hi, in case you like the SemSpect exploration tool (https://semspect.de/). It's possible to embed it as an iFrame and also supports authentication via other services. We do also support feature restrictions in case of OEM usage.

Hi @hamed.metalgear, thanks for reaching out!

It is possible to embed Neo4j Bloom inside an iframe when it is self-hosted. You can find more information about self-hosting Bloom here: Advanced installation and configuration - Neo4j Bloom

Bloom does not have a fully embeddable API however. Authentication would only work via database username/password (or LDAP / SSO if configured). Also, there is no native way through Bloom to throttle/size limit user queries.

To create more custom tools similar to the Explore/Bloom experience, you can use the Neo4j Visualization Library (NVL), which is the graph visualization library that powers Bloom and is free to use: Neo4j Visualization Library - Neo4j Visualization Library

Here are some resources on NVL:

  1. API documentation: https://neo4j.com/docs/api/nvl/current/
  2. Collection of various examples: https://neo4j.com/docs/api/nvl/current/examples.html
  3. Boilerplates to help with project setup: https://github.com/neo4j-devtools/nvl-boilerplates
  4. Demos: https://www.youtube.com/watch?v=HU1DuSOjGSM & https://www.youtube.com/watch?v=uVxhYgWsHZw

Hope this helps! Please let me know if you have any questions or comments