# Templates

The Template tile on the [Create page](/create/overview) starts you from something that already works: a starter app, or a **stack** - an application plus a database, created and connected in one go.

## Your own copy

With a GitHub, GitLab or Bitbucket account connected, the starter is copied into a new **private repository you own** - you choose the provider on the Create page when several are connected - and pushes to your copy deploy automatically - the same [Git automation](/create/git-automation) as any repository app. Without any connected, the app deploys read-only from the shared template. See [GitHub repo](/create/application-settings#github-repo-starter-templates) and [Git providers](/platform/deployments/git-providers#starter-templates).

## Stacks

A stack provisions two resources and wires them together:

1. The application is created from the starter repository.
2. A [Shared-tier database](/platform/databases#the-shared-tier) is provisioned next to it - ready in seconds.
3. The connection details land in the app's [environment variables](/platform/environment-variables) before the first deploy, so the app boots connected.

Stacks are created always-on (min instances `1`) so the app is warm from the first visit; you can change that in [Scaling](/create/scaling#min-instances) later.

### WordPress

WordPress with a connected MySQL database:

- **App:** WordPress (PHP container) from the `light-cloud-com/starter-wordpress` starter.
- **Database:** MySQL, Shared tier, 1 GB.
- **Wiring:** `WORDPRESS_DB_HOST`, `WORDPRESS_DB_NAME`, `WORDPRESS_DB_USER`, and `WORDPRESS_DB_PASSWORD` are filled in for you.

Deploy, open the URL, and run the WordPress installer against a database that is already connected.

### Open SaaS

The [Open SaaS](https://opensaas.sh) starter (built on Wasp) with a connected PostgreSQL database:

- **App:** Wasp (Node.js container) from the `light-cloud-com/starter-opensaas` starter.
- **Database:** PostgreSQL, Shared tier, 1 GB, wired in as `DATABASE_URL`.
- **Generated for you:** a strong `JWT_SECRET` at create time, and `WASP_SERVER_URL` / `WASP_WEB_CLIENT_URL` derived from the app's public URL on every deploy.

The starter has optional integrations that need keys from you. They are created as placeholder [environment variables](/platform/environment-variables) so the checklist is visible in the console:

| Importance | Variables | Feature |
| --- | --- | --- |
| Required | `SMTP_HOST`, `SMTP_PORT`, `SMTP_USERNAME`, `SMTP_PASSWORD` | Email - signup and password reset |
| Recommended | `ADMIN_EMAILS` | Admin dashboard access |
| Recommended | `STRIPE_API_KEY`, `STRIPE_WEBHOOK_SECRET`, `PAYMENTS_*_PLAN_ID` | Payments (Stripe) |
| Optional | `OPENAI_API_KEY` | AI demo app |
| Optional | `AWS_S3_*` | File uploads (S3) |
| Optional | `LEMONSQUEEZY_*`, `POLAR_*` | Payments (alternatives) |
| Optional | `PLAUSIBLE_*`, `GOOGLE_ANALYTICS_*` | Analytics |

Set the required ones, redeploy, and the app is functional; fill in the rest as you enable each feature.

## After creating

A template app is a normal application: it has [deploy history](/platform/deployments#deploy-history), [logs and metrics](/platform/observability), and every setting can be changed later. Edit code in your repository copy and push to ship.

## Related

- [Creating resources](/create/overview): The Create page and its four sources.
- [Databases](/platform/databases): What the Shared tier is and when to move off it.
- [Environment variables](/platform/environment-variables): Editing the values a stack pre-filled.
