Bento Demo

Ship an AI tool site in 30 minutes.

One backend, many sites. Multi-tenant by default. Configure it, don't code it.

Built for velocity

Every piece of the stack is tuned for speed from day one.

⚑

Cloudflare-native

Workers + D1 + R2 + KV. No servers to manage, global by default.

🌐

Multi-tenant out of the box

Row-level app_key isolation across every service. One backend serves N sites.

πŸŽ›οΈ

Config-driven

Brand, SEO, pay channels, AI providers β€” all edited from the admin UI.

πŸ’³

Stripe + credits baked in

One-time and subscription checkout, credit ledger, webhook idempotency.

πŸ€–

Drop-in AI providers

Model registry + pre-deduct-then-refund credits pattern, works with any async provider.

πŸ“

Blog & pSEO

Every language gets its own URL with real hreflang + JSON-LD β€” programmatic SEO ready.

Questions, answered

How does multi-tenancy work? β–Ύ

Every user-data table carries an app_key column and every query filters by it. One backend deployment serves all your sites; each site is a row in t_project plus its own frontend Worker bundle.

Which payment providers are supported? β–Ύ

Stripe is the default. Adding a new provider means implementing a small PaymentProvider adapter β€” the pay channel table already stores encrypted per-tenant credentials.

Can I use my own AI provider? β–Ύ

Yes. Register a new provider row + model rows in the admin UI; the async task lifecycle (pre-deduct credits β†’ create task β†’ webhook / cron sweep β†’ refund on failure) works with any provider that has a task-create + callback shape.

How is the blog indexed by search engines? β–Ύ

Each locale gets its own URL (/blog/slug and /zh/blog/slug), each with real content β€” no rewrite fallbacks. Pages emit hreflang links, Article JSON-LD, and show up in /sitemap.xml with proper alternates.

Ready to ship?

Clone the template, tweak your brand, and deploy your first AI tool site today.

Get started free