Open a project and click Add service. The wizard has five steps:
- Type — leave Detect from my repository selected and wdot works it out from your files, or choose the language or framework yourself (see supported stacks).
- Repository — the Git URL. Public repositories need nothing else. For a private one, connect GitHub from your account, or enter a username and an access token.
- Branch — the branch to deploy. You can turn on auto-deploy here so every push to it deploys. If your app lives in a folder of a larger repository (a monorepo), enter that folder as the root directory, for example
apps/api. - Configuration — the port your app listens on, whether it needs persistent storage, how it is built and starts, an optional before-start command for database migrations, and any environment variables. If your repository has a
.env.example, each variable it lists gets its own field. - Review — check everything, then click Deploy.
The first deploy fetches your code, builds it and starts it. You can follow each step live; when it finishes, the app is reachable at its default address (see domains and HTTPS).
How detection works
After you pick a branch, wdot reads the files in it — package.json, pyproject.toml or requirements.txt, go.mod, pom.xml, composer.json, a Dockerfile — and fills in the type, the runtime version and, for Python, how dependencies are installed. The Configuration step shows what it found and the files that told it; everything stays editable. If you chose a type yourself and the repository looks like something else, you see a warning with a one-click switch, and can carry on with your choice.
When the top of the repository holds no app but folders inside it do, wdot lists those folders so you can pick one as the root directory.