1import * as Alchemy from "alchemy";
2import * as Cloudflare from "alchemy/Cloudflare";
3import * as Effect from "effect/Effect";
4import Backend, { Bucket } from "./src/backend.ts";
5
6export class Website extends Cloudflare.Website.Vite<Website>()("Website", {
7 env: {
8 GREETING: "Hello from TanStack Start on Cloudflare!",
9 BUCKET: Bucket,
10 BACKEND: Backend,
11 },
12}) {}
13
14export type WebsiteEnv = Cloudflare.InferEnv<typeof Website>;
15
16export default Alchemy.Stack(
17 "CloudflareTanstackExample",
18 {
19 providers: Cloudflare.providers(),
20 state: Cloudflare.state(),
21 },
22 Effect.gen(function* () {
23 const backend = yield* Backend;
24 const website = yield* Website;
25
26 return {
27 backendUrl: backend.url.as<string>(),
28 websiteUrl: website.url.as<string>(),
29 };
30 }),
31);