# Framework starters: Next.js, Nuxt, SvelteKit and Astro

> What the running starter is, how to replace it from git, and the start command each framework needs.

Source: https://veldhost.eu/docs/framework-starters

Picked Next.js, Nuxt, SvelteKit or Astro? Your site came with the framework's own minimal starter built and running on the Node.js runtime — a placeholder that proves the runtime works and that you replace with your own code.

## What gets installed

- The official scaffolder (pinned: `create-next-app`, `nuxi init`, `sv create`, `create-astro`) run non-interactively into your site's code root, then `npm install` and the production build, in your container. No git repository, no example data beyond the template's welcome page.
- A `start` script in `package.json` that listens on the `PORT` we hand the app — the same command a later deploy will use.
- Where the framework needs an adapter to run as a server, it is wired: SvelteKit gets `@sveltejs/adapter-node` (with `ORIGIN` and proxy headers in `.env`), Astro gets `@astrojs/node` in standalone mode with `output: 'server'`.

## Replacing it with your own code

1. Push your project to GitHub, GitLab or veldhost Git and connect it on the **Deploy** tab (see [Deploy from Git](https://veldhost.eu/docs/deploy-from-git)). Every push runs `npm ci`, your build command and a restart.
2. Keep a `start` script that listens on `process.env.PORT` (3000 in the container) — the table below shows the one the starter uses. Set a different one on the Node card if your project needs it.
3. Files in `public/` are served by nginx straight from disk; everything else is proxied to your app, WebSockets included. `X-Forwarded-Proto` tells your app it is behind https.

| Framework | Build | Start command | Notes |
| --- | --- | --- | --- |
| Next.js | `next build` | `next start` | Respects `PORT`. `output: 'standalone'` also works with `node .next/standalone/server.js`. |
| Nuxt | `nuxt build` | `node .output/server/index.mjs` | Nitro respects `PORT` and `HOST`. |
| SvelteKit | `vite build` with `@sveltejs/adapter-node` | `node --env-file=.env build` | `.env` carries `ORIGIN` so form actions accept your https address. |
| Astro | `astro build` with `@astrojs/node` (standalone) | `node ./dist/server/entry.mjs` | Needs `output: 'server'` (or per-page `prerender = false`) for on-request rendering; a fully static Astro site is better served as a static site. |

## Updating and memory

- Framework updates are ordinary dependency updates in your repository; deploying them builds in our build container, not in your site's memory.
- The first install builds in your container with a temporarily raised memory limit; a Starter container (768 MB) runs any of these starters comfortably afterwards.
