SamuelGHill / cube.js

πŸ“Š Cube.js β€” Open-Source Analytical API Platform

Home Page:https://cube.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cube.js

Website β€’ Getting Started β€’ Docs β€’ Examples β€’ Blog β€’ Slack β€’ Discourse β€’ Twitter

npm version GitHub Actions FOSSA Status

Cube.js is an open-source analytical API platform. It is primarily used to build internal business intelligence tools or add customer-facing analytics to existing applications.

Cube.js was designed to work with serverless data warehouses and query engines like Google BigQuery and AWS Athena. A multi-stage querying approach makes it suitable for handling trillions of data points. Most modern RDBMS work with Cube.js as well and can be further tuned for performance.

For more details, see the Cube.js introduction page in our documentation.

Why Cube.js?

If you are building your own business intelligence tool or customer-facing analytics most probably you'll face the following problems:

  1. Performance. Most of effort time in modern analytics software development is spent to provide adequate time to insight. In the world where every company data is a big data writing just SQL query to get insight isn't enough anymore.
  2. SQL code organization. Modelling even a dozen of metrics with a dozen of dimensions using pure SQL queries sooner or later becomes a maintenance nightmare which ends up in building modelling framework.
  3. Infrastructure. Key components every production-ready analytics solution requires: analytic SQL generation, query results caching and execution orchestration, data pre-aggregation, security, API for query results fetch, and visualization.

Cube.js has necessary infrastructure for every analytic application that heavily relies on its caching and pre-aggregation layer to provide several minutes raw data to insight delay and sub second API response times on a trillion of data points scale.

Getting Started πŸš€

There're two ways to create a Cube.js application.

If you have Node.js installed, run this command and follow with the Getting Started guide.

$ npx cubejs-cli create hello-world

In case you don't have Node.js, or you'd like to run Cube.js with Docker, have a look at the Getting started with Docker guide.

Resources

Community

If you have any questions or need help - please join our Slack community of amazing developers and contributors.

You are also welcome to join our monthly community calls where we discuss community news, Cube Dev team's plans, backlogs, use cases, etc. If you miss the call, the recordings will also be available after the meeting.

Contributing

There are many ways you can contribute and help Cube.js. Here a few ones:

  • Star this repo and follow us on Twitter.
  • Add Cube.js to your stack on Stackshare.
  • Upvote issues with πŸ‘ reaction so we know what's the demand for particular issue to prioritize it within road map.
  • Create issues every time you feel something is missing or goes wrong.
  • Ask questions on Stack Overflow with cube.js tag if others can have these questions as well.
  • Provide pull requests for all open issues and especially for those with help wanted and good first issue labels as those are out of Cube.js Core Team roadmap scope.

All sort of contributions are welcome and extremely helpful πŸ™Œ Please refer to the contribution guide for more information.

License

Cube.js Client is MIT licensed.

Cube.js Backend is Apache 2.0 licensed.

FOSSA Status

About

πŸ“Š Cube.js β€” Open-Source Analytical API Platform

https://cube.dev

License:Other


Languages

Language:TypeScript 38.4%Language:Rust 35.3%Language:JavaScript 24.9%Language:Dockerfile 0.7%Language:Shell 0.2%Language:HTML 0.2%Language:Handlebars 0.2%Language:CSS 0.1%Language:ANTLR 0.0%Language:Less 0.0%