Projects

What’s a Project?

When building apps for Space, the first thing you start with is a Project. A Project is where you build, test, and release apps it to the public. Projects in Space live inside Builder, a system application in every developer’s Space for building and managing other Space apps.

Creating a Project

đź’ˇ For a beginners A-Z guide checkout our New Apps page.

You can create new a new Project using the Space CLI. To create a new Builder Project with the Space CLI, open a new terminal, navigate into a new directory (or the directory of app you want to push to Space) and run the space new  command:

Terminal window
space new

Enter a name for your Project when prompted. The Space CLI should try to detect code in your local directory, written in any language or framework compatible with the Space Runtime via Deta Micros.

Deta Micros are lightweight serverless compute units inside your app which can be exposed to the world over HTTP.

If found, you can see a bootstrapped configuration generated by the CLI. Here’s an example config for a simple Python app:

Terminal window
Micro found in "./src"
L engine: python3.9
? Do you want to setup "fast-api-starter" with this configuration? (Y/n)

Confirm the generated configuration, if it’s correct for your application. The CLI should create a new Project in Builder and generate a Spacefile in your local directory.

This Spacefile contains the configuration of your app, used by Deta Space to understand what your app looks like and how to run it. If the bootstrapped configuration failed, you can create your own configuration and add individual Micros using the Spacefile.

Additionally, the CLI should create a hidden .space directory locally — this contains information about your Project, linking your local directory to Builder. This directory should not be included in your version control and was automatically added to your .gitignore.

Builder doesn’t keep track of your source code, we recommend you use Git as a version control system.

Managing Projects in Builder

builder-headline

Now that you’ve created or linked a project, you can view and manage it inside the Builder app, which can be found on your Horizon in Space.

Builder will list all your projects, and you can click on any of them to enter their management view.

projects-builder

Individal Projects

Each Project in Builder consists of 3 main pages: Overview, Develop, and Publish.

Overview

Where you see important information about your Project, like its latest Release and recent events.

projects-overview

Develop

Where you to manage your project’s development. The Develop tab has three sub-tabs: Overview, Data, and Configuration.

The Overview sub-tab is where you can access your Builder Instance, and see it’s Logs.

projects-develop-overview

The Data sub-tab is where you access your Project’s data, which you can view, edit and manage via the Data GUIs, and Data Keys.

projects-develop-data

The Configuration sub-tab is where you can manage your Builder Instance’s configuration — both environment variables and Custom Domains.

projects-develop-config

You can define environment variables for your app using the Spacefile.

Publish

The Publish tab is where you create and manage Releases of your app.

projects-release

Project Linking

Your local development environment is connected to Builder via the hidden .space directory, which contains a unique identifier: a Project ID. When you run space new, the Space CLI will automatically connect the local directory via this Project ID with a newly created Project in Builder.

You can also connect any local directory to any existing Builder Project via this Project ID and the space link CLI command. To do so, navigate to the directory you want to link and enter the command:

Terminal window
space link

space link prompts you to enter a Project ID. Entering it links the directory with your Project in Builder via the local .space sub-directory. You can get your Project ID by opening the Builder application, clicking your project, and then using the Copy Project ID action in Teletype.