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.
If you are building your own business intelligence tool or customer-facing analytics most probably you'll face the following problems:
- 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.
- 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.
- 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.
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.
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.
- When: Second Wednesday of each month at 9am Pacific Time.
- Meeting link: https://us02web.zoom.us/j/86717042169?pwd=VlBEd2VVK01DNDVVbU1EUXd5ajhsdz09
- Meeting agenda/notes.
- Recordings will be posted on the Community Playlist.
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
Cube.js Client is MIT licensed.
Cube.js Backend is Apache 2.0 licensed.