Skip to main content
Projects are the lowest level of Orchard’s organizational hierarchy. Each project gets its own Kubernetes namespace, providing complete isolation from other projects.

What is a Project?

A project is a container that:
  • Holds all your deployments for a specific application or service
  • Has its own isolated Kubernetes namespace
  • Contains services, ingresses, and volumes for its deployments
  • Can be linked to a GitHub repository for automated builds

Project Isolation

Each project runs in its own Kubernetes namespace. The namespace name is automatically generated from your organization, workspace, and project slugs:
{organization-slug}-{workspace-slug}-{project-slug}
For example, if you have:
  • Organization: acme-corp
  • Workspace: production
  • Project: api
The Kubernetes namespace would be: acme-corp-production-api This isolation means:
  • Deployments in one project cannot directly access deployments in another
  • Resources (CPU, memory) are isolated
  • Network policies can be applied per-project
  • Secrets and configuration are scoped to the project

Creating a Project

1

Navigate to your workspace

Open the workspace where you want to create the project.
2

Click 'New Project'

Click the New Project button.
3

Enter project details

  • Name: A descriptive name for your project (e.g., “API”, “Web App”, “Worker”)
  • Slug: Auto-generated URL identifier
  • Description (optional): Describe what this project contains
  • Repository URL (optional): Link to your GitHub repository
4

Create

Click Create to set up your project. Orchard will automatically create the corresponding Kubernetes namespace.

What Projects Contain

A project can contain:

Deployments

Running containers from Docker images or built from source code

Services

Network endpoints for accessing your deployments internally or externally

Ingresses

HTTP(S) routing rules for custom domains

Volumes

Persistent storage for data that survives container restarts

Project Structure Example

Project: API
├── Deployments
│   ├── api-server (main API container)
│   └── worker (background job processor)
├── Services
│   ├── api-server (ClusterIP - internal)
│   └── api-server-external (LoadBalancer - public)
├── Ingresses
│   └── api.example.com → api-server:8080
└── Volumes
    └── data-volume (PVC for persistent data)

Linking a GitHub Repository

You can optionally link a GitHub repository to your project. This enables:
  • One-click deployments from your repository
  • Automatic branch and Dockerfile detection
  • Build history tracking with commit references
To link a repository:
1

Open project settings

Navigate to your project and click Settings.
2

Add repository URL

Enter your GitHub repository URL (e.g., https://github.com/your-org/your-repo).
3

Save

Click Save to link the repository.
For private repositories, you’ll need to configure GitHub access in your user settings.

Project Permissions

Project access is controlled at the workspace level. If you have access to a workspace, you can access all projects within it based on your workspace role:
Workspace RoleProject Permissions
AdminFull access to all projects, including deletion
EditorCan create, modify, and delete deployments in all projects
ViewerRead-only access to all projects

Deleting a Project

Deleting a project permanently removes all deployments, services, ingresses, volumes, and the Kubernetes namespace. This cannot be undone.
To delete a project:
1

Open project settings

Navigate to the project and click Settings.
2

Go to danger zone

Scroll down to the danger zone section.
3

Delete

Click Delete Project and confirm by typing the project name.

Best Practices

For microservices architectures, consider creating one project per service. This provides better isolation and independent deployment cycles.
Name your projects clearly so team members know what they contain (e.g., “user-api” instead of “service1”).

Next Steps