# Deploy from a template or Git URL
URL: https://synquic.tech/docs/guides/deploy-template-or-url.md

Start a project without connecting your own GitHub account, from a one-click app, a framework starter, or any repository URL from GitLab, Bitbucket, Gitea, Forgejo or your own Git server.

Not every project starts from a GitHub repository you connected. The **New Project** page (sidebar
**New Project**) has three ways to start without one:

| You want | Use | Guide |
|---|---|---|
| A ready-made app: a database, a CMS, an analytics or automation tool | The **Apps** tab | [One-click apps](/docs/guides/one-click-apps) |
| Code from any Git host, public or private | The **Git URL** tab | [Deploy from any Git URL](/docs/guides/deploy-from-git-url) |
| A blank starter for a framework | The **Template** tab | [Framework starters](#framework-starters) below |

## Git URL

The **Git URL** tab deploys a repository from **any** Git host, not only GitHub: GitLab, Bitbucket, Gitea,
Forgejo, Codeberg, or your own server, over HTTPS or SSH. Public repositories need nothing; private ones
use an access token or a deploy key that Synq generates for you. In short:

1. Paste the **Repository URL**, for example `https://gitlab.com/acme/shop.git` or
   `git@git.example.com:team/app.git`.
2. Under **Access**, choose **Public**, **Access token** or **Deploy key**.
3. Press **Test access**, pick the **Branch** (and a **Root directory** for a monorepo), and press
   **Continue**.
4. Review the detected build on the deploy screen and press **Deploy**.

The full walkthrough, with token types per provider, SSH host key pinning and error codes, is in
[Deploy from any Git URL](/docs/guides/deploy-from-git-url). To redeploy on every push, add the webhook
Synq gives you in your provider: see [Auto-deploy](/docs/guides/auto-deploy#gitlab-bitbucket-gitea-and-forgejo).

<Callout title="GitHub repositories">
A GitHub URL works in the Git URL tab too. For your own GitHub repositories, the **GitHub** tab is usually
better: it lists your repositories, shows commits, and manages the push webhook. See
[Deploy from GitHub](/docs/guides/deploy-from-github).
</Callout>

## One-click apps

The **Apps** tab (also at `/apps/new`) is the catalog of ready-made apps: more than 150 stacks such as
PostgreSQL, Ghost, n8n, Plausible or Uptime Kuma. Pick one, answer a few questions (name, domain, server),
and press **Install**; Synq generates the passwords and wires the containers together. See
[One-click apps](/docs/guides/one-click-apps) and the full list in the
[Templates catalog](/docs/reference/templates-catalog).

To turn your own stack into a one-click app for your organization, see
[Custom templates](/docs/guides/custom-templates).

## Framework starters

The **Template** tab shows a grid of framework tiles (Next.js, Astro, Express, Django and more). Clicking a
tile opens the deploy screen for that framework's starter repository, `synq/template-<framework>` on
GitHub, so you can deploy a blank app and build on it.

<Callout title="Starter repositories are not published yet" type="warn">
The starter repositories the Template tab points at are not published in this release, so clicking a tile
ends on "Failed to Load Repository". Until they are, start from a one-click app, or paste any public
starter repository (for example your framework's official example) into the **Git URL** tab.
</Callout>

## CLI

For a GitHub repository, a project is "a name plus an owner and repository":

```bash
# For https://github.com/acme/example: owner = acme, repo = example
synq project create --name my-app --git-owner acme --git-repo example

# Ship it
synq deploy --project <project-id> --watch
```

The CLI has no command for Git URL imports yet; use the panel, or the
[API routes](/docs/guides/deploy-from-git-url#api) with `synq api`.

## Troubleshooting

<Callout title="“Enter an https:// or SSH Git URL”" type="warn">
The Git URL tab could not read what you pasted. Use an `https://` URL or an SSH URL (`git@host:path` or
`ssh://git@host/path`). `http://`, `git://` and URLs with a password in them are refused on purpose.
</Callout>

<Callout title="The import worked but the build failed" type="error">
Open the build screen and read the last few red lines; that is the real reason. Common causes are a
missing build command, a missing environment variable, or the app listening on the wrong port. See
[Troubleshooting → Deployments](/docs/troubleshooting/deployments).
</Callout>

## Related guides

<Cards>
  <Card title="Deploy from any Git URL" href="/docs/guides/deploy-from-git-url" description="GitLab, Bitbucket, Gitea, Forgejo or your own server, with tokens or deploy keys." />
  <Card title="One-click apps" href="/docs/guides/one-click-apps" description="Install a ready-made app from the catalog." />
  <Card title="Deploy from GitHub" href="/docs/guides/deploy-from-github" description="Connect your account to deploy your own repositories and redeploy on every push." />
</Cards>
