Quickstart

In this quickstart tutorial, you'll create an Inventory Management System app using one of our templates. Follow the steps below to get started.

Prerequisite

You'll need a Tailor account to start using the Tailor Platform. Contact us here to get started.

Install Tailor CLI

tailorctl is a command-line utility that enables you to interact with the Tailor Platform, from creating your workspace to deploying applications. To install tailorctl, run the following command.

<span><span style="color: var(--shiki-token-function)">brew</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">install</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">tailor-platform/tap/tailorctl</span></span>
<span></span>

Visit the Tailorctl release page.
Download the latest version of tailorctl for the Windows operating system.

Install Terraform

Terraform is an infrastructure-as-code tool designed to help you create, modify, and manage infrastructure securely and effectively.

<span><span style="color: var(--shiki-token-function)">brew</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">install</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">hashicorp/tap/terraform</span></span>
<span></span>

Visit the Install Terraform page.
Download the latest version of Terraform for the Windows operating system that matches your CPU architecture.

Install Tailor CLI

CUE is a powerful configuration language that allows you to evaluate and validate your application's configuration.

<span><span style="color: var(--shiki-token-function)">brew</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">install</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">tailor-platform/tap/tailorctl</span></span>
<span></span>

Visit the Tailorctl release page.
Download the latest version of tailorctl for the Windows operating system.

Install Cue

CUE is a powerful configuration language that allows you to evaluate and validate your application's configuration.

<span><span style="color: var(--shiki-token-function)">brew</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">install</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">cue-lang/tap/cue</span></span>
<span></span>

Visit the Cue release page.
Download the latest version of Cue for the Windows operating system that matches your CPU architecture.

1. Log in to the Tailor Platform with SSO.

Run the following command to log in to the Tailor Platform using your account information:

<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">auth</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">login</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> auth login</span></span>
<span></span>

Once you run this command, your browser will open and you'll be prompted to log in to the Tailor Platform with your SSO account. Please sign in with your email address and password. Your initial password has been sent to you upon account creation. If you haven't received it, please check your spam folder or contact us for assistance.

2. Clone our app templates

Tailor provides a template of the application. Clone the templates repo.

<span><span style="color: var(--shiki-token-function)">git</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">clone</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">git@github.com:tailor-platform/templates.git</span></span>
<span><span style="color: var(--shiki-token-function)">cd</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">templates/ims-tf</span></span>
<span></span>

If you don't have Git, please visit official Git website. Click on "Download" and select the Windows version.

<span><span style="color: var(--shiki-color-text)">git clone https:</span><span style="color: var(--shiki-token-keyword)">//</span><span style="color: var(--shiki-token-function)">github.com</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">tailor</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">platform</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">templates.git</span></span>
<span><span style="color: var(--shiki-color-text)">cd templates</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">ims</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">tf</span></span>
<span></span>

Tailor provides a template of the application. Clone the templates repo and navigate to the application directory.

<span><span style="color: var(--shiki-token-function)">git</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">clone</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">git@github.com:tailor-platform/templates.git</span></span>
<span><span style="color: var(--shiki-token-function)">cd</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">templates/ims</span></span>
<span></span>

If you don't have Git, please visit official Git website. Click on "Download" and select the Windows version.

<span><span style="color: var(--shiki-color-text)">git clone https:</span><span style="color: var(--shiki-token-keyword)">//</span><span style="color: var(--shiki-token-function)">github.com</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">tailor</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">platform</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">templates.git</span></span>
<span><span style="color: var(--shiki-color-text)">cd templates</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">ims</span></span>
<span></span>

3. Set up app configuration

Update region

Navigate to the workspace.tf file and update the region attribute to match the region suitable for your location. Currently, we support two regions: us-west and asia-northeast.

resource "tailor_workspace" "ims" {
  name   = "ims"
  region = "us-west" # Replace "us-west" with your preferred region
}

output "workspace" {
  value = tailor_workspace.ims.id
}

Initialize app configuration

Run the following command to prepare your Terraform working directory by configuring the backend and installing providers.

<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">init</span></span>
<span></span>
<span><span style="color: var(--shiki-color-text)">terraform init</span></span>
<span></span>

Create a workspace in Tailor Platform

To build your app with Tailor Platform, start by creating a workspace on the platform.

