*GRANDStack* is a stack for building graph database-backed applications using the following technologies: - [[GraphQL]] API - [[React.js]] front end web app - [[Apollo GraphQL]] for server-side GraphQL implementation - [[Neo4j]] graph database A GRANDStack app can be bootstrapped using an NPM-installed CLI tool. ## Architecture ### Back-end - Can work with local or remote Neo4j servers - Uses an npm package `neo4j-graphql-js` to translate [[GraphQL]] queries to [[Neo4j#Cypher]]. - This package also allows resolvers to be mapped to Query definitions - The Node.js server for Apollo Server looks quite Expressjs-like ### Front-end - Talks to GraphQL server using [[Apollo GraphQL]] Client library. - Queries are defined alongside the markup within React components ## Development workflow - Define schema in `graphql-schema.js` - Uses `.env` file for storing secrets such as neo4j connection string - Has a `seedDb` script for generating sample data - `graphql-schema` can be extended via a `@cypher` directive that allows raw Cypher query to be specified for evaluating a field ## Deployment options - Works with [[Vercel]] - Works with [[Serverless Framework]] inside a [[AWS Lambda]] function: https://www.apollographql.com/docs/apollo-server/deployment/lambda/ ## Multi-tenanacy - [[How to support multiple tenants in Neo4j and GRANDStack]] --- ## #OpenQuestions - [[What serverless platforms can host a GraphQL Apollo Server]] - --- ## References - https://grandstack.io - [Getting started with GrandStack video](https://www.youtube.com/watch?v=rPC71lUhK_I)