Skip to content

Projects ​

A project is a folder on your computer. It can use any stack, for example Laravel, WordPress, .NET, Node.js, Go, Python, Rust or Ruby. All projects show in one list, and all projects use the same tools.

Some features need DDEV, for example the start and stop controls, the status dot, the Logs tab and the Database card. These features show only for projects that run in DDEV. See DDEV Projects.

A project can also be one part of a monorepo. For example, a DDEV web project can have a Flutter mobile app in a different folder. You can add that folder as a different project.

Create a project ​

  1. Click New Project in the top bar.
  2. In step 1, What are you building?, select a stack and fill in Description, Name and Folder.
  3. Click Next. In step 2, How do you run it?, select a run method. Each stack shows only the methods that apply to it.
  4. Click Create Project.

Stacks, templates and run methods show their logos. For a stack with templates, select one template. Other PHP has a list of project types.

StackTemplateRun methods
LaravelDDEV, Laravel Sail, Docker Compose, Local PHP, Other
Symfony, WordPress, Drupal, Other PHPDrupal: Drupal 11, Drupal 10. Other PHP: a DDEV project typeDDEV, Docker Compose, Local PHP, Other
Node.jsReact, Vue, Svelte, Vanilla, Next.js, NuxtPackage manager, Docker Compose, Other
.NETWeb API, MVC, Blazor, Console, Class library.NET CLI, Docker Compose, Other
PythonPython, Other
GoGo, Other
RustBinary, LibraryCargo, Other
Clone a repository, Empty folderDDEV, Docker Compose, Other

Run methods ​

Each run method has setup commands and a run command. Step 2 shows them before you create the project. The setup commands run in the project folder.

Run methodSetup commandsRun command
DDEVDDEV configuration and the install commands of the stack. See DDEV Projects.Use the start and stop controls of the project
Laravel Sailcomposer create-project laravel/laravel ., composer require laravel/sail --dev, php artisan sail:install --no-interaction./vendor/bin/sail up
Docker ComposeThe commands of the stack templatedocker compose up
Local PHPThe commands of the stack templateLaravel: php artisan serve. Other PHP stacks: php -S localhost:8000 with the web root of the stack
Package manager<manager> create <template> and <manager> install<manager> run dev
.NET CLIdotnet new <template>dotnet watch. Console: dotnet run. Class library: dotnet build
Pythonpython3 -m venv .venv.venv/bin/python main.py
Gogo mod init <name>go run .
Cargocargo initcargo run
OtherThe commands of the stack templateThe command that you type

The stack template commands are: composer create-project (Laravel, Symfony, Drupal), wp core download (WordPress), and git clone (Clone a repository). Other PHP and Empty folder have no commands.

Local PHP uses the PHP on your computer, for example from Laravel Herd.

For Node.js, select the Package manager in step 2: npm, pnpm, Yarn or Bun. Step 2 shows only the package managers that are installed.

The run command shows as read-only text. To change it, click the edit icon. For Docker Compose, Python and Other, the command field is open when you select the method. For Other, you can leave it empty. For Docker Compose, add a compose.yaml to the project folder if the project does not have one.

The app saves the run method and the run command with the project. The Run card on the Overview tab shows the run command first.

Tool check ​

The app checks that the tools of the run method are installed, for example ddev, docker, php, composer, npm or dotnet. Each run method shows the installed version of its main tool. The app gets the version from the tool, for example dotnet --list-sdks or docker --version. If a tool is missing, step 2 shows a notice with an install link and Check again, and Create Project is disabled.

The setup commands need an empty or new folder. Empty folder and Python can use a folder that has files.

The app adds the project to the project list with its stack, then runs the commands. One notification shows the progress. If a command fails, the notification has Show output and Open folder.

Add a project ​

Drop the folder anywhere in the app window, or click Import in the top bar. See Import Projects.

All projects show in one list on the Projects page, sorted by name. Each project has one type badge, for example Laravel, WordPress, .NET, Node.js or Go. A DDEV project shows a status dot with its running or stopped status. Other projects show a hollow status dot.

Stack detection ​

The app finds the stack from the files in the project folder. If no file matches, it also looks in the direct subfolders (one level only), for example src/Shop.Api.csproj or backend/go.mod.

