{"id":21007647,"url":"https://github.com/liberation-data/drivine","last_synced_at":"2025-04-05T23:10:20.909Z","repository":{"id":35187575,"uuid":"215811363","full_name":"liberation-data/drivine","owner":"liberation-data","description":"Best and fastest graph database client (Neo4j, AgensGraph, Apache AGE, FalkorDB) for Node.js \u0026 TypeScript. ","archived":false,"fork":false,"pushed_at":"2024-03-14T05:51:55.000Z","size":20549,"stargazers_count":149,"open_issues_count":24,"forks_count":31,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-03-14T22:56:33.759Z","etag":null,"topics":["agensgraph","graph-databases","javascript","neo4j","neo4j-driver","nestjs","nodejs","ogm","ogm-agensgraph","ogm-neo4j","typescript"],"latest_commit_sha":null,"homepage":"https://drivine.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liberation-data.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2019-10-17T14:22:08.000Z","updated_at":"2024-06-21T02:37:21.434Z","dependencies_parsed_at":"2023-02-10T08:16:07.001Z","dependency_job_id":"fed2744a-9a85-4f7a-ac05-581738038b99","html_url":"https://github.com/liberation-data/drivine","commit_stats":{"total_commits":413,"total_committers":13,"mean_commits":31.76923076923077,"dds":"0.49878934624697335","last_synced_commit":"88df88ed2b83ab5fa7b52b2b3ec44ce067a91995"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liberation-data%2Fdrivine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liberation-data%2Fdrivine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liberation-data%2Fdrivine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liberation-data%2Fdrivine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liberation-data","download_url":"https://codeload.github.com/liberation-data/drivine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411235,"owners_count":20934653,"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","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":["agensgraph","graph-databases","javascript","neo4j","neo4j-driver","nestjs","nodejs","ogm","ogm-agensgraph","ogm-neo4j","typescript"],"created_at":"2024-11-19T09:09:28.419Z","updated_at":"2025-04-05T23:10:20.884Z","avatar_url":"https://github.com/liberation-data.png","language":"TypeScript","readme":"\u003ca href=\"https://liberation-data.github.io/drivine/\"\u003e ![DrivineSplash](https://raw.githubusercontent.com/liberation-data/drivine/master/docs/images/splash.jpg)\u003c/a\u003e\n# \u003ca href=\"https://liberation-data.github.io/drivine/\"\u003edrivine\u003c/a\u003e \n\n⚠️ **Drivine website has moved: \u003ca href=\"https://liberation-data.github.io/drivine/\"\u003ehere\u003c/a\u003e.**\n_Please report any broken links. Even better, a PR is very welcome! 🙏_\n\nDrivine is a graph database client for Node.js and TypeScript. It was created with the following design goals: \n\n* Support multiple graph databases (simultaneously, if you wish). Currently, [AgensGraph](https://bitnine.net/agensgraph/), [Amazon Neptune](https://aws.amazon.com/neptune/) and \n[Neo4j](https://neo4j.com/neo4j-graph-database/) (or other BOLT compatible graph DBs) are supported. There is a branch for [FalkorDB](https://www.falkordb.com/) that requires support for transactions to be added. \n* **Scale to hundreds and thousands of transactions per second, without compromising architectural integrity.**\n\n---------------------------------------\n\nIn regard to the second point on scalability, let's break that down into component facets. \n\n## Features\n\n* Facilitates the use of \u003ca href=\"https://drivine.org/guide/#/repositories\"\u003ewell understood object-oriented\u003c/a\u003e and functional programming patterns. \n* Supports implementation of code that adheres to a single responsibility principle (SRP). [NestJS](https://nestjs.com/) will be optional, but is recommended. \n* Takes care of \u003ca href=\"https://drivine.org/guide/#/persistence-manager\"\u003einfrastructure concerns\u003c/a\u003e, so that you can focus on making the most of your data. \n* \u003ca href=\"https://drivine.org/guide/#/transactions\"\u003eRemoves boiler plate code\u003c/a\u003e, especially the tedious and error-prone kind. \n* \u003ca href=\"https://drivine.org/guide/#/cursors\"\u003eSupports streaming\u003c/a\u003e, without back-pressure. Large amounts of data can be managed in a timely and memory efficient manner. \n* Light-weight _use-case specific_ \u003ca href=\"https://drivine.org/guide/#/object-mapping\"\u003eobject graph mapping (OGM)\u003c/a\u003e. Drivine is NOT an OGM in the traditinoal sense. The results are then mapped to/from a use-case specific model object. \n\n----\n\n## Quick Start\n\nFollow the **\u003ca href=\"https://github.com/liberation-data/drivine/wiki\"\u003eQuick Start\u003c/a\u003e** section in our **\u003ca href=\"https://github.com/liberation-data/drivine/wiki\"\u003eUser Guide\u003c/a\u003e** or clone the **\u003ca href=\"https://github.com/liberation-data/drivine-inspiration\"\u003esample app\u003c/a\u003e** and use it as a starter template. \n\n\nStart creating repositories like the one below. \n```typescript\n@Injectable()\nexport class RouteRepository {\n    constructor(\n        @InjectPersistenceManager() readonly persistenceManager: PersistenceManager,\n        @InjectCypher('@/traffic/routesBetween') readonly routesBetween: CypherStatement) {\n    }\n\n    @Transactional() // Has default Propagation.REQUIRED - partipicate in a current txn, or start one.\n    public async findFastestBetween(start: string, destination: string): Promise\u003cRoute\u003e {\n        return this.persistenceManager.getOne(\n            new QuerySpecification\u003cRoute\u003e()\n                .withStatement(this.routesBetween)\n                .bind([start, destination])\n                .limit(1)\n                .transform(Route)\n        );\n    }\n}\n```\n\n----\n\n## Example Applications\n\nIf 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.\n\n### Quick Start Template\n\nClone the official **[sample app](https://github.com/liberation-data/drivine-inspiration)** and start hacking. \n\nRepository: [github.com/liberation-data/drivine-inspiration](https://github.com/liberation-data/drivine-inspiration) \n\nThis 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. \n\n### SlackMap\n\nNew version of [slackmap.com](https://slackmap.com) is full rewrite with technology update.\nThe `OrientDB` was replaced with `Neo4j` and we choose `Drivine` as the way to work with the database.\n\nCheck out how `Drivine` supports `Neo4j` in `Full Stack JavaScript App` using `Angular` + `Nest` + `Nx Workspace Monorepo`.\n\nRepository: [github.com/SlackMap/slackmap](https://github.com/SlackMap/slackmap) \n\n* **master** branch - not released yet\n* **develop** branch - has all the current work\n\n----\n\n## Documentation\n\nBest way to learn Drivine is with our [User Guide](https://github.com/liberation-data/drivine/wiki).\n\n---------------------------------------\n\n## Tutorials\n\nNew to graph databases? Read some tutorials. \n\n* [Rock \u0026amp; Roll Traffic Routing, with Neo4j](https://medium.com/neo4j/rock-n-roll-traffic-routing-with-neo4j-3a4b863c6030) \n* [Rock \u0026amp; Roll Traffic Routing, with Neo4j, Chapter Two](https://medium.com/neo4j/rock-n-roll-traffic-routing-with-neo4j-part-2-f2a74fe7d7f) \n\nHave a tutorial you'd like to share? [Get in touch](https://twitter.com/doctor_cerulean) with me. \n\n---------------------------------------\n\n## Feedback \n\n#### I'm not sure how to do [xyz]\n\n\u003e 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\u0026pageSize=15), using the Drivine tag. \n\n#### Interested in contributing?\n\n\u003e Great! A contribution guide, along with detailed documentation will be published in the coming days. \n\n#### I've found a bug, or have a feature request\n\n\u003e Please raise a \u003ca href=\"https://github.com/liberation-data/drivine/issues\"\u003eGitHub\u003c/a\u003e issue.\n\n----\n\n### Have you seen the light? \n\nDrivine 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 (\u003ca href=\"https://twitter.com/@doctor_cerulean\"\u003e@doctor_cerulean\u003c/a\u003e). 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. \n\nDrivine is sponsored and led by \u003ca href=\"https://www.linkedin.com/in/jasper-blues-7781638/\"\u003eJasper Blues\u003c/a\u003e with \u003ca href=\"https://github.com/liberation-data/Drivine/graphs/contributors\"\u003econtributions from around the world\u003c/a\u003e. \n \n---------------------------------------\n\n## License\n\nCopyright (c) 2022 Jasper Blues\n\nDrivine is free software: you can redistribute it and/or modify it under the terms of the APACHE LICENSE, VERSION 2.0\nas published by the Apache Software Foundation, either version 2 of the License, or (at your option) any later version.\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache Software License, Version 2.0 for more details.\nYou should have received a copy of the Apache Software License along with this program.\nIf not, see \u003chttp://www.apache.org/licenses/\u003e.\n \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliberation-data%2Fdrivine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliberation-data%2Fdrivine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliberation-data%2Fdrivine/lists"}