Create a project

Create a project

In this step, we will create a Cube Core project on your computer, connect a data source, and generate data models.

Scaffold a project

Start by opening your terminal to create a new folder for the project, then create a docker-compose.yml file within it:

mkdir my-first-cube-project
cd my-first-cube-project
touch docker-compose.yml

Open the docker-compose.yml file and add the following content:

version: "2.2"
    image: cubejs/cube:latest
      - 4000:4000
      - 15432:15432
      - CUBEJS_DEV_MODE=true
      - .:/cube/conf

Note that we're setting the CUBEJS_DEV_MODE environment variable to true to enable the Development Mode. This is handy for local development but not suitable for production.

If you're using Linux as the Docker host OS, you'll also need to add network_mode: 'host' to your docker-compose.yml.

Start the development server

From the newly-created project directory, run the following command to start Cube:

docker compose up -d

Using Windows? Remember to use PowerShell (opens in a new tab) or WSL2 (opens in a new tab) to run the command below.

Connect a data source

Head to http://localhost:4000 (opens in a new tab) to open the Developer Playground.

The Playground has a database connection wizard that loads when Cube is first started up and no .env file is found. After database credentials have been set up, an .env file will automatically be created and populated with credentials.

Want to use a sample database instead? Select PostgreSQL and use the credentials below:


After selecting the data source, enter valid credentials for it and click Apply. Check the Connecting to Databases page for more details on specific data sources.

You should see tables available to you from the configured database; select the orders table. After selecting the table, click Generate Data Model and pick either YAML (recommended) or JavaScript format:

Finally, click Build in the dialog, which should take you to the Build page.

You're now ready for the next step, querying the data.