> ## Documentation Index
> Fetch the complete documentation index at: https://docs.helloleo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Publishing Projects

> Deploy your projects for your team or the world

Publish your HelloLeo projects to make them accessible-whether for your team, your clients, or the public.

## The Publish Modal

Click the **"Publish"** button in your project to open the Publish Modal. This is your central hub for all deployment settings.

<video autoPlay muted loop playsInline src="https://storage.googleapis.com/helloleo-feature-videos/publish-project.mp4" />

## Quick Publish

For most projects, publishing is simple:

1. Click **"Publish"** in the top-right corner
2. Review your settings in the Publish Modal
3. Click **"Publish"** or **"Update Published Version"**
4. Your project is live!

## What's in the Publish Modal

### Live URL

* See your current live URL at a glance
* **Copy URL** - One-click copy to clipboard
* **Open** - View your live project in a new tab

### Custom Subdomain

* Default: `your-project-name.helloleo.app`
* Change to any available subdomain
* Example: `myapp.helloleo.app`

### Custom Domain (Pro)

* Connect your own domain
* Example: `app.yourdomain.com`
* Requires DNS configuration
* [Setup guide](/features/custom-domains)

### HelloLeo Watermark (Pro)

* Toggle the "Built with HelloLeo" badge
* Pro users can hide it for a cleaner look

## How Publishing Works

When you publish a project, HelloLeo:

1. **Builds your project** - Installs dependencies and runs the production build
2. **Deploys to our edge network** - Your project is distributed globally via Cloudflare
3. **Assigns your URL** - Available at `your-subdomain.helloleo.app` (or your custom domain)

Published projects are served from Cloudflare's global network, giving your users fast load times worldwide.

## Publishing Private Projects

If your project is set to **Private**:

1. The Publish Modal shows a **lock icon** and "This project is private"
2. Click **"Publish"** to make it public
3. Your project is automatically deployed

<Note>
  Publishing a private project makes it **public**. Anyone with the URL can access it.
</Note>

## Updating Published Projects

Already published? Click **"Update Published Version"** to deploy your latest changes.

<Tip>
  Your published version stays stable while you work. Changes you make with Leo only affect your dev environment until you explicitly click **"Update Published Version"**. Work on new features without affecting production.
</Tip>

The update process:

1. Leo builds your project with the latest code
2. Deploys to the same URL
3. Changes go live in seconds

## Deployment Status

| Status            | Meaning                                   |
| ----------------- | ----------------------------------------- |
| **Not Published** | Project hasn't been deployed yet          |
| **Private**       | Project is hidden, publish to make public |
| **Publishing...** | Deployment in progress                    |
| **Published**     | Live and accessible                       |
| **Error**         | Something went wrong                      |

## Best Practices

<CardGroup cols={2}>
  <Card title="Test First" icon="flask">
    Use the live preview to test before publishing
  </Card>

  <Card title="Meaningful URLs" icon="link">
    Choose a subdomain that reflects your project
  </Card>

  <Card title="Start Private" icon="lock">
    Keep projects private while developing
  </Card>

  <Card title="Update Regularly" icon="refresh">
    Keep your published version up to date
  </Card>
</CardGroup>

## Troubleshooting

### Publish button disabled?

* Leo might still be working - wait for the response to complete
* Check for errors in the code editor

### Deployment fails?

1. Check the error message in the Publish Modal
2. Review your code for syntax errors
3. Try publishing again
4. [Get help on Discord](https://discord.gg/RBJnhMa8p6)

### URL not working?

* Wait a few seconds after publishing
* Clear your browser cache
* Try incognito mode

## Related

<CardGroup cols={2}>
  <Card title="Custom Domains" icon="globe" href="/features/custom-domains">
    Use your own domain
  </Card>

  <Card title="Private Projects" icon="lock" href="/features/private-projects">
    Control project visibility
  </Card>

  <Card title="Live Preview" icon="eye" href="/features/live-preview">
    Test before publishing
  </Card>

  <Card title="Project Settings" icon="settings" href="/features/project-settings">
    Configure your project
  </Card>
</CardGroup>
