Skip to content
Back to skills

Encore Vercel Deploy

BSecurity

Automates deployment of Encore.ts backend and Next.js frontend to Encore Cloud and Vercel. Use this skill when deploying the full-stack application, setting up new environments, or troubleshooting deployment issues.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
developmenttypescriptgobashnextjsgitapifrontendbackendsecuritydocumentation

Works with

  • cli
  • api

Security analysis

B89/100
  • mediumUses curl or wget to download content
  • highPerforms destructive filesystem operations

Pro shows the line behind each finding and how to fix it

Scanned February 10, 2026

npx -y skills add majiayu000/claude-skill-registry --skill encore-vercel-deploy --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Encore Vercel Deploy?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Encore Vercel Deploy
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-encore-vercel-deploy/badge)](https://www.skillsdirectory.com/skills/majiayu000-encore-vercel-deploy)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: encore-vercel-deploy
description: Automates deployment of Encore.ts backend and Next.js frontend to Encore Cloud and Vercel. Use this skill when deploying the full-stack application, setting up new environments, or troubleshooting deployment issues.
---

# Encore + Vercel Deployment Skill

Automates the deployment of full-stack applications with Encore.ts backend and Next.js frontend.

## When to Use This Skill

Use this skill when:
- Deploying backend to Encore Cloud and frontend to Vercel
- Setting up a fresh Encore app after git/deployment issues
- Configuring environment variables and secrets
- Connecting frontend to deployed backend
- Troubleshooting deployment failures

## Prerequisites

Before deployment, verify:
- Encore CLI installed and authenticated (`encore auth whoami`)
- Vercel CLI installed and authenticated (`vercel whoami`)
- Git repository with proper structure (no broken submodules)
- OpenAI API key available for agent services

## Deployment Process

### Step 1: Verify Git Structure

Ensure backend is NOT a git submodule:

```bash
# Check if backend is tracked properly
cd /path/to/project
git ls-tree HEAD backend
```

**If output shows mode `160000`** → Backend is a broken submodule. Fix it:

```bash
# Remove submodule reference
git rm --cached backend

# Add backend files properly
git add backend

# Commit
git commit -m "fix: properly add backend to git"
```

### Step 2: Create or Link Encore App

**Option A: Create New App (if starting fresh)**

```bash
cd /path/to/project
encore app create your-app-name

# Update backend/encore.app with new app ID
# Copy the app ID from output (e.g., your-app-name-xyz123)
```

Update `backend/encore.app`:
```json
{
  "id": "your-app-name-xyz123",
  "lang": "typescript",
  "global_cors": {
    "allow_origins_without_credentials": [
      "http://localhost:3000",
      "https://your-app.vercel.app",
      "https://your-app-*.vercel.app"
    ]
  }
}
```

**Option B: Link Existing App**

```bash
cd backend
encore app init  # Interactive linking
```

### Step 3: Configure Git Remote for Encore

```bash
# Remove old remote if exists
git remote remove encore 2>/dev/null

# Add Encore remote (use encore:// protocol)
git remote add encore encore://your-app-id

# Verify
git remote -v
```

### Step 4: Set Required Secrets

All agent services require `OpenAIApiKey`:

```bash
cd backend
encore secret set --type prod,dev OpenAIApiKey
# Paste your OpenAI API key when prompted
```

For additional secrets, repeat the command with different names.

### Step 5: Deploy Backend to Encore

```bash
# From project root
git add -A
git commit -m "feat: deploy to encore"
git push encore main:main
```

**Expected output:**
```
remote: main: triggered deploy https://app.encore.cloud/your-app-id/deploys/staging/...
```

**Deployment will be at:**
- Staging: `https://staging-your-app-id.encr.app`
- Dashboard: `https://app.encore.cloud/your-app-id`

### Step 6: Deploy Frontend to Vercel

**Set environment variable:**

```bash
cd frontend

# Add API URL (updates existing or creates new)
echo "https://staging-your-app-id.encr.app" | vercel env add NEXT_PUBLIC_API_URL production

# Or if variable exists, update via dashboard:
# https://vercel.com/your-team/your-project/settings/environment-variables
```

**Deploy:**

```bash
# Remove old project link if redeploying
rm -rf .vercel

# Deploy
vercel --prod --yes
```

**Alternative:** Push to GitHub if Vercel GitHub integration is configured.

### Step 7: Verify Deployment

**Backend health check:**
```bash
curl https://staging-your-app-id.encr.app/hello/World
# Should return: {"message":"Hello World!"}
```

**Frontend check:**
```bash
curl -I https://your-app.vercel.app
# Should return: 200 OK
```

**Test integration:**
- Open frontend URL
- Try sending a chat message
- Verify backend responds via SSE stream

## Common Issues & Solutions

### Issue: "repository not found" when pushing to Encore

**Cause:** Wrong git remote format or app not created

**Fix:**
```bash
# Verify app exists
encore auth whoami

# Recreate remote with encore:// protocol
git remote remove encore
git remote add encore encore://your-app-id
```

### Issue: "secret key(s) not defined: OpenAIApiKey"

**Cause:** Secrets not set before deployment

**Fix:**
```bash
cd backend
encore secret set --type prod,dev OpenAIApiKey
# Trigger redeploy
git commit --allow-empty -m "chore: redeploy after secrets"
git push encore main:main
```

### Issue: Backend showing old services (auth/portfolio instead of chat-gateway)

**Cause:** Backend was never properly pushed to git/Encore

**Fix:**
```bash
# Verify backend files are in git
git ls-files backend | head -20

# If empty or showing "backend" only → fix submodule issue
git rm --cached backend
git add backend
git commit -m "fix: add backend files"
git push origin main
git push encore main:main
```

### Issue: CORS errors between frontend and backend

**Cause:** Frontend domain not in `backend/encore.app` CORS config

**Fix:**

Update `backend/encore.app`:
```json
{
  "global_cors": {
    "allow_origins_without_credentials": [
      "http://localhost:3000",
      "https://your-actual-domain.vercel.app",
      "https://your-actual-domain-*.vercel.app"
    ]
  }
}
```

Then redeploy backend:
```bash
git add backend/encore.app
git commit -m "fix: update CORS for frontend"
git push encore main:main
```

### Issue: Vercel project named "frontend" instead of app name

**Fix:**
1. Go to Vercel project settings
2. Rename project to match desired domain
3. New URL will be `https://your-project-name.vercel.app`

## Quick Reference

### Encore Commands

```bash
# Check auth status
encore auth whoami

# Create new app
encore app create app-name

# List secrets
encore secret list

# View logs
encore logs --env=staging

# Get API URL
echo "https://staging-$(cat backend/encore.app | grep '"id"' | cut -d'"' -f4).encr.app"
```

### Vercel Commands

```bash
# Check auth
vercel whoami

# List projects
vercel list

# Set env var
vercel env add VAR_NAME production

# Deploy
vercel --prod

# Rollback
vercel rollback
```

### Git Commands

```bash
# Check for submodules
git ls-tree HEAD | grep 160000

# View remotes
git remote -v

# Push to multiple remotes
git push origin main
git push encore main:main
```

## Environment URLs

After successful deployment:

| Environment | Backend URL | Frontend URL |
|-------------|-------------|--------------|
| Local | `http://localhost:4000` | `http://localhost:3000` |
| Staging | `https://staging-{app-id}.encr.app` | `https://{project}.vercel.app` |
| Production | `https://prod-{app-id}.encr.app` | `https://{project}.vercel.app` |

## Security Notes

- Never commit `.env.local` or `.env.production` files
- Rotate OpenAI API keys regularly
- Use Encore's secret management for all sensitive values
- Enable Vercel password protection for preview deployments if needed

## Success Checklist

- [ ] Backend git structure verified (no broken submodules)
- [ ] Encore app created/linked with correct ID
- [ ] Git remote configured: `encore://app-id`
- [ ] OpenAI secret set in Encore
- [ ] Backend deployed successfully to Encore
- [ ] Frontend NEXT_PUBLIC_API_URL points to Encore staging
- [ ] Frontend deployed to Vercel
- [ ] CORS configured correctly in backend/encore.app
- [ ] Health check endpoints responding
- [ ] Frontend can communicate with backend

## Related Documentation

- Encore Deployment: https://encore.dev/docs/deploy/deploying
- Encore Secrets: https://encore.dev/docs/primitives/secrets
- Vercel CLI: https://vercel.com/docs/cli
- Vercel Environment Variables: https://vercel.com/docs/projects/environment-variables

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.