> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipways.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Site kinds

> What sort of thing a site is, which decides how it is served.

A preset rather than a setting. Choosing one at create time picks a web
directory and the routing that goes with it, and both stay changeable
afterwards.

## PHP

| Kind           | How it is served                                                                    |
| -------------- | ----------------------------------------------------------------------------------- |
| **Laravel**    | Served from `public`, everything through `index.php`.                               |
| **Symfony**    | Served from `public`, everything through the one front controller and nothing else. |
| **Statamic**   | Laravel underneath, so it is served from `public` the same way.                     |
| **WordPress**  | Served from the root, with the files nobody should be able to fetch closed off.     |
| **phpMyAdmin** | Served from the root, with the setup directory shut so nobody can reconfigure it.   |
| **PHP**        | Any other PHP application, served from the root.                                    |

## JavaScript

| Kind        | How it is served                                         |
| ----------- | -------------------------------------------------------- |
| **Next.js** | Nginx passes requests to the Node process the site runs. |
| **Nuxt.js** | Nginx passes requests to the Node process the site runs. |

Both default to port 3000.

## Everything else

| Kind                  | How it is served                                                      |
| --------------------- | --------------------------------------------------------------------- |
| **HTML**              | Files only. No PHP is run, so nothing can be.                         |
| **Proxied to a port** | Nginx passes requests to something already listening on this machine. |

A proxied site's target listens on localhost, so nothing has to be open to the
outside for it to work.

## What runs behind a site

The kind also decides what Shipways expects to be running alongside the site,
and the site's Overview tab tells you whether it is.

**Laravel and Statamic** — a scheduler and a queue worker.

**Next.js and Nuxt.js** — the Node process itself.

**Everything else** — nothing. That is a real answer rather than a gap: nothing
runs behind a static site, and a proxied one is by definition pointed at
something you run your own way.

The register is deliberately short. A capability that cannot be recognised
without guessing is worse than one that is missing — a row saying "no queue
worker" on a site whose worker is running under a name Shipways does not
recognise teaches people to stop believing the panel. WordPress's `wp-cron` and
Symfony's Messenger are both real and both left out until they can be
recognised as reliably as these three.

Absent does not always mean broken. A site with no queued jobs needs no worker.
A Node site with no process is a site that is down. The panel says which of the
two it is.

Processes themselves are added under
[daemons](/processes/daemons) and
[scheduled jobs](/processes/scheduled-jobs), on the server, because they are
written under the server's permission rather than the site's.

## Changing the kind

Allowed, from the site's General settings. It changes the routing and — if you
have not overridden them — the directories, and reloads nginx.

What it does not change is anything already running. Daemons and scheduled jobs
keep the directory and command they were created with.
