{"id":21518073,"url":"https://github.com/oslabs-beta/polybase","last_synced_at":"2025-08-20T19:17:29.549Z","repository":{"id":254615413,"uuid":"845808825","full_name":"oslabs-beta/Polybase","owner":"oslabs-beta","description":"A JavaScript library designed to simplify data integration and synchronization within polyglot environments.","archived":false,"fork":false,"pushed_at":"2025-03-09T22:31:33.000Z","size":78606,"stargazers_count":25,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-07T05:34:43.411Z","etag":null,"topics":["database","database-management","influxdb","javascript","javascript-library","mongodb","neo4j","nodejs","postgresql","react","redis"],"latest_commit_sha":null,"homepage":"https://polybase.dev/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oslabs-beta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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},"funding":{"github":"open-source-labs","custom":["https://donorbox.org/donations-to-oslabs-inc"]}},"created_at":"2024-08-22T01:00:51.000Z","updated_at":"2025-03-09T22:31:38.000Z","dependencies_parsed_at":"2024-09-10T06:02:29.362Z","dependency_job_id":"793c5b06-af0d-45a0-9234-5638f79408ff","html_url":"https://github.com/oslabs-beta/Polybase","commit_stats":null,"previous_names":["oslabs-beta/polybase"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FPolybase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FPolybase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FPolybase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FPolybase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oslabs-beta","download_url":"https://codeload.github.com/oslabs-beta/Polybase/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119439,"owners_count":21050754,"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":["database","database-management","influxdb","javascript","javascript-library","mongodb","neo4j","nodejs","postgresql","react","redis"],"created_at":"2024-11-24T00:50:02.533Z","updated_at":"2025-04-09T21:45:02.036Z","avatar_url":"https://github.com/oslabs-beta.png","language":"JavaScript","funding_links":["https://github.com/sponsors/open-source-labs","https://donorbox.org/donations-to-oslabs-inc"],"categories":[],"sub_categories":[],"readme":"![polybase-logo](https://github.com/user-attachments/assets/041ba430-00bc-41bf-8159-dcd3d02a877a)\n\n\n## About\n\n[![License](https://img.shields.io/badge/License-MIT-008CBA)](#)\n[![Release](https://img.shields.io/badge/Release-v1.0.3-00A676)](#)\n[![Contributions](https://img.shields.io/badge/Contributions-Welcome-FFD700)](#)\n[![Polybase Landing Page](https://img.shields.io/badge/Website-polybase.dev-0056D2)](https://www.polybase.dev)\n\nPolybase is a robust Node.js library designed for seamless integration and synchronization across SQL, NoSQL, graph, and time-series databases. With a built-in CLI, developers can easily manage configurations, query databases, and handle cross-database operations efficiently.\n\n\u003cbr\u003e\n\n## Technologies \n\n### Core Backend \n![Node.js](https://img.shields.io/badge/Node.js-339933?logo=node.js\u0026logoColor=white)\n![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript\u0026logoColor=black)\n![MongoDB](https://img.shields.io/badge/MongoDB-47A248?logo=mongodb\u0026logoColor=white)\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-336791?logo=postgresql\u0026logoColor=white)\n![Redis](https://img.shields.io/badge/Redis-DC382D?logo=redis\u0026logoColor=white)\n![Neo4j](https://img.shields.io/badge/Neo4j-008CC1?logo=neo4j\u0026logoColor=white)\n![InfluxDB](https://img.shields.io/badge/InfluxDB-22ADF6?logo=influxdb\u0026logoColor=white)\n\n\n### Frontend and Presentation\n![React](https://img.shields.io/badge/React-61DAFB?logo=react\u0026logoColor=black)\n![Next.js](https://img.shields.io/badge/Next.js-000000?logo=next.js\u0026logoColor=white)\n![React Router](https://img.shields.io/badge/React_Router-CA4245?logo=react-router\u0026logoColor=white)\n![Vite](https://img.shields.io/badge/Vite-646CFF?logo=vite\u0026logoColor=white)\n![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-06B6D4?logo=tailwind-css\u0026logoColor=white)\n![HTML](https://img.shields.io/badge/HTML-E34F26?logo=html5\u0026logoColor=white)\n![CSS](https://img.shields.io/badge/CSS-1572B6?logo=css3\u0026logoColor=white)\n\n\n### Build and Deployment Tools\n![Jenkins](https://img.shields.io/badge/Jenkins-D24939?logo=jenkins\u0026logoColor=white)\n![Rollup](https://img.shields.io/badge/Rollup-EC4A3F?logo=rollup.js\u0026logoColor=white)\n![Webpack](https://img.shields.io/badge/Webpack-8DD6F9?logo=webpack\u0026logoColor=black)\n![Babel](https://img.shields.io/badge/Babel-F9DC3E?logo=babel\u0026logoColor=black)\n![NPM](https://img.shields.io/badge/NPM-CB3837?logo=npm\u0026logoColor=white)\n\n\u003cbr\u003e\n\n## Features \n\n\u003cb\u003e• Multi-Database Support:\u003c/b\u003e Handles MongoDB, PostgreSQL, Redis, Neo4j, and InfluxDB with a unified interface.\n\n\u003cb\u003e• Powerful CLI:\u003c/b\u003e Supports 10+ commands (e.g., status, retry, clear) for streamlined debugging and database management.\n\n\u003cb\u003e• State Management:\u003c/b\u003e Tracks connections and configurations for local and remote databases.\n\n\u003cb\u003e• Circular Dependency Handling:\u003c/b\u003e Ensures scalability and maintainability.\n\n\u003cb\u003e• Robust Rollback Mechanism:\u003c/b\u003e Guarantees 100% rollback success for critical commands.\n\n\u003cb\u003e• Seamless Configuration Loading:\u003c/b\u003e Reads JSON and .env files for environment-based setups.\n\n\u003cbr\u003e\n\n## Installation and Usage\n\n\u003cb\u003eInstallation\u003c/b\u003e\n\nTo install Polybase via npm, run:\n\n```\nnpm install polybase-package\n```\n\u003cbr\u003e\n\n\u003cb\u003eUsage\u003c/b\u003e\n\n\u003cb\u003eStep 1:\u003c/b\u003e Import Polybase into Your Project\n\n```\nconst Polybase = require('polybase-package');\n```\n\n\n\u003cb\u003eStep 2:\u003c/b\u003e Run the following command to start the Polybase CLI:\n\n```\nnode userRun.js\n```\n\nOnce initialized, Polybase provides a command-line interface for managing database configurations and connections. It also performs the following configuration file checks in the current working directory:\n\n\u003cb\u003ePolybase-Config.json:\u003c/b\u003e\nIf not found, the CLI creates a template JSON file with placeholders for supported databases.\n\n```\n{\n  \"mongo\": {\n    \"url\": \"url\",\n    \"database\": \"your-database-name\"\n  },\n  \"postgres\": {\n    \"host\": \"localhost\",\n    \"port\": port,\n    \"user\": \"your-username\",\n    \"password\": \"your-password\",\n    \"database\": \"your-database-name\"\n  },\n  \"redis\": {\n    \"host\": \"localhost\",\n    \"port\": port\n  },\n  \"neo4j\": {\n    \"url\": \"url\",\n    \"username\": \"your-username\",\n    \"password\": \"your-password\"\n  },\n  \"influx\": {\n    \"url\": \"url\",\n    \"token\": \"your-token\",\n    \"bucket\": \"your-bucket\",\n    \"org\": \"your-org\"\n  }\n}\n```\n\n\u003cb\u003e.env File:\u003c/b\u003e\nIf not found, the CLI generates a template .env file with key-value placeholders for environment-based configurations to be used in your own Polybase-Config.js file, which you can export via module.exports.\n\n```\n# MongoDB Configuration\nMONGO_URI=\nMONGO_DATABASE=\n\n# PostgreSQL Configuration\nPOSTGRES_USER=\nPOSTGRES_HOST=\nPOSTGRES_DATABASE=\nPOSTGRES_PASSWORD=\nPOSTGRES_PORT=\n\n# Redis Configuration\nREDIS_HOST=\nREDIS_PORT=\nREDIS_USERNAME=\nREDIS_PASSWORD=\n\n# InfluxDB Configuration\nINFLUX_URL=\nINFLUX_TOKEN=\nINFLUX_ORG=\nINFLUX_BUCKET=\n\n# Neo4j Configuration\nNEO4J_URI=\nNEO4J_USERNAME=\nNEO4J_PASSWORD=\n```\n\n```\nmodule.exports = {\n  mongoUri: process.env.MONGO_URI || 'your-default-mongo-uri',\n  postgresUser: process.env.POSTGRES_USER || 'your-default-postgres-user',\n  redisHost: process.env.REDIS_HOST || 'localhost',\n  influxToken: process.env.INFLUX_TOKEN || 'your-default-influx-token',\n  neo4jUri: process.env.NEO4J_URI || 'your-default-neo4j-uri'\n};\n```\n\n\n\u003cb\u003eReady for Commands\u003c/b\u003e\n\nOnce configurations are provided, the CLI is fully operational, allowing users to run commands like status, retry, configs, and more.\n\n\u003cb\u003e• status:\u003c/b\u003e View the connection status of all configured databases.\n\n\u003cb\u003e• retry:\u003c/b\u003e Retry failed database connections.\n\n\u003cb\u003e• clear:\u003c/b\u003e Clears the terminal and resets CLI state.\n\n\u003cb\u003e• configs:\u003c/b\u003e Displays the current database configurations.\n\n\u003cb\u003e• help:\u003c/b\u003e Lists all available commands and potential query executions.\n\n\u003cb\u003eIn this version 1.0.3 launch, the package functions to set up and check database configurations. We are actively working on additional functionality to allow developers to query databases and handle cross-database operations (see 'help' command). More commands coming soon!\u003c/b\u003e\n\n\u003cbr\u003e\n\n\u003cb\u003eSupported Databases\u003c/b\u003e\n\n\u003cb\u003e• MongoDB:\u003c/b\u003e Document-based NoSQL database.\n\n\u003cb\u003e• PostgreSQL:\u003c/b\u003e Relational SQL database.\n\n\u003cb\u003e• Redis:\u003c/b\u003e Key-value store for caching and real-time operations.\n\n\u003cb\u003e• Neo4j:\u003c/b\u003e Graph database for relationship-based data models.\n\n\u003cb\u003e• InfluxDB:\u003c/b\u003e Time-series database for metrics and monitoring.\n\n\u003cbr\u003e\n\n## The Team\n\n\u003cbody\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eAlazar Aklilu\u003c/td\u003e\n    \u003ctd\u003eSoftware Engineer\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://github.com/alazaraklilu\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub-%23181717.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"GitHub Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://www.linkedin.com/in/alazaraklilu/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" alt=\"LinkedIn Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eNathan Patterson\u003c/td\u003e\n    \u003ctd\u003eSoftware Engineer\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://www.linkedin.com/in/nathandevs/r\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub-%23181717.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"GitHub Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://github.com/npatt14\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" alt=\"LinkedIn Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eGavin Shadinger\u003c/td\u003e\n    \u003ctd\u003eSoftware Engineer\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://github.com/MrGamerGuy24\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub-%23181717.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"GitHub Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://www.linkedin.com/in/gavin-shadinger/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\" alt=\"LinkedIn Badge\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/body\u003e\n\n\u003cbr\u003e\n\n## Contributing\n\nWe welcome contributions! To get started:\n\n\u003cb\u003e1. Clone the repository:\u003c/b\u003e\n\n```\ngit clone https://github.com/oslabs-beta/Polybase.git\n```\n\n\u003cb\u003e2. Create a new branch for your work:\u003c/b\u003e\n\n```\ngit checkout -b feature-name\n```\n\n\u003cb\u003e3. Decide where to contribute:\u003c/b\u003e\n\n• Contribute to the Polybase-Package\n\n• Contribute to the Polybase-Platform (Website)\n\n\u003cb\u003e4. Commit your changes:\u003c/b\u003e\n\n```\ngit commit -m 'Add feature'\n```\n\nPush your branch:\n\n```\ngit push origin feature-name\n```\n\n\u003cb\u003e5. Submit a pull request to one of the following branches, depending on your work:\u003c/b\u003e\n\n• main (requires review)\n\n• dev (requires review)\n\n\n\u003cb\u003eNote:\u003c/b\u003e Please do not push or merge any changes into the following branches: \n\n• alazar\n\n• nathan\n\n• gavin\n\n\n\u003cbr\u003e\n\n## Acknowledgments \n\nPolybase was developed with a focus on simplifying multi-database operations and enhancing developer productivity. This project was built through OSLabs, a nonprofit tech accelerator dedicated to advancing open-source software and fostering innovation within the tech community.\n\n\u003cbr\u003e\n\n## License\n\nPolybase is licensed under the MIT License. See LICENSE for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fpolybase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foslabs-beta%2Fpolybase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fpolybase/lists"}