Projects and deployments
Create a project from a managed source repository or a trusted one-click application. Configure its source or template, deploy it, and inspect each release from the project page.
Start with the app checklist. See the stack guides in Build for folder layouts and examples. For a local database, read Persistent SQLite.
Create a project
Open Projects and select New project. Choose Source repository for code you own, or One-click application… for an app in the catalogue. Enter a project name and optional domain. One-click applications create their required services and connection values; save any generated credentials when they appear.
Source repository
Enter the HTTPS Git URL. Set Branch when it is not main. Leave Managed runtime on Detect from repository when the repository has one clear stack; otherwise select PHP 8.4, Node.js 24, Python 3.13, Bun 1.4, or Static HTML and complete the fields shown.
Commit composer.lock for PHP; one supported lockfile for Node.js or Bun; and a pinned requirements file or supported lockfile for Python. For Static HTML, commit index.html at the repository root, public/, or dist/. Choose Static HTML explicitly if the repository also has a package manifest. Static HTML serves committed files and does not run a package build.
Private repositories
The token field is labeled Access token — leave blank for public repos. For GitHub, prefer a fine-grained personal access token limited to the selected repository with read-only Contents access.
For a GitHub fine-grained token, choose the account or organization that owns the repository, select that repository, and grant Contents: Read-only. A classic GitHub token with repo scope may be needed for a repository owned by another personal account. GitLab needs read_repository. Bitbucket needs Repositories: Read.
Stack settings and environment
Open the project and choose edit. Confirm the branch and stack options, then manage Environment variables. Keep credentials and API keys secret. Add service connection values there if they were not injected during service creation. Changes take effect on the next deployment.
Use the domain and plan-supported memory or CPU controls shown by the form. Leave advanced limits at their defaults unless your app has a measured need.
Release actions
- Deploy builds and releases the selected branch.
- Rebuild forces a fresh managed build and requires privileged confirmation. Use Deploy for a normal release after a source or settings change.
- Stop takes the app offline without deleting it.
- Restart restarts the current release.
- Deployment history shows past releases and their outcome.
Rollback
For Node.js, Python, Bun, and Static HTML, rollback starts a prior immutable release instead of rebuilding current source. PHP rollback is unavailable; deploy a new PHP revision instead. Rollback requires privileged confirmation.
Failed deployments
Open the failed release and read the deployment output from the first failed phase. Common causes are an unreadable branch, wrong lockfile, under-scoped token, missing stack field, failed install, or an app that does not become healthy.
Fix source or settings, then select Deploy. Use Rebuild only when a fresh managed build is needed. If it fails again, contact support with the project name, deployment time, commit, phase, and sanitized log lines.
Delete a project
Open the project’s destructive action, confirm the exact project, and complete privileged confirmation. Associated containers are removed, while named data volumes are preserved; arrange any later volume cleanup separately.
What success looks like
Troubleshooting
If the app runs but cannot be reached, continue with Domains and TLS. If a dependency fails, confirm that the supported repository and token rules cover it.