All Projects → liberation-data → Drivine

liberation-data / Drivine

Licence: apache-2.0
Best and fastest graph database client (Neo4j & AgensGraph) for Node.js & TypeScript.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Drivine

nest-neo4j
A NestJS module for integrating with Neo4j
Stars: ✭ 54 (-27.03%)
Mutual labels:  neo4j, nestjs
twitch-project
A weekly stream in which I build a web application with Neo4j and Typescript
Stars: ✭ 78 (+5.41%)
Mutual labels:  neo4j, nestjs
Neo4j Tableau
Neo4j Tableau Integration via WDC
Stars: ✭ 56 (-24.32%)
Mutual labels:  neo4j
Neo4j Clj
Clojure bindings for Bolt / the Java Neo4j driver, complete with Joplin support for managing database migrations.
Stars: ✭ 70 (-5.41%)
Mutual labels:  neo4j
Obsidian Neo4j Graph View
Neo4j Graph View is a more functional graph view to Obsidian. It connects to a Neo4j database, allowing useful querying and visualization options.
Stars: ✭ 65 (-12.16%)
Mutual labels:  neo4j
Nestia
Automatic SDK and Document generator for the NestJS
Stars: ✭ 57 (-22.97%)
Mutual labels:  nestjs
Movies Java Bolt
Neo4j Movies Example application with SparkJava backend using the neo4j-java-driver
Stars: ✭ 66 (-10.81%)
Mutual labels:  neo4j
Pimp My Pr
A brilliant tool that will pimp your pull requests by collecting and presenting PR statistics.
Stars: ✭ 55 (-25.68%)
Mutual labels:  nestjs
Nestjs Components
A list of useful components for NestJS applications
Stars: ✭ 72 (-2.7%)
Mutual labels:  nestjs
Nestjs Braintree
A module for braintree reoccurring payments and transactions 💳
Stars: ✭ 62 (-16.22%)
Mutual labels:  nestjs
Node Blog
🔥✨ A react blog project base on nodejs, nestjs, mongoose, typescript, react, ant-design,nextjs
Stars: ✭ 69 (-6.76%)
Mutual labels:  nestjs
Nestjs Monorepo Starter
A full-stack nestjs starter project. Includes authorization, authentication, MongoDB, Redis queue support, Crons jobs, and end-to-end testing.
Stars: ✭ 58 (-21.62%)
Mutual labels:  nestjs
Cypher Stream
Neo4j Cypher queries as Node.js object streams
Stars: ✭ 58 (-21.62%)
Mutual labels:  neo4j
Bank
🏦 Full Stack Web Application similar to financial software that is used in banking institutions | React.js and Node.js
Stars: ✭ 1,158 (+1464.86%)
Mutual labels:  nestjs
Reactivated App
Reactivated.app is an open-source app that scans your JS dependencies every 4 hours and generates cool dashboards
Stars: ✭ 57 (-22.97%)
Mutual labels:  nestjs
Neo4j Dotnet Ogm
Neo4j Object Graph Mapping Library for .NET
Stars: ✭ 69 (-6.76%)
Mutual labels:  neo4j
Tyloo Chat
vue + nestjs IM即时通讯聊天室(仿wechat)
Stars: ✭ 54 (-27.03%)
Mutual labels:  nestjs
Neo4j Graphql
An optimized neo4j query resolver for Facebook's GraphQL
Stars: ✭ 60 (-18.92%)
Mutual labels:  neo4j
Blog
📚 专注Web与算法
Stars: ✭ 1,140 (+1440.54%)
Mutual labels:  nestjs
Stock Knowledge Graph
利用网络上公开的数据构建一个小型的证券知识图谱/知识库
Stars: ✭ 1,182 (+1497.3%)
Mutual labels:  neo4j

DrivineSplash

drivine.org

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 and Neo4j (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


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.

@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<Route> {
        return this.persistenceManager.getOne(
            new QuerySpecification<Route>()
                .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 and add yourself to the list.

Quick Start Template

Clone the official sample app and start hacking.

Repository: 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 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

  • master branch - not released yet
  • develop branch - has all the current work

Documentation

Best way to learn Drivine is with our User Guide.


Tutorials

New to graph databases? Read some tutorials.

Have a tutorial you'd like to share? Get in touch with me.


About

Drivine was created by Jasper Blues (that's me), who is also the creator of a popular iOS library called Typhoon, which is included in thousands of iOS apps including Audible.com, AMEX, Etihad Airlines, Singapore Airlines and others.

This library is based on an architecture that was put in place for MSTS, after the company signed several Fortune 100 clients and needed to scale their payment service. The result was not only an improved architecture, but response times improved dramatically - from just under 2000ms seconds to around 63ms.

The ideas were ruminated upon while building Vampr - a growing social network for musicans that needs to serve hundreds of transactions per second. Clean architecture and performance are often competing concerns, so how would one go about getting the best of both worlds?

Drivine shows that it is not necessary to forego clean architecture in order to achieve scaleability goals.

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, 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.


Who is using it?

Are you using Drivine and would like to support free & open-source software? Send us an email or PR to add your logo here.

Slackmap Logo Liberation Data Logo Mobbiz Solutions Logo Slackmap Logo Neo4j Logo


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 Liberation Data with contributions from around the world.


License

Copyright (c) 2020 Liberation Data

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 http://www.apache.org/licenses/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].