Neo4j Commander

Hi!
I have been using neo4j for several years now - mostly with spring-data-neo4j and for all kinds of applications - but always thought that editing the actual data in the nodes and relationships was very clumsy (writing cypher queries in the neo4j browser).

That's why I developed "neo4j Explorer" a couple years back and I just completely rewrote the entire thing from scratch in React so there is no longer any need for an app server or even any server-side scripting. You just unpack it into the document root of your web server and you are good to go!

Here are some feature highlights:

  • View nodes and relationships and all of their data
  • Create/Edit/Delete labels and properties of nodes and relationships
  • Create and delete relationships
  • Use and convert between all the datatypes of neo4j including temporal and spatial types as well as arrays *)
  • It comes with a handy built in calculator for numerical values to evaluate Javacript and Cypher and a full-screen multi-line text editor for large text values *)
  • You get a complete undo history for all operations (!) including label and property changes of nodes and relations and even node and relationship deletion! *)
  • You also get a handy query history and bookmarks for editor setups you need frequently *)
    Preferences to set your favorite labels and properties to keep a clear view on your data *)

*) NEW in neo4j Explorer 2

BTW the UNDO feature has alread come in very handy and saved my a** (on a production DB of a customer!) in the short time I have been developing and using v2

I also made the responsive UI work on all devices and form factors (the old version was really only usable on desktops). I am still fine-tuning things while more and more people start using it and if you also give it a try, I really appreciate your feedback, bugreports and feature requests! THX!

Check out neo4j Explorer 2 here: https://netbizltd.com/neo4j

I also added some details, video-snippets and tips that might come in handy to get started quickly and I am planning on collecting FAQ on the page.

Some other features I have on my own wish list:

  • Filter relationships by property
  • Open shortest path
  • Clone node
  • (Some sort of) Cypher export possibility

Hope you enjoy this tool,
Cheers, Chris :smiley:

01_connect

10 Likes

Hey Chris,

This looks awesome! How would you feel about turning this into a Graph App so that it can be launched directly from Neo4j Desktop? We can add it to the Graph App Gallery too if you like.

3 Likes

#promoted !! :smiley:

@adam_cowley let's also consider an Online Meetup too afterwards if @chris3 is interested.

2 Likes

Hi Adam,
Thanks! I will look into that ASAP
Cheers, Chris

1 Like

Hi Adam,

I have refactored some stuff (e.g. removed URL-based-routing and made it work from file:// location), created a release-notes.md and packaged everything up.

I am using window.neo4jDesktopApi to connect and disconnect when the GRAPH_ACTIVE and GRAPH_INACTIVE events are fired. I have to say it works great :smiley:

Shall I send you the TGZ to try out?
Desktop complains about unsigned package. What's required?
How does the whole Apps Gallery work (esp. with updates)?
What are the next steps?

Cheers, Chris

@adam_cowley Can I ask a question: Is there a way (maybe via neo4jDesktopApi) to push a Cypher Query over to the neo4j Browser ... so that after I have some nodes open in my app I can quickly open the same nodes in Browser?

Maybe you could point me in the right direction... THX!

yes there is a deep link:

neo4j-desktop://graphapps/neo4j-browser?cmd=edit&arg=match%20(n)%20return%n

see: Add URL param support for populating editor with Cypher and parameters by oskarhane · Pull Request #956 · neo4j/neo4j-browser · GitHub

1 Like

Great news! thanks so much.

Graph app gallery is currently a static page, that we can add your app to after testing.
Did you test with 4.x and 3.x and the latest desktop (1.2.9) ?

Signing is currently for internal/labs apps. If you need extra permissions you can declare them and afaik that's not questioned with signing.

Signing soon(ish) for partners and at some point for external contributors.

Btw. there is also activation key support that you can use to issue full-feature-activation to your fully licensed users.

Hi Michael,

deep-linking to neo4j browser:
I tried that and it didn't work for me, so I asked.
Will have to figure out what the problem is but to me it seemed like the web view opened by "desktop" completely ignores window.open or document.location.href ...

Activation key support: Looking into that .. THX!

Re: Graph App Gallery:

I have been using (=testing? ;)) my app on 4.0.3, 3.5.14 and 3.5.3
Yes, I have desktop version 1.2.9

