Skip to content

Develop scalable, opinionated, AI-hardened full stack apps.

nstack is the deployment and provisioning tool for Encore + Nuxt apps on Dokploy. Create the app, keep the typed client synced, run local dev, provision resources, and ship through one CLI pipeline.

Starts with

Start in one shell

Run the installer, then create an app with nstack init my-app.

curl -fsSL https://nstack.tech/install.sh | bash

Install

curl -fsSL https://nstack.tech/install.sh | bash

Create

nstack init my-app

Run locally

cd my-app && nstack dev

Architecture agents can keep working with.

nstack gives agents a real project shape: typed APIs, resource declarations, frontend rules, generated client code, and Dokploy target config they can inspect.

Three-command start

Install nstack, create an app, and let the CLI run local services, rebuild the client, and prepare deploy files.

Encore-shaped backend

APIs, databases, caches, Pub/Sub, and object storage live in source, so the architecture stays visible as the app grows.

Agent-ready frontend

The typed Encore client is rebuilt as APIs change, so Nuxt screens stay in sync while agents work.

Dokploy provisioning

nstack turns the project shape into Dokploy services, routes, domains, resources, and deploy files.

Start from a production-shaped app.

Pick a file to inspect the Encore API, Nuxt page, generated client, API helper, workspace config, and package scripts.

nstack init my-app
my-app
backend/
api/
frontend/
app/

backend/api/status.ts

TypeScript

import { api } from "encore.dev/api";import { db } from "./db";interface StatusResponse {  app: string;  commit: string;  database_ok: boolean;  uptime_seconds: number;}export const ready = api(  { expose: true, method: "GET", path: "/ready" },  async () => ({ ok: true }),);export const status = api(  { expose: true, method: "GET", path: "/status" },  async (): Promise<StatusResponse> => {    const row = await db.queryRow<{ ok: number }>`SELECT 1 AS ok`;    return {      app: process.env.APP_ID || "my-app",      commit: process.env.GIT_COMMIT || "",      database_ok: row?.ok === 1,      uptime_seconds: Math.floor(process.uptime()),    };  },);
Dokploy deployment view for an nstack app

Provision Dokploy, then ship.

Run nstack deploy from the app directory. The CLI prepares deploy files, provisions needed resources in Dokploy, rebuilds the generated client, and runs the deployment pipeline for the target you choose.

Encore resources are discovered from source
Needed Dokploy resources are provisioned from the app shape
Typed clients rebuild before local runs, builds, and deploys
nstack owns the build and deploy handoff for each target

Resource provisioning

nstack reads Encore resource declarations and provisions the matching Dokploy services for the selected target.

SQL databases

Encore SQL databases map to Dokploy Postgres resources.

Caches

Encore caches map to Dragonfly services.

Pub/Sub

Topics and subscriptions map to NSQ-backed services for the deployed app.

Object storage

Encore buckets map to RustFS buckets.

Cron jobs

Encore cron definitions become scheduled jobs for the target.

Secrets

Secrets are stored as target-specific deployment environment values.

Deploy pipeline

nstack deploy discovers Encore resources, renders deploy files, provisions the target in Dokploy, rebuilds generated client code, deploys backend and frontend services, and verifies the published URL.

If Dokploy has a Git provider connected, nstack can use that source provider for deploys. Targets let the same app ship to production, staging, or another Dokploy environment.

Three-command loop

Use this path for a new app. Add nstack deploy after the Dokploy target is configured, and nstack takes the build and deploy handoff from there.

nstack init my-appcd my-appnstack devnstack deploy