[deploy · static HTML · Astro · 11ty · Hugo · VitePress]

Deploy a static site to S3 + CloudFront in 5 minutes.

Push a static HTML/CSS/JS site (or Astro / 11ty / Hugo / VitePress build output) to Lander. Auto-detects static, ships to S3 + CloudFront with auto SSL. ~$0.50/mo per site, instant cold start.
$ deploy now →see pricingfree plan · no credit card · commercial use OK
[walkthrough · 5 minutes]
01

Make sure your build outputs to ./dist or ./public

Lander auto-detects static sites by looking for an index.html in common output dirs (`dist`, `public`, `build`, `out`). No Dockerfile needed.
02

Sign up — Free plan covers 3 static sites

lander.host/onboard → Google → Free plan (no card). Install GitHub App, pick repo, push to default branch.
03

First deploy

Lander runs your build (auto-detects from package.json scripts; falls back to looking for an existing dist/), uploads files to a per-customer S3 bucket, fronts it with CloudFront + ACM, and creates a Route53 record at <slug>.app.lander.host.
04

Subsequent pushes

GitHub webhook triggers a rebuild. Files diff-uploaded to S3 (only changed files). CloudFront invalidation runs automatically. Live in <60s.
[why · lander vs vercel · railway · render]
  • Free plan permits commercial use — Vercel's Hobby tier doesn't.
  • Auto-detected static = ~$0.50/mo per site, vs $9/mo for Fargate. Same custom-domain support.
  • Real CloudFront edge cache, not a serverless reseller.
[gotchas]
  • ·Custom 404 pages: name them `404.html` at the root of your dist/ — Lander wires CloudFront's custom-error-response config to point there.
  • ·SPA routing: if you're shipping React/Vue/Svelte SPAs, set the build output to `dist/` and Lander auto-configures CloudFront to fall back to `index.html` for client-side routing.
  • ·Don't put `.env.local` in the build output. Lander gitignores common env files but double-check your dist/.

5 minutes from clone to live URL.

no credit card · push from GitHub · real AWS underneath$ deploy now → lander.host