Signing: FYI This is what I get when I drag & drop the TGZ onto the Install area. I am not asking for any special permissions in package.json / manifest

Gallery: So gallery is simply linking to a static URL on my side and I can exchange the underlying file there when I have a new version ready (currently this is daily since I am still adding features like crazy)?

Cheers, Chris

You should publish it to npm or a private npm repo and share that URL then you get auto updates. Otherwise not which we would not want for our users.

What exactly did not work with the deep link URL? Can you share what you used? URL and code?

Deep links: I was hoping that something like a

window.open('neo4j-desktop://graphapps/neo4j-browser?cmd=edit&arg=MATCH%20(n0)%20WHERE%20id(n0)%3D0%20RETURN%20n0')

when called from the app running inside of neo4j desktop would open the neo4j browser and paste the query ready to be executed.... but since that doesn't work I thought maybe there is a more direct way using neo4jDesktopApi

BTW
<a href="neo4j-desktop://graphapps/neo4j-browser?cmd=edit&amp;arg=MATCH%20(n0)%20WHERE%20id(n0)%3D0%20RETURN%20n0">test</a>
doesn't do anything either...

:poop: Just realized that there is a projekt called "yFiles Neo4j Explorer" that is also in the apps gallery.

Maybe we should rename our project to prevent confusion?

OK, rebranded it to "neo4j Commander"

Public NPM of trial version: neo4jcommander - npm

2 Likes

Can you check that your neo4j desktop is handling the URL prefix neo4j-desktop://?

There are different tools for the different operating systems that allow you to check/fix those.

Alrighty, I have finally managed to make Deep Linking to neo4j Desktop on Linux (Ubuntu / Gnome) work!

  1. Create /usr/share/applications/neo4j-desktop.desktop with this content:
[Desktop Entry]
Name=neo4j Desktop
Exec=<path to AppImage> %u
Path=<dir of AppImage>
Icon=<path to icon>
Terminal=false
Type=Application
Categories=Application

AppImage = neo4j-desktop-1.2.9-x86_64.AppImage at the time of writing

  1. execute

xdg-mime default neo4j-desktop.desktop x-scheme-handler/neo4j-desktop

to register "neo4j-desktop://" URLs to open with neo4j-desktop

  1. test from terminal:

xdg-open "neo4j-desktop://graphapps/neo4j-browser?cmd=edit&arg=MATCH%20(n0)%20WHERE%20id(n0)%3D0%20RETURN%20n01"

should open neo4j desktop and the neo4j browser and fill in the query ready to be executed

  1. test from browser:

enter the URL

neo4j-desktop://graphapps/neo4j-browser?cmd=edit&arg=MATCH%20(n0)%20WHERE%20id(n0)%3D0%20RETURN%20n01

in your browser and neo4j desktop should also open.

Note: worked in firefox and vivaldi (both asked if I wanted to open neo4j desktop) but did NOT work in Brave (didn't ask, simply opened search engine, don't know why yet)

As soon as this works correctly, it also works from within neo4j Commander:

Note to Graph App devs: window.open does not work, <a target="_blank"> does not work either.
It has to be a simple link like <a href="neo4j-desktop://graphapps...">...</a>

Hi @michael.hunger @adam_cowley @neo4j_devrel

What else needs to be done to get neo4j Commander onto the Apps Gallery?

Cheers, Chris

Hi @chris3, I think an article introducing it e.g. on Neo4j Developer Blog – Medium (you can submit an article to the publication if you give us your medium username).

Let's continue the detail discussion via email. I'll drop you a line.

Looks really great.