{"id":24005165,"url":"https://github.com/rush-db/rushdb","last_synced_at":"2025-04-06T17:11:41.687Z","repository":{"id":268220227,"uuid":"903680048","full_name":"rush-db/rushdb","owner":"rush-db","description":"RushDB is an instant database for modern apps and DS/ML ops built on top of Neo4j","archived":false,"fork":false,"pushed_at":"2025-04-06T10:37:52.000Z","size":54731,"stargazers_count":61,"open_issues_count":40,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T11:27:45.711Z","etag":null,"topics":["app-backend","cloud","data-analysis","data-engineering","data-science","database","docker","firebase","graph-database","graphs","instant","instant-apps","javascript","neo4j","nestjs","rest-api","self-hosted","typescript","web-development"],"latest_commit_sha":null,"homepage":"https://rushdb.com","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/rush-db.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2024-12-15T09:12:00.000Z","updated_at":"2025-03-22T03:50:28.000Z","dependencies_parsed_at":"2024-12-15T10:24:25.044Z","dependency_job_id":"c17298f5-ea99-4b81-96bd-7155e890c46f","html_url":"https://github.com/rush-db/rushdb","commit_stats":null,"previous_names":["rush-db/rushdb"],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rush-db%2Frushdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rush-db%2Frushdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rush-db%2Frushdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rush-db%2Frushdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rush-db","download_url":"https://codeload.github.com/rush-db/rushdb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478229,"owners_count":20945261,"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":["app-backend","cloud","data-analysis","data-engineering","data-science","database","docker","firebase","graph-database","graphs","instant","instant-apps","javascript","neo4j","nestjs","rest-api","self-hosted","typescript","web-development"],"created_at":"2025-01-08T02:34:23.516Z","updated_at":"2025-04-06T17:11:41.669Z","avatar_url":"https://github.com/rush-db.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\n![RushDB Logo](https://raw.githubusercontent.com/rush-db/rushdb/main/rushdb-logo.svg)\n\n# RushDB\n### The Instant Database for Modern Apps and DS/ML Ops\n\nRushDB is an instant database for modern apps and DS/ML ops built on top of Neo4j.\n\nIt automates data normalization, manages relationships, and infers data types, enabling developers to focus on building features rather than wrestling with data.\n\n[🌐 Homepage](https://rushdb.com) — [📢 Blog](https://rushdb.com/blog) — [☁️ Platform ](https://app.rushdb.com) — [📖 Docs](https://docs.rushdb.com) — [🧑‍💻 Examples](https://github.com/rush-db/examples)\n\u003c/div\u003e\n\n---\n\n## Setup\n\n### Option 1: Managed Environment\n\nThe easiest way to start using RushDB is through **RushDB Cloud**. Free Tier is available.\n\nGet up and running in less than 30 seconds by signing up at [app.rushdb.com](https://app.rushdb.com). RushDB Cloud provides a fully managed environment, so you can focus on building your application without worrying about setup or infrastructure.\n\n### Option 2: Self-Hosted Environment\n\nIf you prefer to manage your own infrastructure, you can set up RushDB with a Neo4j instance. Here’s how:\n\n1. **Use Neo4j Aura (Free Tier Available)**  \n   Quickly create a Neo4j instance using [Neo4j Aura](https://neo4j.com/cloud/aura). It’s a managed service that allows you to get started with no configuration hassle.\n\n2. **Deploy Your Own Instance**  \n   Alternatively, you can host your own Neo4j instance. Follow [this detailed guide](https://medium.com/@1pxone/deploying-neo4j-on-aws-ec2-instance-apoc-plugin-installation-884deaeb4765) to deploy Neo4j on AWS EC2, including steps for installing the APOC plugin.\n\nBoth options allow you to connect RushDB to your Neo4j database for a fully customizable self-hosted environment.\n\n#### Requirements\n- **Minimum Neo4j Version**: `5.25.1`\n- **Required Plugin**: `apoc-core` (installed and enabled)\n\nMake sure your setup meets these requirements for optimal functionality.\n\n---\n\n#### Running the RushDB Platform\n\nYou can quickly launch the **RushDB Platform** using the following Docker command:\n\n```shell\ndocker run -p 3000:3000 \\\n--name rushdb \\\n-e NEO4J_URL='neo4j+s://1234567.databases.neo4j.io' \\\n-e NEO4J_USERNAME='neo4j' \\\n-e NEO4J_PASSWORD='password' \\\nrushdb/platform\n```\n\nOr by using Docker Compose:\n\n```yaml\nversion: '3.8'\nservices:\n  rushdb:\n    image: rushdb/platform\n    container_name: rushdb\n    ports:\n      - \"3000:3000\"\n    environment:\n      - NEO4J_URL=neo4j+s://1234567.databases.neo4j.io\n      - NEO4J_USERNAME=neo4j\n      - NEO4J_PASSWORD=password\n```\n\n#### Environment Variables\n\nBefore running the container, ensure you provide the following required environment variables:\n\n- **`NEO4J_URL`**: The connection string for your Neo4j database (e.g., `neo4j+s://\u003cyour-instance-id\u003e.databases.neo4j.io`).\n- **`NEO4J_USERNAME`**: The username for accessing the Neo4j database (default is `neo4j`).\n- **`NEO4J_PASSWORD`**: The password for your Neo4j database instance.\n\n### Additional Environment Variables\n\n#### 1. `RUSHDB_PORT`\n- **Description**: The port on which the application server will listen for incoming requests.\n- **Default**: `3000`\n\n#### 2. `RUSHDB_AES_256_ENCRYPTION_KEY`\n- **Description**: The encryption key for securing API tokens using AES-256 encryption.\n- **Requirement**: Must be exactly 32 characters long to meet the 256-bit key length requirement.\n- **Important**: Change this to a secure value in production.\n- **Default**: `32SymbolStringForTokenEncryption`\n\n#### 3. `RUSHDB_LOGIN`\n- **Description**: The login username for the RushDB admin account.\n- **Important**: Change this to a secure value in production.\n- **Default**: `admin`\n\n#### 4. `RUSHDB_PASSWORD`\n- **Description**: The password for the RushDB admin account.\n- **Important**: Change this to a secure value in production.\n- **Default**: `password`\n\n---\n\n\u003cdetails\u003e\n  \u003csummary\u003eDevelopment Setup with local Neo4j [DOCKER COMPOSE]\u003c/summary\u003e\n\n   ```yaml\n   version: '3.8'\n   services:\n     rushdb:\n       image: rushdb/platform\n       container_name: rushdb\n       depends_on:\n         neo4j:\n           condition: service_healthy\n       ports:\n         - \"3000:3000\"\n       environment:\n         - NEO4J_URL=bolt://neo4j\n         - NEO4J_USERNAME=neo4j\n         - NEO4J_PASSWORD=password\n     neo4j:\n       image: neo4j:5.25.1\n       healthcheck:\n         test: [ \"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider localhost:7474 || exit 1\" ]\n         interval: 5s\n         retries: 30\n         start_period: 10s\n       ports:\n         - \"7474:7474\"\n         - \"7687:7687\"\n       environment:\n         - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes\n         - NEO4J_AUTH=neo4j/password\n         - NEO4J_PLUGINS=[\"apoc\"]\n   ```\n\u003c/details\u003e\n\n\n### **CLI Commands**\n\nThe RushDB CLI allows you to manage users in self-hosted installations. Below are the available commands:\n\n#### **Create a New User**\n\nCommand:\n```bash\nrushdb create-user \u003clogin\u003e \u003cpassword\u003e\n```\n\nExample:\n```bash\nrushdb create-user admin@example.com securepassword123\n```\n\nThis command creates a new user with the specified login and password. It is only allowed in self-hosted setups.\n\n#### **Update User Password**\n\nCommand:\n```bash\nrushdb update-password \u003clogin\u003e \u003cnewPassword\u003e\n```\n\nExample:\n```bash\nrushdb update-password admin@example.com newsecurepassword456\n```\n\nThis command updates the password for an existing user identified by the provided login. Like `create-user`, this command is restricted to self-hosted environments.\n\n---\n\n## Usage\n\n1. **Obtain an API Token**:\n   - If you’re using **RushDB Cloud**, get your token from [app.rushdb.com](https://app.rushdb.com).\n   - For a self-hosted RushDB instance, retrieve the token from the **Dashboard** running locally (`localhost:3000`).\n\n2. **Build Anything**:  \n   Easily push, search, and manage relationships within your data.\n\n### With Python\n\nExplore the [Documentation](https://docs.rushdb.com/python-sdk/records-api)\n\n#### Install the SDK\n\n```bash\npip install rushdb\n```\n\n#### Push any json data\n\n```python\nfrom rushdb import RushDB\n\ndb = RushDB(\n   \"rushdb-api-key\",\n   # Default URL; only override if necessary.\n   base_url=\"https://api.rushdb.com\",\n)\n\ndb.records.create_many(\n   \"COMPANY\",\n   {\n      \"name\": \"Google LLC\",\n      \"address\": \"1600 Amphitheatre Parkway, Mountain View, CA 94043, USA\",\n      \"foundedAt\": \"1998-09-04T00:00:00.000Z\",\n      \"rating\": 4.9,\n      \"DEPARTMENT\": [\n         {\n            \"name\": \"Research \u0026 Development\",\n            \"description\": \"Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.\",\n            \"tags\": [\"AI\", \"Cloud Computing\", \"Research\"],\n            \"profitable\": true,\n            \"PROJECT\": [\n               {\n                  \"name\": \"Bard AI\",\n                  \"description\": \"A state-of-the-art generative AI model for natural language understanding and creation.\",\n                  \"active\": true,\n                  \"budget\": 1200000000,\n                  \"EMPLOYEE\": [\n                     {\n                        \"name\": \"Jeff Dean\",\n                        \"position\": \"Head of AI Research\",\n                        \"email\": \"jeff@google.com\",\n                        \"salary\": 3000000,\n                     }\n                  ],\n               }\n            ],\n         }\n      ],\n   },\n)\n```\n\n#### Find Records by specific criteria\n```python\n# Find Records by specific criteria\nmatched_employees = db.records.find(\n   {\n      \"labels\": [\"EMPLOYEE\"],\n      \"where\": {\n         \"position\": {\"$contains\": \"AI\"},\n         \"PROJECT\": {\"DEPARTMENT\": {\"COMPANY\": {\"rating\": {\"$gte\": 4}}}},\n      },\n   }\n)\n\n```\n---\n\n### With TypeScript / JavaScript\n\nExplore the [Documentation](https://docs.rushdb.com)\n\n#### Install the SDK\n\n```bash\nnpm install @rushdb/javascript-sdk\n```\n\n#### Push any json data\n\n```typescript\nimport RushDB from '@rushdb/javascript-sdk';\n\n// Setup SDK\nconst db = new RushDB(\"API_TOKEN\", {\n  // Default URL; only override if necessary.\n  url: \"https://api.rushdb.com\",\n});\n\n// Push data: RushDB flattens it into Records and establishes relationships automatically.\nawait db.records.createMany(\"COMPANY\", {\n  name: 'Google LLC',\n  address: '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',\n  foundedAt: '1998-09-04T00:00:00.000Z',\n  rating: 4.9,\n  DEPARTMENT: [{\n    name: 'Research \u0026 Development',\n    description: 'Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.',\n    PROJECT: [{\n      name: 'Bard AI',\n      description: 'A state-of-the-art generative AI model for natural language understanding and creation.',\n      active: true,\n      budget: 1200000000,\n      EMPLOYEE: [{\n        name: 'Jeff Dean',\n        position: 'Head of AI Research',\n        email: 'jeff@google.com',\n        dob: '1968-07-16T00:00:00.000Z',\n        salary: 3000000,\n      }]\n    }]\n  }]\n});\n```\n\n#### Find Records by specific criteria\n```typescript\n// Find Records by specific criteria\nconst matchedEmployees = await db.records.find({\n  labels: ['EMPLOYEE'],\n  where: {\n    position: { $contains: 'AI' },\n    PROJECT: {\n      DEPARTMENT: {\n        COMPANY: {\n          rating: { $gte: 4 },\n        },\n      },\n    },\n  },\n});\n\nconst company = await db.records.findUniq('COMPANY', {\n  where: {\n    name: 'Google LLC',\n  },\n});\n```\n---\n\n### With REST API and cURL\n\nExplore the [Documentation](https://docs.rushdb.com)\n\n#### Specify API base URL\n\n- **RushDB Cloud**: `https://api.rushdb.com`\n- **Self-Hosted**: Your custom URL (e.g., `http://localhost:3000`)\n\n####  Push any json data\n\n```bash\ncurl -X POST https://api.rushdb.com/api/v1/records/import/json \\\n-H \"Authorization: Bearer API_TOKEN\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"label\": \"COMPANY\",\n  \"payload\": {\n    \"name\": \"Google LLC\",\n    \"address\": \"1600 Amphitheatre Parkway, Mountain View, CA 94043, USA\",\n    \"foundedAt\": \"1998-09-04T00:00:00.000Z\",\n    \"rating\": 4.9,\n    \"DEPARTMENT\": [{\n      \"name\": \"Research \u0026 Development\",\n      \"description\": \"Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.\",\n      \"PROJECT\": [{\n        \"name\": \"Bard AI\",\n        \"description\": \"A state-of-the-art generative AI model for natural language understanding and creation.\",\n        \"active\": true,\n        \"budget\": 1200000000,\n        \"EMPLOYEE\": [{\n          \"name\": \"Jeff Dean\",\n          \"position\": \"Head of AI Research\",\n          \"email\": \"jeff@google.com\",\n          \"dob\": \"1968-07-16T00:00:00.000Z\",\n          \"salary\": 3000000\n        }]\n      }]\n    }]\n  }\n}'\n```\n\n#### Find Records by specific criteria\n\n```bash\ncurl -X POST https://api.rushdb.com/api/v1/records/search \\\n-H \"Authorization: Bearer API_TOKEN\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"labels\": [\"EMPLOYEE\"],\n  \"where\": {\n    \"position\": { \"$contains\": \"AI\" },\n    \"PROJECT\": {\n      \"DEPARTMENT\": {\n        \"COMPANY\": {\n          \"rating\": { \"$gte\": 4 }\n        }\n      }\n    }\n  }\n}'\n```\n\n---\n\n\u003cdiv align=\"center\" style=\"margin-top: 20px\"\u003e\n\n\u003e Check the [Documentation](https://docs.rushdb.com) and [Examples](https://github.com/rush-db/examples) to learn more 🤓\n\n\u003c/div\u003e\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frush-db%2Frushdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frush-db%2Frushdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frush-db%2Frushdb/lists"}