A Cloudflare stack with no fixed costs for a cross-border shop
arukutomaru runs on an architecture that is billed for nothing beyond Cloudflare usage and Stripe’s payment fees. It carries a few dozen products and low traffic.
Who does what
| Layer | Choice | Why |
|---|---|---|
| Storefront | Astro (static) with React | Product pages ship as finished HTML |
| Admin | Vite and React (SPA) | Internal only, not indexed. Protected by Cloudflare Access |
| API | Hono on Cloudflare Workers | Billed per request; an idle hour costs nothing |
| Database | Cloudflare D1 (SQLite) | Enough at this size, with no dedicated instance |
| Images | Cloudflare R2 | Egress is free |
| Payments | Stripe | No monthly fee, only the payment fees |
Every line is usage-based, so a month with no sales bills close to zero.
Static pages and an SPA
Pages meant for search engines (products, articles, landing pages) are generated statically; pages only a signed-in person sees (admin, account area) are an SPA. A statically generated product page reaches a crawler as finished HTML without waiting for JavaScript, and it is served from a CDN edge, so first paint is fast from far away.
Sharing types between the API and the front end
The API is REST, but the front end calls it through Hono’s typed RPC client (hc<AppType>).
As long as handlers are written as a method chain, the API’s types reach the front end, and a
changed endpoint fails the build.
Nami Smart LLC
Fast, cost-efficient, high-quality app development. If you would like to talk about a project, please get in touch.