# Deploying to Production

> Take Seedly Communities live on your own Convex and Vercel accounts, connect the two halves, promote environments safely, and run the go-live checklist.

Going live is the same shape as the [local run](/docs/help/install), moved onto real infrastructure that you own. The backend deploys to Convex Cloud and the web app deploys to Vercel. Both accounts are yours, both bills are yours, and your data never sits on a Seedly server. That is what "deployed on infrastructure you control" means for this product.

Deploy the backend first, then the web app, then connect them. Work through the go-live checklist at the end before you invite a single real member.

---

## What "Infrastructure You Control" Means

You are not renting a seat on a hosted community product. You own the source, and you run it on two accounts you create and pay for directly.

- **The backend runs on Convex Cloud, in your own Convex account.** It stores every module's data and drives the real-time updates.
- **The web app runs on Vercel, in your own Vercel account.** It serves the branded interface to your members.

Because both accounts are yours, you set the plan, you hold the keys, and you decide when anything changes. Seedly ships the code once and takes no ongoing cut.

---

## Environments

Keep at least two environments so you never test on the same backend your members use.

- **Development.** The personal Convex development deployment from your [local run](/docs/help/install). Safe to seed and break.
- **Production.** A separate Convex production deployment plus your live Vercel deployment. Real members, real payments, real email. Treat it carefully.

A staging environment (a third deployment that mirrors production) is worth adding once you have members, so you can rehearse updates before they reach anyone.

---

## Step 1 - Deploy the Backend to Convex Cloud

From the project folder, push the backend to a production Convex deployment.

```
npx convex deploy
```

This creates or updates your production backend on Convex Cloud and prints its production URL. That URL is what the live web app talks to, so keep it handy for the next step.

Your backend also needs its own configuration values set on the production deployment, not just in your local file. Set each backend secret and setting on the Convex production deployment with the environment command.

```
npx convex env set --prod NAME value
```

Use the names on the [Environment and Configuration](/docs/help/configuration) page. Production values are separate from the values you use locally, so a mistake in development can never leak into production.

---

## Step 2 - Deploy the Web App to Vercel

Connect your project to Vercel, either by importing the Git repository in the Vercel dashboard or with the Vercel command line tool.

```
npx vercel
```

During setup, Vercel asks for the project's environment values. Add every web-app setting from the [Environment and Configuration](/docs/help/configuration) page to the Vercel project, including the production backend URL from Step 1. Set them on the Production environment (Vercel also has Preview and Development scopes, which are handy for a staging build).

When the values are in place, ship the production build.

```
npx vercel --prod
```

Vercel builds the web app and gives you a live URL.

---

## Step 3 - Connect the Two Halves

The web app finds the backend through the backend-URL setting, and the backend trusts the web app through its app-URL setting. Both must point at the production counterpart.

- Set the web app's **backend URL** value to the production Convex URL from Step 1.
- Set the backend's **app URL** value to your live web app address, so links in emails and redirects resolve to the real site rather than a local address.

Redeploy whichever half you changed so the new values take effect. Open the live URL and confirm the feed, classroom, chat, and events all load against the production backend.

---

## Environment Promotion

Promote changes in one direction, from development toward production, and never edit production data by hand to work around a code change.

1. Build and test on your development deployment first.
2. Push the backend to production with `npx convex deploy`.
3. Ship the matching web app build to Vercel with `npx vercel --prod`.

Keep backend and web app in step. A web app build that expects new backend behavior should go out after the backend push, not before. When in doubt, deploy the backend, confirm it is healthy, then deploy the web app.

---

## Go-Live Checklist

Work through this before real members arrive. The production doctor checks most of it for you.

```
npx pnpm run setup:check -- --target=prod
```

- **Backend on production.** `npx convex deploy` has run and the production URL is recorded.
- **Web app on production.** The Vercel production build is live and reachable.
- **The two are wired.** The web app's backend URL points at the production backend, and the backend's app URL points at the live site.
- **Configuration is set on both.** Every value on the [Environment and Configuration](/docs/help/configuration) page is present on the side that needs it, with production values, not development ones.
- **Payments are connected.** Your own Stripe account is linked, tiers exist in your live currency, and the payment webhook is subscribed. See [Payments and Stripe Setup](/docs/help/stripe).
- **Email is sending.** Your email provider is connected with a verified sender domain so sign-in, notifications, and digests actually deliver. See [Email and Deliverability](/docs/help/email).
- **Live video is ready** if you plan to stream. The real-time video provider and recording storage are connected. See [Live Video Setup](/docs/help/live-video).
- **Branding is applied.** Your domain, logo, favicon, and design tokens are set so every screen and email matches your brand.
- **You created your own admin.** The first real owner account exists (minted with `npx pnpm run provision`) and no demo seed data was ever run against production.

---

## After You Are Live

- **Every change follows the same path.** Edit locally, deploy the backend, deploy the web app.
- **Watch the first real signups and the first real payment.** Confirm a new member can join, a paid tier checks out, and the welcome email lands.
- **Protect your data early.** Set up your backup and export habits in your first week rather than your first incident.

Next, connect [payments](/docs/help/stripe), then [email](/docs/help/email), then [live video](/docs/help/live-video). New to the platform? Start with [Getting Started](/docs/getting-started).

---
Source: https://seedlycommunities.com/docs/help/deploying
