1/**
2 * Public posts about Alchemy, curated from X (see the sentiment thread at
3 * https://x.com/samgoodwin89/status/2102459555573793216) and the public
4 * channels of the Alchemy Discord. Text is verbatim except for trimming,
5 * marked with "…". Only first-party team posts are excluded.
6 */
7export interface Post {
8 name: string;
9 handle: string;
10 url: string;
11 text: string;
12 /** Where the post lives. @default "x" */
13 source?: "x" | "discord";
14}
15
16const DISCORD = "https://discord.com/channels/1359694195782320389";
17
18export const POSTS: Post[] = [
19 {
20 name: "Rhys",
21 handle: "RhysSullivan",
22 url: "https://x.com/RhysSullivan/status/2102515675931799843",
23 text: "Alchemy enables me to be more ambitious in shipping large projects to multiple targets. It gives my agents the capability to debug issues against real deployments of my systems, enabling the best feedback loop I've ever had resulting in several large perf wins.",
24 },
25 {
26 name: "Maxwell Brown",
27 handle: "maxwellbrown",
28 url: "https://x.com/maxwellbrown/status/2081323853171556739",
29 text: "Alchemy is literally the only reason I gave Cloudflare's dev platform a shot. The fact that I can just write Effect code to describe / deploy my infra and then use those same resources in my program is unparalleled DX IMO.",
30 },
31 {
32 name: "Maximilian",
33 handle: "maxedapps",
34 url: "https://x.com/maxedapps/status/2099771815786582351",
35 text: "Cloudflare + Alchemy + Effect is such a winning stack with AI agents, it's not even real. … And all the infra lives in code - which is how it should be with AI agents.",
36 },
37 {
38 name: "Dillon Mulroy",
39 handle: "dillon_mulroy",
40 url: "https://x.com/dillon_mulroy/status/2081108173935522081",
41 text: "alchemy is so good for IAC, esp. cloudflare IAC",
42 },
43 {
44 name: "Michael Arnaldi",
45 handle: "MichaelArnaldi",
46 url: "https://x.com/MichaelArnaldi/status/2102384731912388802",
47 text: "Thanks to Alchemy the CF primitives finally shine in DX, I couldn't get over the DX issues before, now it's amazing",
48 },
49 {
50 name: "arth",
51 handle: "arthty",
52 url: "https://x.com/arthty/status/2090156386353299742",
53 text: "choosing alchemy as a core foundation on @op0ai is probably a top 3 decision long-term. so far, the dx and velocity has gone thru the roof.",
54 },
55 {
56 name: "Nick Blow",
57 handle: "NickBlow",
58 url: "https://x.com/NickBlow/status/2102814433315578050",
59 text: "The fact it's truly \u201cjust typescript\u201d and not the abomination of codegen … Allows it to be far more easily extended than other iac platforms.",
60 },
61 {
62 name: "Superlinear",
63 handle: "superlinear_fm",
64 url: "https://x.com/superlinear_fm/status/2101946564260294900",
65 text: "We use @alchemy_run bc it's truly declarative, written in TypeScript with Effect, and gives agents a clean, code-native way to understand and modify infrastructure.",
66 },
67 {
68 name: "Michael Arnaldi",
69 handle: "MichaelArnaldi",
70 url: "https://x.com/MichaelArnaldi/status/2100076857638957346",
71 text: "Effect + Alchemy + DOs (and cf primitives) is an insanely powerful combo",
72 },
73 {
74 name: "Alireza Najafi",
75 handle: "alire8za",
76 url: "https://x.com/alire8za/status/2102777097148068137",
77 text: "Alchemy made working with Cloudflare joyful",
78 },
79 {
80 name: "joel",
81 handle: "joelhooks",
82 url: "https://x.com/joelhooks/status/2102230916164886939",
83 text: "nobody talking about the effect+alchemy+cloudflare combo to literally build f'n anything",
84 },
85 {
86 name: "Harry Solovay",
87 handle: "harrysolovay",
88 url: "https://x.com/harrysolovay/status/2081854670960488857",
89 text: "It just hit me: @alchemy_run is going to Effect-pill literally everyone who wants to ditch Wrangler. ... that's pretty magical.",
90 },
91 {
92 name: "Andrew Jefferson",
93 handle: "EastlondonDev",
94 url: "https://x.com/EastlondonDev/status/1944020116955361658",
95 text: "Alchemy is next gen infrastructure as code & it's helping us make the most of Cloudflare's global scale",
96 },
97 {
98 name: "Nipsuli",
99 handle: "Nipsuli",
100 url: "https://x.com/Nipsuli/status/2090153816289079318",
101 text: "Alchemy is freaking amazing! I've run with cloudflare workers for few years now in different projects and alchemy made the experience so freaking much better.",
102 },
103 {
104 name: "Michael Arnaldi",
105 handle: "MichaelArnaldi",
106 url: "https://x.com/MichaelArnaldi/status/2094818796204634535",
107 text: "v4 + alchemy solved most of the issues, we are now focusing on higher level design of things like Cluster on CF",
108 },
109 {
110 name: "skuse",
111 handle: "skuse_",
112 url: `${DISCORD}/1359694196830765059/1494113753766039703`,
113 text: "Man I've been here 2 days and this is such an underrated project, having my whole stack defined as code even things like stripe is a complete game changer. Define the code, dump the necessary outputs into my servers env, just works. Testing / isolating environments has become trivial whereas before I'd have to click around dashboards.",
114 source: "discord",
115 },
116 {
117 name: "carlo",
118 handle: "seitandelivery",
119 url: `${DISCORD}/1430044817211260938/1496933941410529300`,
120 text: "… I just read the v2 docs and I never thought iac could be this good 😍 seriously, this is a game changer for me. Thank you all for the hard work 🫶 alchemy will be my new obsession this year haha",
121 source: "discord",
122 },
123 {
124 name: "dan myles",
125 handle: "danmyles_",
126 url: `${DISCORD}/1502003721771679826/1550582476324216943`,
127 text: "IaC is a no brainer for anything bigger than a vibecoded saas\njust too much custom tooling required for dev stages etc on TF/pulumi\nwhy i love alchemy!",
128 source: "discord",
129 },
130 {
131 name: "artem",
132 handle: "flowisgreat",
133 url: `${DISCORD}/1424860521772875827/1424861389398479019`,
134 text: "using alchemy for conare.ai and it's awesome - thanks for the hard work!\n\nhaving all of the backend directly as code is a game changer for AI",
135 source: "discord",
136 },
137 {
138 name: "Ray",
139 handle: "xesrevinu",
140 url: `${DISCORD}/1373936446032842803/1544618939202412597`,
141 text: "Alchemy architecture is really amazing. It's really amazing work. I feel that you have made such an excellent project.",
142 source: "discord",
143 },
144 {
145 name: "Dill",
146 handle: "dillionv",
147 url: `${DISCORD}/1373936446032842803/1552394945497669753`,
148 text: "… rn use some janky pulumi / terraform deploy process and would rather just migrate it all to effect + alchemy",
149 source: "discord",
150 },
151 {
152 name: "david",
153 handle: "davidlbowman",
154 url: `${DISCORD}/1430044817211260938/1499872994082689204`,
155 text: "… what i love about alchemy-effect, is i already write 100% effect code, but quite a few of my clients are smaller, and only need a static site, some webhook handlers, maybe a workflow, and it's nice to be able to quickly create those layers. … so far, it's been great.",
156 source: "discord",
157 },
158 {
159 name: "Alessandro",
160 handle: "alessandroc00c",
161 url: `${DISCORD}/1430044817211260938/1527797668695244800`,
162 text: "… i am loving alchemy and im spinning up s***t like crazy",
163 source: "discord",
164 },
165];
166
167/** Profile photo, saved from X into public/testimonials (96px WebP). */
168const DISCORD_AVATARS: Record<string, string> = {
169 skuse_: "skuse",
170 seitandelivery: "carlo",
171 danmyles_: "danmyles",
172 flowisgreat: "artem",
173 xesrevinu: "ray",
174 dillionv: "dill",
175 davidlbowman: "david",
176 alessandroc00c: "alessandro",
177};
178export const avatar = (p: Post) =>
179 p.source === "discord"
180 ? `/testimonials/discord-${DISCORD_AVATARS[p.handle]}.webp`
181 : `/testimonials/${p.handle.toLowerCase()}.webp`;
182
183const by = (url: string) => POSTS.find((p) => p.url.endsWith(url))!;
184
185/**
186 * The wall's three columns, top to bottom. The first row is the most
187 * important voices (Rhys, Michael Arnaldi, Maxwell Brown, then Dillon
188 * Mulroy); the rest follow in rank order (strongest sentiment, most detail
189 * about Alchemy first), spread across the columns so the wall reads
190 * roughly by rank and the columns end at about the same height.
191 */
192export const WALL_COLUMNS: Post[][] = [
193 [
194 by("2102515675931799843"), // Rhys
195 by("2099771815786582351"), // Maximilian
196 by("2101946564260294900"), // Superlinear
197 by("1496933941410529300"), // carlo (Discord)
198 by("1944020116955361658"), // Andrew Jefferson
199 by("1552394945497669753"), // Dill (Discord)
200 by("1527797668695244800"), // Alessandro (Discord)
201 by("2102777097148068137"), // Alireza Najafi
202 ],
203 [
204 by("2102384731912388802"), // Michael Arnaldi, CF primitives
205 by("2081108173935522081"), // Dillon Mulroy
206 by("2102814433315578050"), // Nick Blow
207 by("2090156386353299742"), // arth
208 by("1424861389398479019"), // artem (Discord)
209 by("2090153816289079318"), // Nipsuli
210 by("2100076857638957346"), // Michael Arnaldi, DOs combo
211 by("2102230916164886939"), // joel
212 ],
213 [
214 by("2081323853171556739"), // Maxwell Brown
215 by("1494113753766039703"), // skuse (Discord)
216 by("1499872994082689204"), // david (Discord)
217 by("2081854670960488857"), // Harry Solovay
218 by("1550582476324216943"), // dan myles (Discord)
219 by("2094818796204634535"), // Michael Arnaldi, Cluster on CF
220 by("1544618939202412597"), // Ray (Discord)
221 ],
222];