{"id":13724981,"url":"https://github.com/michaeldgraham/neo4j-graphql-workspace","last_synced_at":"2025-09-23T19:43:40.923Z","repository":{"id":119470098,"uuid":"354641217","full_name":"michaeldgraham/neo4j-graphql-workspace","owner":"michaeldgraham","description":"A project template for progressive development of Neo4j GraphQL schemas.","archived":false,"fork":false,"pushed_at":"2021-04-11T15:15:47.000Z","size":393,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T22:32:32.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaeldgraham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-04T20:34:01.000Z","updated_at":"2024-01-10T16:40:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"d5084489-e443-444d-a94d-79897ea66adb","html_url":"https://github.com/michaeldgraham/neo4j-graphql-workspace","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/michaeldgraham/neo4j-graphql-workspace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeldgraham%2Fneo4j-graphql-workspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeldgraham%2Fneo4j-graphql-workspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeldgraham%2Fneo4j-graphql-workspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeldgraham%2Fneo4j-graphql-workspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaeldgraham","download_url":"https://codeload.github.com/michaeldgraham/neo4j-graphql-workspace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeldgraham%2Fneo4j-graphql-workspace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274125676,"owners_count":25226491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T01:02:08.696Z","updated_at":"2025-09-23T19:43:35.877Z","avatar_url":"https://github.com/michaeldgraham.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"## Neo4j GraphQL Workspace\nA project template for using [Apollo GraphQL](https://www.apollographql.com/) with a [Neo4j graph database](https://neo4j.com/product/neo4j-graph-database/).\n\u003cbr\u003e\u003cbr\u003e\n![apollo_and_neo4j](readme_logo.png)\n## Technologies 🛠️\nThe below technologies are necessary or recommended to get started with development:\n\n* Install the [Node.js](https://nodejs.org/en/) runtime to use the [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) language for server programming\n* Download [Neo4j Desktop](https://neo4j.com/download/) or the database version appropriate for your machine\n* Install the [Visual Studio Code](https://code.visualstudio.com/) editor\n* [Sign up](https://studio.apollographql.com/login) for [Apollo Studio](https://www.apollographql.com/docs/studio/) to use their [Explorer GraphQL IDE](https://www.apollographql.com/docs/studio/explorer/)\n\n## Learning 🚀\nHere is an evolving list of resources for learning more about the above technologies:\n* 📘 Read\n  * [GraphQL API language](https://graphql.org/learn/)\n    * [Why GraphQL?](https://www.apollographql.com/docs/intro/benefits/)\n    * [Server](https://www.apollographql.com/docs/apollo-server/) and [Client](https://www.apollographql.com/docs/react/) resources from Apollo GraphQL\n  * [Cypher graph query language](https://neo4j.com/developer/cypher/)\n    * [Comparing SQL with Cypher](https://neo4j.com/developer/cypher/guide-sql-to-cypher/)\n    \u003cbr\u003e\n* 🎥 Watch\n  * [GraphQL From the Ground Up by Ellen Shapiro](https://www.youtube.com/watch?v=84KzA3FG5Q4)\n  * [GraphQL: The Documentary](https://www.youtube.com/watch?v=783ccP__No8\u0026t=18s)\n  \u003cbr\u003e\n* ☑️ Try\n  * [Practical, hands-on trainings](https://odyssey.apollographql.com/) for learning GraphQL with [Apollo Odyssey](https://odyssey.apollographql.com/about)\n  * [SpaceX GraphQL API](https://api.spacex.land/graphql/)\n  * [GitHub GraphQL API](https://docs.github.com/en/graphql/overview/explorer)\n## Workspaces 💼\n[Schema files](https://github.com/michaeldgraham/neo4j-graphql-workspace/tree/main/neo4j-graphql-js/schema), a [server file](https://github.com/michaeldgraham/neo4j-graphql-workspace/blob/main/neo4j-graphql-js/server.js), and npm scripts exist for both the neo4j-graphql-js and @neo4j/graphql libraries. The `/schema` directory for both contains a decomposition of the type definitions in [this schema](https://github.com/grand-stack/grand-stack-starter/blob/master/api/src/schema.graphql) used by the [GRANDstack Starter Kit](https://github.com/grand-stack/grand-stack-starter).\n\n* [neo4j-graphql-js](https://www.npmjs.com/package/neo4j-graphql-js)\u003cbr\u003e\n  A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations.\n  * [Documentation](https://grandstack.io/docs/neo4j-graphql-js)\n\n* [@neo4j/graphql](https://www.npmjs.com/package/@neo4j/graphql)\u003cbr\u003e\n  Neo4j product beta of neo4j-graphql-js\n  * [Documentation](https://neo4j.com/docs/graphql-manual/current/)\n\n## Dependencies 🌐\n\nRun `npm install` in your terminal to install project dependencies. The following libraries are used to assist the development of Neo4j-GraphQL schemas:\n\n* [graphql-tag](https://www.npmjs.com/package/graphql-tag)\u003cbr\u003e\n  A JavaScript template literal tag that parses GraphQL queries.\n  \u003cbr\u003e\n\n* [cypher-tag](https://www.npmjs.com/package/cypher-tag)\u003cbr\u003e\n  A JavaScript template literal tag for Cypher in GraphQL.\n  \u003cbr\u003e\n\n* [@graphql-workspaces/cli](https://www.npmjs.com/package/@graphql-workspaces/cli)\u003cbr\u003e\n  A CLI for GraphQL workflow.\n  \u003cbr\u003e\n\n* [@graphql-workspaces/load](https://www.npmjs.com/package/@graphql-workspaces/load)\u003cbr\u003e\n  A wrapper around the [load-files](https://www.graphql-tools.com/docs/api/modules/load-files) and [merge](https://www.graphql-tools.com/docs/api/modules/merge#mergetypedefs) modules from [graphql-tools](https://www.graphql-tools.com/docs/schema-merging#merging-type-definitions) used to load and merge schema files.\n \n## Workflow 🔁\n1. Modify the contents of the [/schema directory](https://github.com/michaeldgraham/neo4j-graphql-workspace/tree/main/neo4j-graphql-js/schema).\n\n2. Use the [print](https://github.com/michaeldgraham/graphql-workspaces/tree/main/packages/cli#print) command from [@graphql-workspaces/cli](https://www.npmjs.com/package/@graphql-workspaces/cli) to print the merged contents of the `/schema` directory to a [schema.printed.graphql](https://github.com/michaeldgraham/neo4j-graphql-workspace/blob/main/neo4j-graphql-js/schema.printed.graphql) file next to it. Use the [--watch](https://github.com/michaeldgraham/graphql-workspaces/tree/main/packages/cli#gql-print-path-watch--w) or [--validate](https://github.com/michaeldgraham/graphql-workspaces/tree/main/packages/cli#gql-print-path-validate--v) arguments to watch for file changes or validate the merged type definitions.\n    \n    * Print: `gql print schema`\n    * Watch: `gql print schema --watch`\n    * Validate: `gql print schema --validate`\n\n3. Use the below scripts to run the [server file](https://github.com/michaeldgraham/neo4j-graphql-workspace/blob/main/neo4j-graphql-js/server.js) and start the API at [localhost:4001/graphql](https://github.com/michaeldgraham/neo4j-graphql-workspace/blob/f5775a5a1a2ff2102b2d532e4eff52fb7d4f5d8a/neo4j-graphql-js/server.js#L13) or to print [the result](https://github.com/michaeldgraham/neo4j-graphql-workspace/blob/main/neo4j-graphql-js/augmented-schema.printed.graphql) of the Neo4j-GraphQL augmentation of the merged type definitions in `schema.printed.graphql`.\n\n4. Add, modify, or rename any files or directories in `/schema` and repeat workflow.\n\n## Scripts 📜\nYou can print the result of the schema augmentation process from either neo4j-graphql library using the following scripts which use the `gql` cli locally:\n\n* `npm run print:neo4j-graphql-js`\n* `npm run print:neo4j-graphql`\n\nAll other dependencies are used for building and running the server startup files with the following scripts:\n\n* `npm run start:neo4j-graphql-js`\n* `npm run start:neo4j-graphql`\n## Roadmap 🗺️\n* Add example operations for both neo4j-graphql-js and @neo4j/graphql that use nested mutations to seed the database.\n  * Provide the data available from https://cdn.neo4jlabs.com/data/grandstack_businesses.csv, similar to the [GRANDstack Starter Kit](https://github.com/grand-stack/grand-stack-starter/blob/master/api/src/seed/seed-mutations.js), to each root mutation when pre-processing its argument values using a custom resolver function. \n* Add examples of the authorization strategies available for neo4j-graphql-js and @neo4j/graphql.\n* Use these [utility functions](https://www.graphql-tools.com/docs/api/modules/utils/#functions-1) from [graphql-tools](https://www.graphql-tools.com/docs/introduction) to support automated migration between integration libraries.\n  * Look into adding some functions from [@graphql-inspector/core](https://www.npmjs.com/package/@graphql-inspector/core) to such a process.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeldgraham%2Fneo4j-graphql-workspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaeldgraham%2Fneo4j-graphql-workspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeldgraham%2Fneo4j-graphql-workspace/lists"}