# How to Create Projects Projects let you organize your DigitalOcean resources into groups that fit the way you work. Create projects that align with the applications, environments, and clients that you host on DigitalOcean. All of the DigitalOcean resources in your account start in a single default project. You can create additional projects and move resources between them to organize your resources in ways that align with how you use them. ## Create a Project Using the Control Panel In the control panel’s main menu, under the **Projects** section, click **+ New Project** to open the project creation page. ![Create new project page showing form fields for project name, description, and purpose.](https://docs.digitalocean.com/screenshots/projects/create-new-project.dc129ca95635275d1432f64f36359330e2f01ace3561963a9fb5ac10642fcb47.png) On the **Create new project** page, enter the name, description, and purpose of the project. You can change any project setting later by returning to the **Settings** tab. - **Name your project** (required). The project name is meant to be human-readable, so you can include spaces and special characters. - **Add a description** (optional). The project’s description appears at the top of all of all project pages, beneath the project’s name. The description can be up to 255 characters long (including spaces). The first 97 characters are displayed on the page heading. - **Tell us what it’s for?** (required). This field lets us show relevant tips and tutorials for your use case. There are several common purposes in the list, but you can choose **Other** to describe it yourself. The purpose can be up to 199 characters long. If you enter a longer description, you receive an error when you click **Create Project**. When you’re done, click **Create Project** to go to the **Move Resources** page. Here, you can optionally move existing resources into the new project. ![Move resources page showing a project listing available resources and domains to move.](https://docs.digitalocean.com/screenshots/projects/move-resources.96774e284cd2a35949e530543b5135c7e383ff10f38e4cfb8b667c6810dd6123.png) When you click into the text area, a list of all movable resources from other projects appears. You can keep typing to filter the list. Click the names of the resources you want to move, then click the **Move Resources** button. If you choose **Skip for now**, you can [move resources in later](https://docs.digitalocean.com/products/projects/how-to/move-resources/index.html.md). Either choice finalizes the creation of your project and redirects you to the **Resources** tab of the new project. ![Project overview page showing one resource with its region, size, IP address, and options to add tags or move resources.](https://docs.digitalocean.com/screenshots/projects/overview.26bf5ae157bb394627fa3c573e21124f75add068f0fa8f600337a743f6a12d3f.png) Resources you add appear on the **Resources** tab, grouped by type. ## Create a Project Using Automation ## How to Create a Project Using the DigitalOcean CLI 1. [Install `doctl`](https://docs.digitalocean.com/reference/doctl/how-to/install/index.html.md), the official DigitalOcean CLI. 2. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with `doctl`. 3. Use the token to grant `doctl` access to your DigitalOcean account. ```shell doctl auth init ``` 4. Finally, run `doctl projects create`. Basic usage looks like this, but you can [read the usage docs](https://docs.digitalocean.com/reference/doctl/reference/projects/create/index.html.md) for more details: ```shell doctl projects create [flags] ``` The following example creates a project named `Example Project` with the purpose “Frontend development”: ```shell doctl projects create --name "Example Project" --purpose "Frontend development" ``` ## How to Create a Project Using the DigitalOcean API 1. [Create a personal access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) and save it for use with the API. 2. Send a POST request to [`https://api.digitalocean.com/v2/projects`](https://docs.digitalocean.com/reference/api/digitalocean//index.html.md#operation/projects_create). ### cURL Using cURL: ```shell curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ -d '{"name":"my-web-api", "description": "My website API", "purpose": "Service or API", "environment": "Production"}' \ "https://api.digitalocean.com/v2/projects" ``` ### Go Using [Godo](https://github.com/digitalocean/godo), the official DigitalOcean API client for Go: ```go import ( "context" "os" "github.com/digitalocean/godo" ) func main() { token := os.Getenv("DIGITALOCEAN_TOKEN") client := godo.NewFromToken(token) ctx := context.TODO() createReq := &godo.CreateProjectRequest{ Name: "my-web-api", Description: "My website API", Purpose: "Service or API", Environment: "Production", } client.Projects.Create(ctx, createReq) } ``` ### Ruby Using [DropletKit](https://github.com/digitalocean/droplet_kit), the official DigitalOcean API client for Ruby: ```ruby require 'droplet_kit' token = ENV['DIGITALOCEAN_TOKEN'] client = DropletKit::Client.new(access_token: token) project = DropletKit::Project.new( name: 'my-api', description: 'My website API', purpose: 'Service or API', environment: 'Production' ) client.projects.create(project) ``` ### Python Using [PyDo](https://github.com/digitalocean/pydo), the official DigitalOcean API client for Python: ```python import os from pydo import Client client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN")) req = { "name": "my-web-api", "description": "My website API", "purpose": "Service or API", "environment": "Production" } resp = client.projects.create(body=req) ```