1import * as Alchemy from "alchemy";
2import * as Cloudflare from "alchemy/Cloudflare";
3import * as Effect from "effect/Effect";
4import { Path } from "effect/Path";
5import Service from "./backend/src/Service.ts";
6
7export default Alchemy.Stack(
8 "Monorepo",
9 {
10 providers: Cloudflare.providers(),
11 state: Cloudflare.state(),
12 },
13 Effect.gen(function* () {
14 const backend = yield* Service;
15 const path = yield* Path;
16
17 const website = yield* Cloudflare.Website.Vite("Website", {
18 rootDir: path.resolve(import.meta.dirname, "frontend"),
19 env: {
20 VITE_API_URL: backend.url.as<string>(),
21 },
22 });
23 return {
24 backendUrl: backend.url.as<string>(),
25 websiteUrl: website.url.as<string>(),
26 };
27 }),
28);