๐ŸŒŠ nodewave

March 4, 2026 ยท View on GitHub

Seamless build, deploy, and upgrade for Next.js and Node.js projects.
VS Code extension + CLI. Works in VS Code, Cursor, GitHub Codespaces, and any VS Code-compatible IDE.


What is nodewave?

nodewave makes Next.js and Node.js projects first-class citizens in your editor โ€” with a sidebar explorer, one-click deploy, smart config generation, upgrade wizards, and a project health scanner.

FeatureWhat it does
VS Code extensionSidebar, status bar, command palette, WebView panels
New Project wizardScaffold Next.js / Express / Fastify projects
Project SettingsEdit nodewave.config.js via GUI property pages
Upgrade wizardMigrate to App Router, ESM, latest Next.js โ€” with actual code rewrites
nodewave harvestScan routes (edge/ISR/static/serverless), generate vercel.json with per-function config
nodewave doctorFind misconfigurations before they break production
nodewave envList, sync, and pull environment variables across platforms
Status bar deployDeploy to Vercel / Netlify / Railway in one click

Installation

VS Code Extension

code --install-extension nodewave-0.1.0.vsix

Or install from the VS Code Marketplace:

ext install nodewave.nodewave

CLI

# Run without installing
npx nodewave

# Install globally
npm i -g nodewave-cli

VS Code Extension

Click the ๐ŸŒŠ icon in the Activity Bar:

  • Project โ€” name, framework, detected type
  • Routes โ€” discovered routes with edge/ISR/static/serverless labels
  • Environment Variables โ€” defined, missing, and unused vars
  • Deployments โ€” current target and status

Command Palette

Ctrl+Shift+P โ†’ type nodewave:

CommandDescription
nodewave: New ProjectOpen the New Project wizard
nodewave: BuildSmart build
nodewave: Start Dev ServerStart dev server in terminal
nodewave: DeployDeploy to current target
nodewave: Harvest ConfigScan and generate deployment config
nodewave: Upgrade ProjectOpen the Upgrade wizard
nodewave: Add PackageInstall and auto-configure a package
nodewave: Open SettingsOpen Project Settings
nodewave: Show StatusShow project health

Status Bar

๐ŸŒŠ โ–ฒ vercel    ๐Ÿš€ Deploy

Click the target name to switch. Click ๐Ÿš€ to deploy.


CLI Commands

nodewave init [name]          Scaffold a new project
nodewave build                Smart build (auto-detects type)
nodewave dev                  Start dev server
nodewave deploy [--target]    Deploy to Vercel / Netlify / Railway
nodewave upgrade              Upgrade project (8 guided options)
nodewave harvest              Scan routes + generate deployment config
nodewave env [list|sync|pull] Manage environment variables
nodewave doctor               Scan for misconfigurations
nodewave add <package>        Install + auto-configure a package
nodewave config               Interactive config editor
nodewave status               Project health and deployment status

nodewave harvest

Scans every route file and determines its rendering strategy. Generates a correct vercel.json with per-function config:

  [static]     /              app/page.tsx
  [isr]        /blog/:slug    revalidate:60s   app/blog/[slug]/page.tsx
  [edge]       /api/auth      app/api/auth/route.ts
  [serverless] /api/users     โš  uncached fetch  app/api/users/route.ts

Output vercel.json:

{
  "version": 2,
  "framework": "nextjs",
  "functions": {
    "app/api/auth/route.ts": { "runtime": "edge", "maxDuration": 10 }
  }
}

nodewave doctor

  โœ“ vercel.json version is 2
  โœ“ 1 route configured for Edge Runtime
  โœ“ 1 route using ISR

  โœ— Missing environment variables
     DB_API_KEY used in lib/db.ts but not in .env
     โ†’ Add to .env.local: DB_API_KEY=

  โš  fetch() without cache option  [app/api/users/route.ts]
     โ†’ fetch(url, { cache: 'no-store' })

  Health score: 75/100  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘

nodewave env

nodewave env list                     # show defined, missing, leaked vars
nodewave env sync --target vercel     # push vars to Vercel
nodewave env pull --target vercel     # pull .env.local from Vercel

nodewave upgrade

8 guided upgrade options:

  • Pages Router โ†’ App Router
  • getServerSideProps โ†’ async Server Component
  • getStaticProps โ†’ fetch(url, { cache: 'force-cache' })
  • next/router โ†’ next/navigation
  • Fix <Link><a> children (Next.js 13+)
  • Add cache: to bare fetch() calls
  • CommonJS โ†’ ES Modules
  • Bump Next.js to latest

Configuration

nodewave.config.js in your project root:

export default {
  project: 'my-app',
  type: 'nextjs-app',         // nextjs-app | nextjs-pages | express | fastify
  target: 'vercel',           // vercel | netlify | railway
  build: {
    command: 'next build',
    output: '.next',
  },
  env: {
    required: ['DATABASE_URL', 'NEXTAUTH_SECRET'],
    optional: ['ANALYTICS_ID'],
  },
  deploy: {
    region: 'iad1',
    nodeVersion: '22',
  },
};

Project Templates

TemplateDescription
nextjs-appNext.js 15 App Router
nextjs-pagesNext.js 15 Pages Router
expressExpress 5 REST API
fastifyFastify API

Deployment Targets

TargetConfig FileCLI
Vercelvercel.jsonnpm i -g vercel
Netlifynetlify.tomlnpm i -g netlify-cli
Railwayrailway.jsonnpm i -g @railway/cli

Architecture

pnpm monorepo:

packages/
โ”œโ”€โ”€ core/       @nodewave/core โ€” detectors, adapters, harvester, doctor, env analyzer, upgrade transforms
โ”œโ”€โ”€ cli/        nodewave-cli โ€” CLI wrapping @nodewave/core
โ””โ”€โ”€ extension/  VS Code extension โ€” sidebar, status bar, WebView panels, command palette

Compatibility

  • Node.js 18+
  • VS Code 1.80+, Cursor, GitHub Codespaces, Windsurf

2026-03-04