Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/liberation-data/drivine
Best and fastest graph database client (Neo4j, AgensGraph, Apache AGE, FalkorDB) for Node.js & TypeScript.
https://github.com/liberation-data/drivine
agensgraph graph-databases javascript neo4j neo4j-driver nestjs nodejs ogm ogm-agensgraph ogm-neo4j typescript
Last synced: about 2 hours ago
JSON representation
Best and fastest graph database client (Neo4j, AgensGraph, Apache AGE, FalkorDB) for Node.js & TypeScript.
- Host: GitHub
- URL: https://github.com/liberation-data/drivine
- Owner: liberation-data
- License: apache-2.0
- Created: 2019-10-17T14:22:08.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-14T05:51:55.000Z (9 months ago)
- Last Synced: 2024-03-14T22:56:33.759Z (9 months ago)
- Topics: agensgraph, graph-databases, javascript, neo4j, neo4j-driver, nestjs, nodejs, ogm, ogm-agensgraph, ogm-neo4j, typescript
- Language: TypeScript
- Homepage: https://drivine.org
- Size: 19.6 MB
- Stars: 149
- Watchers: 4
- Forks: 31
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
![DrivineSplash](https://raw.githubusercontent.com/liberation-data/drivine/master/docs/images/splash.jpg)
# drivine⚠️ **Drivine website has moved: here.**
_Please report any broken links. Even better, a PR is very welcome! 🙏_Drivine is a graph database client for Node.js and TypeScript. It was created with the following design goals:
* Support multiple graph databases (simultaneously, if you wish). Currently [AgensGraph](https://bitnine.net/agensgraph/) and
[Neo4j](https://neo4j.com/neo4j-graph-database/) (or other BOLT compatible graph DBs).
* **Scale to hundreds and thousands of transactions per second, without compromising architectural integrity.**---------------------------------------
With regards to the second point on scaleability, let's break that down into component facets.
## Features
* Facilitates the use of well understood object-oriented and functional programming patterns.
* Supports implementation of code that adheres to a single responsibility principle (SRP). [NestJS](https://nestjs.com/) will be optional, but is recommended.
* Takes care of infrastructure concerns, so that you can focus on making the most of your data.
* Removes boiler plate code, especially the tedious and error-prone kind.
* Supports streaming, without back-pressure. Large amounts of data can be managed in a timely and memory efficient manner.
* Light-weight _use-case specific_ object graph mapping (OGM). Drivine is NOT an OGM in the traditinoal sense. The results are then mapped to/from a use-case specific model object.----
## Quick Start
Follow the **Quick Start** section in our **User Guide** or clone the **sample app** and use it as a starter template.
Start creating repositories like the one below.
```typescript
@Injectable()
export class RouteRepository {
constructor(
@InjectPersistenceManager() readonly persistenceManager: PersistenceManager,
@InjectCypher('@/traffic/routesBetween') readonly routesBetween: CypherStatement) {
}@Transactional() // Has default Propagation.REQUIRED - partipicate in a current txn, or start one.
public async findFastestBetween(start: string, destination: string): Promise {
return this.persistenceManager.getOne(
new QuerySpecification()
.withStatement(this.routesBetween)
.bind([start, destination])
.limit(1)
.transform(Route)
);
}
}
```----
## Example Applications
If you use `Drivine` and your code is public, feel free to make [PR](https://github.com/liberation-data/drivine/pulls) and add yourself to the list.
### Quick Start Template
Clone the official **[sample app](https://github.com/liberation-data/drivine-inspiration)** and start hacking.
Repository: [github.com/liberation-data/drivine-inspiration](https://github.com/liberation-data/drivine-inspiration)
This sample is a basic starter template, with some tutorials. It has some endpoints for traffic routing, movies/films and other typical use-cases. Rather than start from scratch, choose the one that closely matches yours, and modify.
### SlackMap
New version of [slackmap.com](https://slackmap.com) is full rewrite with technology update.
The `OrientDB` was replaced with `Neo4j` and we choose `Drivine` as the way to work with the database.Check out how `Drivine` supports `Neo4j` in `Full Stack JavaScript App` using `Angular` + `Nest` + `Nx Workspace Monorepo`.
Repository: [github.com/SlackMap/slackmap](https://github.com/SlackMap/slackmap)
* **master** branch - not released yet
* **develop** branch - has all the current work----
## Documentation
Best way to learn Drivine is with our [User Guide](https://github.com/liberation-data/drivine/wiki).
---------------------------------------
## Tutorials
New to graph databases? Read some tutorials.
* [Rock & Roll Traffic Routing, with Neo4j](https://medium.com/neo4j/rock-n-roll-traffic-routing-with-neo4j-3a4b863c6030)
* [Rock & Roll Traffic Routing, with Neo4j, Chapter Two](https://medium.com/neo4j/rock-n-roll-traffic-routing-with-neo4j-part-2-f2a74fe7d7f)Have a tutorial you'd like to share? [Get in touch](https://twitter.com/doctor_cerulean) with me.
---------------------------------------
## Feedback
#### I'm not sure how to do [xyz]
> If you can't find what you need in the Quick Start or User Guides, please [post a question on StackOverflow](https://stackoverflow.com/questions/tagged/drivine?sort=newest&pageSize=15), using the Drivine tag.
#### Interested in contributing?
> Great! A contribution guide, along with detailed documentation will be published in the coming days.
#### I've found a bug, or have a feature request
> Please raise a GitHub issue.
----
### Have you seen the light?
Drivine is a non-profit, community driven project. We only ask that if you've found it useful to star us on Github or send a tweet mentioning us (@doctor_cerulean). If you've written a Drivine related blog or tutorial, or published a new Drivine-powered app, we'd certainly be happy to hear about that too.
Drivine is sponsored and led by Jasper Blues with contributions from around the world.
---------------------------------------## License
Copyright (c) 2022 Jasper Blues
Drivine is free software: you can redistribute it and/or modify it under the terms of the APACHE LICENSE, VERSION 2.0
as published by the Apache Software Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache Software License, Version 2.0 for more details.
You should have received a copy of the Apache Software License along with this program.
If not, see .