<span><span style="color: var(--shiki-token-comment)"># Replace `${your_workspace_name}` with the desired values.</span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">create</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--name</span><span style="color: var(--shiki-color-text)"> ${your_workspace_name} </span><span style="color: var(--shiki-token-string)">--region</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">us-west</span></span>
<span></span>
<span><span style="color: var(--shiki-token-comment)"># Replace ${your_workspace_name} with the desired values.</span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> workspace create </span><span style="color: var(--shiki-token-keyword)">--</span><span style="color: var(--shiki-color-text)">name ${your_workspace_name} </span><span style="color: var(--shiki-token-keyword)">--</span><span style="color: var(--shiki-color-text)">region us</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">west</span></span>
<span></span>

Generate app configuration

To generate configuration files, let's first synchronize the local cue.mod files with tailorctl. Then, generate a UUID and inject it into environment/env.cue. This UUID will be used to seed data into the application.

<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">manifest</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">tidy</span></span>
<span><span style="color: var(--shiki-token-function)">sed</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-i</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;&quot;</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;s/{{UUID}}/$(</span><span style="color: var(--shiki-token-function)">uuidgen</span><span style="color: var(--shiki-token-string-expression)">)/g&quot;</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">environment/env.cue</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> manifest tidy</span></span>
<span><span style="color: var(--shiki-color-text)">(</span><span style="color: var(--shiki-token-function)">Get-Content</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">Path </span><span style="color: var(--shiki-token-string-expression)">&quot;environment\env.cue&quot;</span><span style="color: var(--shiki-color-text)">) </span><span style="color: var(--shiki-token-keyword)">-replace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;\{\{UUID\}\}&quot;</span><span style="color: var(--shiki-token-keyword)">,</span><span style="color: var(--shiki-color-text)"> [</span><span style="color: var(--shiki-token-keyword)">guid</span><span style="color: var(--shiki-color-text)">]::NewGuid().ToString() </span><span style="color: var(--shiki-token-keyword)">|</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-function)">Set-Content</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">Path </span><span style="color: var(--shiki-token-string-expression)">&quot;environment\env.cue&quot;</span></span>
<span></span>

4. Deploy the app

Apply the configuration to create a workspace and deploy the app.

<span><span style="color: var(--shiki-token-function)">terraform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">apply</span><span style="color: var(--shiki-color-text)"> </span></span>
<span></span>
<span><span style="color: var(--shiki-color-text)">terraform apply </span></span>
<span></span>

The workspace.cue file contains application configurations. You can apply them to complete the setup.

<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">apply</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-m</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">./workspace.cue</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> workspace apply </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">m .</span><span style="color: var(--shiki-token-keyword)">/</span><span style="color: var(--shiki-color-text)">workspace.cue</span></span>
<span></span>

5. Confirm the deployed app

Use the following command to interactively configure the workspace, and select the one created for the application to open it.

<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">config</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">set</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-i</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> config set </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">i</span></span>
<span></span>

Open the GraphQL Playground for the application using the following command. The GraphQL Playground allows you to run GraphQL queries to Tailor Platform services.

<span><span style="color: var(--shiki-token-comment)"># The `-n` flag specifies the application name. In this quickstart, the default name is `ims`.</span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">app</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">open</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-n</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">ims</span></span>
<span></span>
<span><span style="color: var(--shiki-token-comment)"># The `-n` flag specifies the application name. In this quickstart, the default name is `ims`.</span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> workspace app open </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">n ims</span></span>
<span></span>

6. Get the access token to use the GraphQL API in the playground

To get an access token to use the GraphQL API in the playground, run the following command.

<span><span style="color: var(--shiki-token-function)">tailorctl</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">workspace</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">machineuser</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">token</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-a</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">ims</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">-m</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">admin-machine-user</span></span>
<span></span>
<span><span style="color: var(--shiki-token-function)">tailorctl.exe</span><span style="color: var(--shiki-color-text)"> workspace machineuser token </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">a ims </span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">m admin</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">machine</span><span style="color: var(--shiki-token-keyword)">-</span><span style="color: var(--shiki-color-text)">user</span></span>
<span></span>

In this case, we use the admin-machine-user machine user which is predefined in this template to get the access token. Once you get an access token, you can use it in the playground to run queries.
Please set the token in the Headers section of the playground as follows:

<span><span style="color: var(--shiki-color-text)">{</span></span>
<span><span style="color: var(--shiki-color-text)">  </span><span style="color: var(--shiki-token-keyword)">&quot;Authorization&quot;</span><span style="color: var(--shiki-token-punctuation)">:</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;bearer ${your_access_token}&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">}</span></span>
<span></span>

For apps created using CUE: Please refer to the README for detailed information about this template and instructions on seeding initial data for your application.

Further information

Congratulations on creating your first app in the Tailor Platform! Here are some next steps to help you continue learning: