Naming conventions
This is the canonical naming policy for new DoWEB repositories and deployments. Existing names remain valid unless they are changed as part of planned work.
Product identifiers
Use the same product identifier in GitHub and Dokploy. Everything must be lowercase, whitespace must be avoided, and words must be separated with hyphens (-) where appropriate.
| Type | Pattern | Example |
|---|---|---|
| Customer products | cus-<customer-slug>-<project-slug> |
cus-acme-crm |
| Internal projects | int-<project-slug> |
int-wordpress |
| External or shared services | ext-<service-slug> |
ext-mailing-service |
For a new product, this identifier is used as the GitHub repository name and the Dokploy Project name. A component within the product has a short, role-based name such as web, api, worker, postgres, or redis.
For example, the product cus-acme-crm may contain Dokploy applications called web, api, and worker. Do not create a second Dokploy project for each component.
Customer slugs
Choose a customer slug that is easy to find and recognise.
- A single-word customer name is normally used directly.
- For a multi-word customer name, combine the words: ATC Footwear becomes
atcfootwear. - Do not use obscure abbreviations: IRS Pierre Fastlane should be
irspierrefastlane, notirspf. - If a name is very long, a recognisable first part is acceptable: IRS Pierre Fastlane may become
irs. - A country suffix may be shortened where that remains intuitive: Jordvarme Danmark may become
jordvarmedk. - Customer slugs must never contain hyphens.
Only <project-slug> and <service-slug> use hyphens, for example email-service and search-engine.
Technical names
| Item | Convention | Example |
|---|---|---|
| GitHub repository | Product identifier | cus-acme-crm |
| Monorepo application directory | Short lowercase kebab-case role | apps/customer-portal |
| Shared package directory | Lowercase kebab-case noun | packages/api-client |
| Dockerfile | Role-specific only when needed | apps/api/Dockerfile |
| Environment variable | Uppercase snake case | DATABASE_URL |
| Branch | <type>/<short-description> |
feat/customer-import |
| Commit | Conventional Commit format | feat(api): add customer import |
Do not encode credentials, server IP addresses, implementation technologies, or dates in names. Environments are handled by Dokploy configuration, not by creating a separate copy of the repository.