t3-code-android-nightly/.repos/alchemy-effect/examples/hetzner-website-react-router
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00
..
app chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00
public chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00
test chore(refs): sync Effect and Alchemy references to rc.115 and beta.78 (#12327) 2026-09-17 23:21:25 -07:00
alchemy.run.ts chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00
package.json chore(refs): sync Effect and Alchemy references to rc.115 and beta.78 (#12327) 2026-09-17 23:21:25 -07:00
react-router.config.ts chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00
README.md chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00
tsconfig.json chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170) 2026-10-05 13:22:30 -07:00
vite.config.ts chore(refs): sync Alchemy reference to beta.76 (#10654) 2026-09-07 21:54:45 -07:00

Hetzner Website: React Router

Deploys a React Router v7 (framework mode) site to Hetzner with Hetzner.Website.ReactRouter — no adapter setup in the project config.

The Node adapter bundle runs as a systemd unit on a Hetzner Cloud Server (port 3000).

  • app/routes/home.tsx is server-rendered on the Hetzner Server and reads GREETING from process.env.
  • app/components/Card.tsx is a React component styled with Tailwind utilities.
  • Static assets under public/ deploy with the service.
const site = yield* Hetzner.Website.ReactRouter("Website", {
  env: { GREETING: "Hello from React Router on Hetzner!" },
});

The integration package must be installed in the project (it is loaded dynamically at deploy time):

bun add -d @alchemy.run/frontend-frameworks

Deploy

bun run deploy

Unchanged sources skip the build entirely on subsequent deploys — the input files are content-hashed (scoped by memo.include).

Dev

bun run dev

alchemy dev runs the framework's own dev server (HMR included) and no cloud resources are created.

Destroy

bun run destroy