Human-Connection - GraphQL API - Prototype
This Prototype tries to resolve the biggest hurdle of connecting our services together. This is not possible in a sane way using our current approach.
With this Prototype we can explore using the combination of GraphQL and the Neo4j Graph Database for achieving the connected nature of a social graph with better development experience as we do not need to connect data by our own any more through weird table structures etc.
Advantages:
- easer data structure
- better connected data
- easy to achieve "recommendations" based on actions (relations)
- more performant and better to understand API
- better API client that uses caching
We still need to evaluate the drawbacks and estimate the development cost of such an approach
Quick Start
Install dependencies:
yarn install
# -or-
npm install
Start the GraphQL service:
yarn start
# -or-
npm start
This will start the GraphQL service (by default on localhost:4000) where you can issue GraphQL requests or access GraphQL Playground in the browser:
Configure
Set your Neo4j connection string and credentials in .env.
For example:
.env
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=letmein
Note that grand-stack-starter does not currently bundle a distribution
of Neo4j. You can download Neo4j Desktop
and run locally for development, spin up a hosted Neo4j Sandbox instance,
run Neo4j in one of the many cloud options,
or spin up Neo4j in a Docker container.
Just be sure to update the Neo4j connection string and credentials accordingly in .env.
Deployment
You can deploy to any service that hosts Node.js apps, but Zeit Now is a great easy to use service for hosting your app that has an easy to use free plan for small projects.
To deploy your GraphQL service on Zeit Now, first install Now Desktop - you'll need to provide an email address. Then run
now
to deploy your GraphQL service on Zeit Now. Once deployed you'll be given a fresh URL that represents the current state of your application where you can access your GraphQL endpoint and GraphQL Playgound. For example: https://hc-graph-api-prototype-sdga96ad7.now.sh/
Seeding The Database
Optionally you can seed the GraphQL service by executing mutations that will write sample data to the database:
yarn seedDb
# -or-
npm run seedDb
