build-and-deploy
Build and deploy this Next.js LangChain retrieval application with Supabase vector store. Use when building, deploying, setting up vector store, or preparing the project for production.
When & Why to Use This Skill
This Claude skill automates the end-to-end workflow for building and deploying Next.js applications integrated with LangChain and Supabase vector stores. It streamlines the entire production readiness process, including environment variable synchronization, database schema initialization for pgvector, and optimized deployment strategies for platforms like Vercel and Netlify.
Use Cases
- Rapidly bootstrapping a Retrieval-Augmented Generation (RAG) application with a pre-configured Next.js and LangChain stack.
- Automating the setup of Supabase vector databases, including the creation of document tables and vector matching functions.
- Executing reliable production deployments to Vercel using the mandatory prebuilt mode to avoid Git permission issues in automated environments.
- Synchronizing local environment variables and secrets with cloud hosting providers for seamless project transitions.
- Preparing and validating project builds to ensure compatibility with production-grade vector search requirements.
| name | build-and-deploy |
|---|---|
| description | Build and deploy this Next.js LangChain retrieval application with Supabase vector store. Use when building, deploying, setting up vector store, or preparing the project for production. |
Build and Deploy LangChain Retrieval
CRITICAL: For Vercel, you MUST use
vercel build --prodthenvercel deploy --prebuilt --prod. Do NOT usevercel --prodorvercel deploy --proddirectly - these will fail due to Git author permission issues in VM environments.
Workflow
1. Setup Environment Variables
Read .env.example to see all required variables:
cat .env.example
Create .env by reading values from current environment:
For each variable in .env.example, read the value from the current environment and write to .env. Example approach:
# Read .env.example and create .env with values from current environment
while IFS= read -r line || [[ -n "$line" ]]; do
# Skip comments and empty lines
[[ "$line" =~ ^#.*$ || -z "$line" ]] && continue
# Extract variable name (before = sign)
var_name=$(echo "$line" | cut -d'=' -f1)
# Get value from environment
var_value="${!var_name}"
# Write to .env
echo "${var_name}=${var_value}" >> .env
done < .env.example
Or manually inspect .env.example and create .env with the required values from environment variables.
2. Install Dependencies
yarn install
3. Setup Supabase Vector Store
Get the database connection URL from Supabase Dashboard:
- Go to Settings → Database → Connection string → URI
- Copy the URI and add it to
.envasSUPABASE_DB_URL
yarn setup-db
This creates the pgvector extension, documents table, and match_documents function in your Supabase project.
4. Build
yarn build
5. Deploy
Vercel:
All vercel CLI commands require -t <token> or --token <token> for authentication.
# Pull project settings (also links project, creates .vercel/project.json)
vercel pull --yes -t $VERCEL_TOKEN
# Push env vars to Vercel (first time only)
# Must add to each environment separately
while IFS='=' read -r key value; do
[[ "$key" =~ ^#.*$ || -z "$key" || -z "$value" ]] && continue
for env in production preview development; do
printf '%s' "$value" | vercel env add "$key" $env -t $VERCEL_TOKEN
done
done < .env
# Build locally for production
vercel build --prod -t $VERCEL_TOKEN
# Deploy prebuilt
vercel deploy --prebuilt --prod --yes -t $VERCEL_TOKEN
Netlify:
# Import all env vars from .env (first time only)
netlify env:import .env
# Deploy
netlify deploy --prod
Critical Notes
- VERCEL PREBUILT MODE IS MANDATORY: Always use
vercel build --prodfollowed byvercel deploy --prebuilt --prod. Never usevercel --prodorvercel deploy --prodwithout--prebuiltflag. - Supabase Required: Need a Supabase project (free tier works)
- Vector Store Setup: Run
yarn setup-dbto create tables automatically - Environment Variables: All values come from current environment - inspect
.env.examplefor required variables - OpenAI for Embeddings: OPENAI_API_KEY is always required for vector embeddings
- No Dev Server: Never run
yarn devin VM environment