---
title: "Deploy All Apps"
description: "Configure Vercel projects for each app, set environment variables per app, deploy all apps, and verify independent deploys."
canonical_url: "https://vercel.com/academy/production-monorepos/deploy-all-apps"
md_url: "https://vercel.com/academy/production-monorepos/deploy-all-apps.md"
docset_id: "vercel-academy"
doc_version: "1.0"
last_updated: "2026-04-12T04:59:42.695Z"
content_type: "lesson"
course: "production-monorepos"
course_title: "Production Monorepos with Turborepo"
prerequisites:  []
---

<agent-instructions>
Vercel Academy — structured learning, not reference docs.
Lessons are sequenced.
Adapt commands to the human's actual environment (OS, package manager, shell, editor) — detect from project context or ask, don't assume.
The lesson shows one path; if the human's project diverges, adapt concepts to their setup.
Preserve the learning goal over literal steps.
Quizzes are pedagogical — engage, don't spoil.
Quiz answers are included for your reference.
</agent-instructions>

# Deploy All Apps

# Deploy all apps

You've added a third app locally - but does deployment scale? You'll deploy all 3 apps as independent Vercel projects, proving that monorepo deployment remains simple as you add apps. Each app gets its own URL, own env vars, and deploys independently.

## Outcome

Deploy web, app, and docs to Vercel as 3 independent projects.

## Fast track

1. Deploy apps/docs to Vercel
2. Configure environment variables
3. Verify all 3 apps are live
4. Test independent deployments

## Hands-on exercise 8.2

### 1. Create Vercel project

Go to <https://vercel.com> → Add New Project → Import your GitHub repository

**Project Settings:**

- **Project Name:** `geniusgarage-docs`
- **Root Directory:** `apps/docs`
- **Framework:** Next.js (auto-detected)
- **Build Command:** Leave default
- **Output Directory:** Leave default

### 2. Add environment variables

In Vercel project settings → Environment Variables:

- **Key:** `NEXT_PUBLIC_APP_NAME`
- **Value:** `GeniusGarage Docs`
- **Environments:** Production, Preview, Development

### 3. Deploy

Click **Deploy**. Output shows:

```
Building...
  @geniusgarage/ui:build        ✓
  @geniusgarage/docs:build      ✓

Deployment ready: https://geniusgarage-docs.vercel.app
```

Visit URL - docs app is live!

## Verify all apps

You now have 3 independent deployments:

1. **Marketing Site:** <https://your-project.vercel.app> (apps/web)
2. **Snippet Manager:** <https://geniusgarage-app.vercel.app> (apps/snippet-manager)
3. **Documentation:** <https://geniusgarage-docs.vercel.app> (apps/docs)

All from one monorepo, all sharing packages/ui!

## Test independent deployments

### 1. Change only docs

```bash
echo "# Update docs" >> apps/docs/README.md
git add .
git commit -m "docs: update readme"
git push
```

**Result:**

- ✅ docs rebuilds and deploys
- ⏭️ web and app skip rebuild (not changed)

Independent deploys work!

### 2. Change shared package

```bash
# Edit packages/ui/src/button.tsx
git add .
git commit -m "feat(ui): update button style"
git push
```

**Result:**

- ✅ web rebuilds (uses ui)
- ✅ app rebuilds (uses ui)
- ✅ docs rebuilds (uses ui)

Shared package changes trigger all dependents!

## Configure CI for 3 apps

Your GitHub Actions workflow already handles all 3 apps with git-based filtering:

```yaml
run: turbo build lint test --filter=[origin/main]
```

Turborepo automatically:

- Detects which packages changed
- Builds only affected apps
- Caches everything else

No configuration needed for the third app!

## Monorepo deployment at scale

**3 apps, 1 repository, 3 deployments:**

```
  GitHub: production-monorepos/
  ├── apps/web    → Vercel Project 1
  ├── apps/snippet-manager    → Vercel Project 2
  ├── apps/docs   → Vercel Project 3
  └── packages/ui → Shared by all

  Changes to ui → All 3 redeploy
  Changes to web → Only web redeploys
  Changes to app → Only app redeploys
  Changes to docs → Only docs redeploys
```

**Scaling to 10+ apps:**

- Same pattern
- Same CI pipeline
- Same caching strategy
- No additional configuration

## Done-when

Verify all apps deployed:

- [ ] Deployed apps/docs to Vercel
- [ ] Set Root Directory to apps/docs
- [ ] Added NEXT\_PUBLIC\_APP\_NAME env var
- [ ] Verified docs app loads in production
- [ ] Tested all 3 app URLs work
- [ ] Changed docs and saw selective rebuild
- [ ] Changed ui and saw all apps rebuild
- [ ] Understood deployment scales effortlessly

## What's Next

3 apps deployed, but how do you develop them locally without conflicts? Final lesson in Section 7: **Multi-App Development** - you'll learn workflows for running specific apps, testing cross-app features, and managing multiple ports efficiently.


---

[Full course index](/academy/llms.txt) · [Sitemap](/academy/sitemap.md)
