Next.js apps

Your Next.js app and its backend, one project

Deploy the app to a global CDN and give it a database, sign-in and storage that already understand each other.

deploy
volcano cloud frontends deploy --name web --path .detected  next 16.1.2 · pnpm 9 · node 22building  41 routes · 12 prerenderedstatus    provisioning → active✓ https://<frontend-id>.frontends.volcano.run · TLS · IPv6# a failed build leaves the running deployment untouched
Overview

The app is the easy half

Getting Next.js onto a CDN is a solved problem. What takes the week is everything behind it: a database somewhere else, a connection string you must keep out of the browser, an auth provider whose tokens your database has never heard of, and three dashboards to keep in agreement.

Volcano puts the frontend and its backend in one project. The app deploys to a global edge, and the session it issues is the same identity your Postgres policies read, so a server component and a browser component can query the same tables safely.

Deploys

A bad build never takes the site down

A deployment only takes over live traffic once it has built successfully. A failure leaves the current version serving, and redeploy ships again from what you already uploaded, without another push.

  • Failed builds never replace what is running
  • A newer push replaces one still waiting to build
  • redeploy reuses what you already uploaded
volcano cloud frontends list
web   active       next 16.1.2   2m ago  └─  failed       build error   40s ago# the failure did not touch the active deploymentvolcano cloud frontends logs web --type buildstill serving 16.1.2
Data

One session, server and browser

The token your app issues is understood by Postgres as auth.uid(), so a server component and a client component can hit the same tables under the same policies. There is no API layer to write in between.

  • Middleware helpers for the App Router
  • Row-level security instead of hand-written endpoints
  • Anon key in the browser, service key on the server
A Next.js storefront deployed on Volcano
Build

It reads your repo, not a config UI

The runtime comes from engines.node and the package manager from your lockfile. A monorepo works by packaging the workspace root and naming the member you want built.

  • Node 22 or 24, from engines.node
  • npm 10, pnpm 9, Yarn Classic or Berry
  • --app-root apps/web for a workspace member
monorepo
volcano cloud frontends deploy --name web \  --path . --app-root apps/webworkspace  pnpm 9 · 4 packagesbuilding   apps/web✓ active
Path to production

How it works

  1. 01

    Start from a template

    volcano init nextjs gives you an app wired to the SDK, with migrations and functions alongside.

  2. 02

    Describe your data

    SQL migrations with row-level policies, so the browser can query without an endpoint per table.

  3. 03

    Add sign-in

    Email and password or OAuth, with middleware protecting the routes that need a session.

  4. 04

    Deploy, add a domain

    Ship the frontend, then attach your own domain and certificate to it.

Code

From template to custom domain

TypeScript
import { VolcanoAuth } from '@volcano.dev/sdk'; export const volcano = new VolcanoAuth({ apiUrl: process.env.NEXT_PUBLIC_VOLCANO_API_URL!, anonKey: process.env.NEXT_PUBLIC_VOLCANO_ANON_KEY!, }); // Select the database once, before the first query. volcano.database('app'); // Nothing here throws — every call resolves to { data, error }. export async function recentPosts(limit = 20) { const { data, error } = await volcano .from('posts') .select('id, title, published_at') .eq('status', 'published') .order('published_at', { ascending: false }) .limit(limit); if (error) { console.error('posts query failed', error); return []; } return data; }
Return

What one project saves

1 identityacross the whole app

The session your app issues is what the database reads in every policy.

0CRUD endpoints per table

Row-level security lets the client query directly instead of proxying through routes.

60 minallowed for a single build

Long enough for a large monorepo build, with the old deployment serving throughout.

What you get

Safe deploys

A failed build leaves the running version serving traffic.

Less glue

Auth, data and hosting are configured in one place.

Fast everywhere

Static assets on a global CDN with TLS and IPv6.

Platform

Built on Volcano

Next.js frontends
  • The hosting itself

    Next.js 15 and 16, a global CDN, image optimization for next/image, and one custom domain per frontend.

Databases and vector
  • Your data

    PostgreSQL 15 or 16 with row-level security, queryable from a server component or the browser.

Authentication
  • Sign-in

    Email and password, four OAuth providers, and middleware helpers for the App Router.

File storage
  • Uploads

    Buckets for avatars and attachments, private by default with policy-based access.

Frequently asked questions

Read the docs
Which Next.js versions are supported?

15.x and 16.x. Volcano builds on Node 22 or 24, taken from engines.node in your package.json and defaulting to 22.

Can I deploy a Vite or static site?

Not today. Frontend hosting accepts Next.js only. Anything else would need to run as a function or be hosted elsewhere against the same Volcano backend.

Does it work with a monorepo?

Yes. Package the workspace root with --path . and name the app you want built with --app-root apps/web. The package manager is detected from the lockfile.

What happens when a build fails?

The deployment is marked failed and the currently active one keeps serving. If you push again while a deploy is still waiting to build, the newer one replaces it.

How do custom domains work?

You supply the certificate as cert and key PEM files, then point a CNAME at the target the CLI prints. Each frontend takes one custom domain, and the Volcano hostname gets TLS automatically.

Are there preview deployments per branch?

No. There is one active deployment per frontend. To preview a branch, deploy it as a separate frontend or use a separate project as a staging environment.

Ready to deploy your app?

Build, deploy, and scale on Volcano's global platform — free to start, with no infrastructure to manage.

Explore more solutions