Trying to decide on the proper path forward

Sorry for the vague title, but not sure how to sum up what I'm trying to ask. I've been using Neo4j for about a month or so and I'm definitely sure that this is the right way to go. I just hit a point where I messed up my graph and I'm going to have to rebuild I wanted to ask a few questions to make sure I didn't make any rookie mistakes...

My project is a specialized dating/community app. Think FB mixed with OKCupid. The frontend is a React application. I installed Neo4j on a VM with a .Net Core 2.2 Web API and Nginx front end. On the Web API, I'm using the CypherClient (Readify) dll to handle the communication from the controllers to the neo4j interface. I'm also using Google's Firebase for Authentication (front end gets token from firebase and uses it to authenticate to the web api). Currently, I'm still in development, so the neo4j server and web api are on the same VM. For production I plan to put them on separate machines with a load balancer in front of the web api image and (depending on load) setting up a cluster for the neo4j.

I've been doing a LOT of reading about the different configurations that are possible, and it's a lot to process.

Here are my questions....(well...the ones that I know to ask right now anyway :) )

  1. Is the WebAPI actually necessary? If I'm understanding it correctly, there's a driver for JavaScript that can connect directly to the bolt interface.
  2. I seem to have hit a limitation with the CypherClient in that I can't seem to use the distance function within a Where clause. Is that possible with the JavaScript driver?
  3. I was reading a little bit about the Authentication framework within Neo4j server. Am I understanding it correctly that the server can handle creating accounts as well as use 3rd party authentication (like google, FB, etc)?
  4. Do you have the capability to look into the future and let me know what I don't know right now so that I can avoid the mistakes I'm sure I'm making????? :smiley:

Thanks in advance in helping!

I can answer a few of these.

  1. We tend to encourage usage of the bolt drivers, so the JS driver is a good choice.
  2. Some of the community drivers don't have support for some of the newer data types, like some of the spatial and temporal types. You would probably be better off with one of the official drivers, like the JS driver previously mentioned.
  3. Yes, you can create accounts, though this is an enterprise-only feature. These aren't meant to be per-user in a case of many many users, however. The users of your app should not correspond 1-to-1 with the users created for the db. App users != db users.
  4. There are some good resources online, as well as Neo4j training classes that you can attend held every so often across various countries, but currently we don't have a time travel features bundled with the product, sorry!

Thank you. That actually answers quite a bit!
When you start working on the time travel features, I'm willing to help beta test!!!! :)