Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/cult-of-coders/grapher

Grapher: Meteor Collection Joins + Reactive GraphQL like queries
https://github.com/cult-of-coders/grapher

hacktoberfest meteorjs

Last synced: about 2 months ago
JSON representation

Grapher: Meteor Collection Joins + Reactive GraphQL like queries

Lists

README

        

## Introducing BlueLibs

- [GitHub BlueLibs Monorepo](https://github.com/bluelibs/bluelibs)
- Following the same bold vision of Meteor, but with a modern twist. www.bluelibs.com
- Read more about our approach coming from Meteor: https://www.bluelibs.com/blog/2021/11/26/the-meteor-of-2022
- We've implemented [Grapher aka Nova](https://www.bluelibs.com/products/nova) as a standalone npm package compatible to native MongoDB drivers (including Meteor), it is not as feature-rich (no meta links, no pubsub functionality) but is more advanced.

# Grapher 1.5

_Grapher_ is a Data Fetching Layer on top of Meteor and MongoDB. It is production ready and battle tested. Brought to you by [Cult of Coders](https://www.cultofcoders.com) β€” Web & Mobile Development Company.

Main features:

* Innovative way to make MongoDB relational
* Blends in with Apollo GraphQL making it highly performant
* Reactive data graphs for high availability
* Incredible performance
* Denormalization ability
* Connection to external data sources
* Usable from anywhere

It marks a stepping stone into evolution of data, enabling developers to write complex and secure code,
while maintaining the code base easy to understand.

[Read more about the GraphQL Bridge](docs/graphql.md)

## Installation

```
meteor add cultofcoders:grapher
```

## [Documentation](docs/index.md)

This provides a learning curve for Grapher and it explains all the features. If you want to visualize the documentation better, check it out here:

https://cult-of-coders.github.io/grapher/

## [API](docs/api.md)

Grapher cheatsheet, after you've learned it's powers this is the document will be very useful.

## Useful packages

* Live View: https://github.com/cult-of-coders/grapher-live
* Graphical Grapher: https://github.com/Herteby/graphical-grapher
* React HoC: https://github.com/cult-of-coders/grapher-react
* VueJS: https://github.com/Herteby/grapher-vue

### Events for Meteor (+ Grapher, Redis Oplog and GraphQL/Apollo)

* Meteor Night 2018: [Arguments for Meteor](https://drive.google.com/file/d/1Tx9vO-XezO3DI2uAYalXPvhJ-Avqc4-q/view) - Theodor Diaconu, CEO of Cult of Coders: β€œRedis Oplog, Grapher, and Apollo Live.

## Contributors

This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md).

## Backers

Thank you to all our backers! πŸ™ [[Become a backer](https://opencollective.com/grapher#backer)]

## Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/grapher#sponsor)]










### Quick Illustration

Query:

```js
createQuery({
posts: {
title: 1,
author: {
fullName: 1,
},
comments: {
text: 1,
createdAt: 1,
author: {
fullName: 1,
},
},
categories: {
name: 1,
},
},
}).fetch();
```

Result:

```
[
{
_id: 'postId',
title: 'Introducing Grapher',
author: {
_id: 'authorId',
fullName: 'John Smith
},
comments: [
{
_id: 'commentId',
text: 'Nice article!,
createdAt: Date,
author: {
fullName: 1
}
}
],
categories: [ {_id: 'categoryId', name: 'JavaScript'} ]
}
]
```

### Testing

You can create `test` directory and configure dependencies (working directory is the root of this repo):
```
# create meteor app for testing
# you can add a specific release with --release flag, this will just create the app with the latest release
meteor create --bare test
cd test
# install npm dependencies used for testing
meteor npm i --save [email protected] [email protected] [email protected] chai

# Running tests (always from ./test directory)
METEOR_PACKAGE_DIRS="../" TEST_BROWSER_DRIVER=chrome meteor test-packages --once --driver-package meteortesting:mocha ../
```

If you use `TEST_BROWSER_DRIVER=chrome` you have to have chrome installed in the test environment. Otherwise, you can just run tests in your browser.

Another option is to use `puppeteer` as a driver. You'll have to install it with `meteor npm i puppeteer@10`. Note that the latest versions don't work with Node 14.

With `--port=X` you can run tests on port X.

Omit `--once` and mocha will run in watch mode.