rushdb/platform
RushDB is an open-source instant database for modern apps and DS/ML ops
1.6K
RushDB is an instant database for modern apps and DS/ML ops built on top of Neo4j.
It automates data normalization, manages relationships, and infers data types, enabling developers to focus on building features rather than wrestling with data.
🌐 Homepage — 📢 Blog — ☁️ Platform — 📖 Docs — 🧑💻 Examples
The easiest way to start using RushDB is through RushDB Cloud. Free Tier is available.
Get up and running in less than 30 seconds by signing up at app.rushdb.com. RushDB Cloud provides a fully managed environment, so you can focus on building your application without worrying about setup or infrastructure.
If you prefer to manage your own infrastructure, you can set up RushDB with a Neo4j instance. Here’s how:
Use Neo4j Aura (Free Tier Available)
Quickly create a Neo4j instance using Neo4j Aura. It’s a managed service that allows you to get started with no configuration hassle.
Deploy Your Own Instance
Alternatively, you can host your own Neo4j instance. Follow this detailed guide to deploy Neo4j on AWS EC2, including steps for installing the APOC plugin.
Both options allow you to connect RushDB to your Neo4j database for a fully customizable self-hosted environment.
Requirements
5.25.1
apoc-core
(installed and enabled)Make sure your setup meets these requirements for optimal functionality.
Running the RushDB Platform
You can quickly launch the RushDB Platform using the following Docker command:
docker run -p 3000:3000 \
--name rushdb \
-e NEO4J_URL='neo4j+s://1234567.databases.neo4j.io' \
-e NEO4J_USERNAME='neo4j' \
-e NEO4J_PASSWORD='password' \
rushdb/platform
Or by using Docker Compose:
version: '3.8'
services:
rushdb:
image: rushdb/platform
container_name: rushdb
ports:
- "3000:3000"
environment:
- NEO4J_URL=neo4j+s://1234567.databases.neo4j.io
- NEO4J_USERNAME=neo4j
- NEO4J_PASSWORD=password
Environment Variables
Before running the container, ensure you provide the following required environment variables:
NEO4J_URL
: The connection string for your Neo4j database (e.g., neo4j+s://<your-instance-id>.databases.neo4j.io
).NEO4J_USERNAME
: The username for accessing the Neo4j database (default is neo4j
).NEO4J_PASSWORD
: The password for your Neo4j database instance.1. RUSHDB_PORT
3000
2. RUSHDB_AES_256_ENCRYPTION_KEY
32SymbolStringForTokenEncryption
3. RUSHDB_LOGIN
admin
4. RUSHDB_PASSWORD
password
version: '3.8'
services:
rushdb:
image: rushdb/platform
container_name: rushdb
depends_on:
neo4j:
condition: service_healthy
ports:
- "3000:3000"
environment:
- NEO4J_URL=bolt://neo4j
- NEO4J_USERNAME=neo4j
- NEO4J_PASSWORD=password
neo4j:
image: neo4j:5.25.1
healthcheck:
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1" ]
interval: 5s
retries: 30
start_period: 10s
ports:
- "7474:7474"
- "7687:7687"
environment:
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_AUTH=neo4j/password
- NEO4J_PLUGINS=["apoc"]
The RushDB CLI allows you to manage users in self-hosted installations. Below are the available commands:
Create a New User
Command:
rushdb create-user <login> <password>
Example:
rushdb create-user admin@example.com securepassword123
This command creates a new user with the specified login and password. It is only allowed in self-hosted setups.
Update User Password
Command:
rushdb update-password <login> <newPassword>
Example:
rushdb update-password admin@example.com newsecurepassword456
This command updates the password for an existing user identified by the provided login. Like create-user
, this command is restricted to self-hosted environments.
Obtain an API Token:
localhost:3000
).Build Anything:
Easily push, search, and manage relationships within your data.
Explore the Documentation
Install the SDK
pip install rushdb
Push any json data
from rushdb import RushDB
db = RushDB(
"rushdb-api-key",
# Default URL; only override if necessary.
base_url="https://api.rushdb.com",
)
db.records.create_many(
"COMPANY",
{
"name": "Google LLC",
"address": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
"foundedAt": "1998-09-04T00:00:00.000Z",
"rating": 4.9,
"DEPARTMENT": [
{
"name": "Research & Development",
"description": "Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.",
"tags": ["AI", "Cloud Computing", "Research"],
"profitable": true,
"PROJECT": [
{
"name": "Bard AI",
"description": "A state-of-the-art generative AI model for natural language understanding and creation.",
"active": true,
"budget": 1200000000,
"EMPLOYEE": [
{
"name": "Jeff Dean",
"position": "Head of AI Research",
"email": "jeff@google.com",
"salary": 3000000,
}
],
}
],
}
],
},
)
Find Records by specific criteria
# Find Records by specific criteria
matched_employees = db.records.find(
{
"labels": ["EMPLOYEE"],
"where": {
"position": {"$contains": "AI"},
"PROJECT": {"DEPARTMENT": {"COMPANY": {"rating": {"$gte": 4}}}},
},
}
)
Explore the Documentation
Install the SDK
npm install @rushdb/javascript-sdk
Push any json data
import RushDB from '@rushdb/javascript-sdk';
// Setup SDK
const db = new RushDB("API_TOKEN", {
// Default URL; only override if necessary.
url: "https://api.rushdb.com",
});
// Push data: RushDB flattens it into Records and establishes relationships automatically.
await db.records.createMany("COMPANY", {
name: 'Google LLC',
address: '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
foundedAt: '1998-09-04T00:00:00.000Z',
rating: 4.9,
DEPARTMENT: [{
name: 'Research & Development',
description: 'Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.',
PROJECT: [{
name: 'Bard AI',
description: 'A state-of-the-art generative AI model for natural language understanding and creation.',
active: true,
budget: 1200000000,
EMPLOYEE: [{
name: 'Jeff Dean',
position: 'Head of AI Research',
email: 'jeff@google.com',
dob: '1968-07-16T00:00:00.000Z',
salary: 3000000,
}]
}]
}]
});
Find Records by specific criteria
// Find Records by specific criteria
const matchedEmployees = await db.records.find({
labels: ['EMPLOYEE'],
where: {
position: { $contains: 'AI' },
PROJECT: {
DEPARTMENT: {
COMPANY: {
rating: { $gte: 4 },
},
},
},
},
});
const company = await db.records.findUniq('COMPANY', {
where: {
name: 'Google LLC',
},
});
Explore the Documentation
Specify API base URL
https://api.rushdb.com
http://localhost:3000
)Push any json data
curl -X POST https://api.rushdb.com/api/v1/records/import/json \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"label": "COMPANY",
"payload": {
"name": "Google LLC",
"address": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
"foundedAt": "1998-09-04T00:00:00.000Z",
"rating": 4.9,
"DEPARTMENT": [{
"name": "Research & Development",
"description": "Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.",
"PROJECT": [{
"name": "Bard AI",
"description": "A state-of-the-art generative AI model for natural language understanding and creation.",
"active": true,
"budget": 1200000000,
"EMPLOYEE": [{
"name": "Jeff Dean",
"position": "Head of AI Research",
"email": "jeff@google.com",
"dob": "1968-07-16T00:00:00.000Z",
"salary": 3000000
}]
}]
}]
}
}'
Find Records by specific criteria
curl -X POST https://api.rushdb.com/api/v1/records/search \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"labels": ["EMPLOYEE"],
"where": {
"position": { "$contains": "AI" },
"PROJECT": {
"DEPARTMENT": {
"COMPANY": {
"rating": { "$gte": 4 }
}
}
}
}
}'
Check the Documentation and Examples to learn more 🤓
docker pull rushdb/platform