StackFiles
.NET*.sln, *.slnx, *.csproj, *.fsproj, *.vbproj, global.json
Laravelartisan
Symfonysymfony.lock
WordPresswp-config.php
PHPcomposer.json
RubyGemfile
Pythonpyproject.toml, requirements.txt, Pipfile, manage.py
Gogo.mod
RustCargo.toml
Node.jspackage.json

The app saves the stack when you add the project. The type badge shows the stack. For a project that you added before this feature, the app finds the stack when it loads the projects. If the app cannot find the stack, it tries again later.

Projects sidebar ​

The Projects page has a list of projects at the left. To collapse or expand it, click the panel icon or press ⌘+B (Ctrl+B on Windows and Linux). When the list is collapsed, each project shows a short monogram. Each monogram is unique.

Hover a project to see its details, for example the type, the versions, the URL, the Git state and the path.

Available tabs ​

A project that does not run in DDEV has these tabs. To go to a tab, press ⌘ (Ctrl on Windows and Linux) and the tab number.

TabDetails
OverviewName, Type, Runs with, Path, GitHub repository, the Remote server card, the Security card, the Services card (Compose projects) and the Run card
TerminalTerminal
Remote SSHRemote SSH
FilesFiles
GitSub-tabs Changes and History (Git Changes), Issues and Actions (GitHub)
ScratchpadNotes and snippets. The code runner is available in DDEV projects.
HealthSub-tabs Security (Dependency Security) and Uptime (Uptime Monitoring)

If the app cannot find the stack, Type on the Overview tab tells you so.

Recipes at the right end of the tab bar opens the Recipes panel. It shows only the recipes that apply to the project.

The Logs tab and the Database card are for DDEV projects, which also get a DDEV Services card. See DDEV Projects. Docker Compose and Sail projects get their own Services card.

To open the project in your editor, click IDE at the top of the project page. Set the editor command in Configuration.

Run commands ​

The Run card on the Overview tab shows the run command that you selected when you created the project, with a Run button. Below it, the card shows the commands that the project defines. Click a command to run it in the project folder, in a headless terminal. Hover a command to see the full command line.

SourceCommands
.NET solution (*.sln, *.slnx in the project folder)dotnet build <solution>, and dotnet test <solution> when the solution has a test project
.NET project that runs (web, worker, console, Aspire host)dotnet run --project <path> and dotnet watch --project <path>. With a solution, the card uses the projects in the solution. Without a solution, the card also shows dotnet test and dotnet build for each project.
package.json<manager> run <script> for each script. The manager comes from the packageManager field, or else from the lockfile: bun.lock/bun.lockb (bun), pnpm-lock.yaml (pnpm), yarn.lock (yarn), package-lock.json (npm). Install hooks and pre/post hooks of other scripts do not show.
composer.jsoncomposer run <script> for each script. Event hooks such as post-autoload-dump do not show.
Makefilemake <target> for each top-level target. Special targets (.PHONY) and pattern rules (%.o) do not show. A ## comment after the target becomes its description.
go.modgo run . (when main.go is in the project folder), go run ./cmd/<name> for each cmd/<name>/main.go, go test ./..., go build ./...
Cargo.tomlcargo run (when src/main.rs or a [[bin]] exists), cargo test, cargo build

When the project has more than one source, tabs at the top of the card select the source.

The app reads the files only when the card opens. It looks for .NET projects in the subfolders of the project and skips folders such as node_modules, bin, obj, vendor and hidden folders. It keeps the result and reads a file again only when its modification time changes.

Edit project details ​

On the Overview tab, hover a value and click the edit icon. You can change the name and the GitHub repository URL. The Git tab finds the GitHub repository from the Git remote. Set a GitHub URL to use a different repository.

When you rename the project, it stays open with the new name, on the same tab. The terminal sessions of the old name close. The Scratchpad notes move to the new name.

Remove a project ​

  1. Go to the Projects page.
  2. Click the delete icon on the project card.

This removes the project from DevWorkspace Pro only. Your files stay on disk. The app closes the terminal sessions of the project and deletes its Scratchpad notes.

DevWorkspace Pro - One workspace for every project