*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)