# Deploy Wasp

Wasp is detected from its project files and runs as a Node.js container on port `8080`. It is also the framework behind the [Open SaaS template](/create/templates#open-saas), which is the fastest way to a running Wasp app.

## What the platform handles

Created from the Open SaaS stack, the fiddly parts are done for you:

- A [PostgreSQL database](/platform/databases) on the Shared tier, wired in as `DATABASE_URL`.
- A strong `JWT_SECRET`, generated at create time.
- `WASP_SERVER_URL` and `WASP_WEB_CLIENT_URL`, derived from the app's public URL on every deploy - they track [custom domains](/platform/custom-domains) too.

## Bring your own Wasp app

Deploying your own repository, set the same pieces as [environment variables](/platform/environment-variables):

| Variable | Value |
| --- | --- |
| `DATABASE_URL` | From the database's [Credentials tab](/platform/databases/connect) |
| `JWT_SECRET` | A long random string |
| `WASP_SERVER_URL` | The app's public URL |
| `WASP_WEB_CLIENT_URL` | The app's public URL |

Wasp's server reads `PORT`, which is set for you. Migrations (`wasp db migrate-dev` output via Prisma) run where the database is reachable - startup or laptop, see [Connect an app](/platform/databases/connect#connect-from-your-laptop).

## Related

- [Templates](/create/templates): The Open SaaS stack and its variable checklist.
- [Connect an app](/platform/databases/connect): DATABASE_URL, TLS, per-environment databases.
- [Custom domains](/platform/custom-domains): The URL the derived variables follow.
