Maryam Karimi · May 2026 · Web apps
maryam-karimi.com
TanStack Start, React 19, Cloudflare Workers, Prisma 7, D1, Paraglide, Playwright
The decision
No passwords, and both languages or neither. Every page ships in Persian and English, or it does not ship.
Problem
maryam-karimi.com is the studio site of my wife, an interior designer and an artist. It runs on Cloudflare Workers’ free tier, with every page in Persian and English.
What I did
TanStack Start and React 19 on Cloudflare Workers’ free tier, Prisma 7 on D1, and Paraglide for the two languages. The public side has works, workshops, a journal, about and contact. Behind it sit an account area and an admin dashboard for works, orders, workshops, the journal, the inbox, customers, analytics and settings.
Sign-in is Google, an email magic link or a passkey. Nothing else. Images go through the site’s own /api/image in the format the browser accepts, and a 32-pixel blurred copy of the same image holds the space until the full one loads.
Accessibility is tested, not hoped for: Playwright runs axe (WCAG 2 A and AA) on every public page in both languages, and the gallery grid moves with the arrow keys.
Result
Live at maryam-karimi.com. About ten days of commits in May and June 2026.