Studio composer with live reveal
Prompt, negative prompt, FLUX schnell/dev/pro, size preset and a 1-4 image count, all on one /studio screen. The generating card polls every second and reveals each image the moment fal finishes — no refresh.
A complete fal.ai image generator — a gorgeous studio and gallery that open free in the sidebar app, then meter each render by credit balance.
A credit-metered FLUX pipeline with a live render reveal — the prompt types itself, the canvas resolves out of noise, and one credit clicks off the meter. Every result is re-fetched into storage you own.
Type a prompt, pick a FLUX model and size, spend a credit per image. Every render lands in your own private R2 bucket behind a gallery you own — keys, billing and credit metering all included.
Prompt, negative prompt, FLUX schnell/dev/pro, size preset and a 1-4 image count, all on one /studio screen. The generating card polls every second and reveals each image the moment fal finishes — no refresh.
A /gallery masonry grid with likes, folders you create and rename, and a lightbox that does prev/next, copy-prompt and download. Filter by liked or collection; move images between folders.
/studio and /gallery live in the member sidebar app and open for any signed-in user — no hard paywall. Each generation spends 1 credit up front; hit zero and you're routed to top-up. If fal fails or the submit throws, the credits are refunded automatically.
Hit Remix on a gallery image and its prompt, model, seed and size load straight back into the studio. Lock the seed or randomise it.
Every image is downloaded from fal and uploaded into your private Cloudflare R2 bucket. No SDK — a plain cURL S3 Sig V4 signer in bootstrap.php.
The whole pipeline is dormant until FAL_KEY and your R2 keys are set, so the rest of the stack runs clean without it. A built-in dev mock paints gradient PNGs so you can click through the full studio and gallery before you spend a penny on fal.
Type a prompt, pick a FLUX model, spend a credit per image — and every result is re-fetched server-side and self-hosted in your private R2 before it hits the grid.
fal → your private R2 (S3 Sig V4 PUT) → presigned GET, expires in hours
Every figure here is how the pipeline actually behaves — not a sales number.
You're in one now. Hop straight to any other site type — same tab, still a demo: no card needed, no payment is real, and nothing you do is saved.
Each site-type demo is one of the seven ready-to-run profiles in the download — copy the folder, add your keys, ship.
Most SaaS dies of complexity, not competition.
| daily_hits | 100,000+ |
| cost / 10k logins | $1 |
| whole_stack / month | < $10 |
| reads_block_writes | never · WAL mode |
Every install ships with this. Search users, replay webhooks, inspect billing and revoke keys — server-rendered, access-gated, no second app.
| User | Plan | Status | Joined |
|---|---|---|---|
| ada@example.com | Pro | active | 2d ago |
| grace@example.com | Scale | active | 5d ago |
| linus@example.com | Starter | past due | 3w ago |
| margaret@example.com | Pro | active | 1mo ago |
| blocked@example.com | Free | blocked | 1mo ago |
invoice.paidevt_1Q8x…a3customer.subscription.updatedevt_1Q8w…f1checkout.session.completedevt_1Q8w…7cinvoice.payment_failedevt_1Q8v…02charge.refundedevt_1Q8u…9dcurl -H "Authorization: Bearer ss_live_••••" \ https://app.yoursaas.com/api.php?resource=notes { "ok": true, "data": [ "note_18f2", "note_18f9" ], "rate_limit": "58/60", "credits_left": 1840 }
copy a template folder
composer install · Stripe + SES
rebrand · plans · run doctor
NGINX + PHP-FPM · take cards
unzip → live on a VPS — one afternoon.
Define plans in app/subscriptions.php, attach Stripe price IDs, and the checkout flow stays generic across every project.
Default access for new users and trial accounts.
For a small paid SaaS tier.
For heavier usage and premium features.
For power users and high-credit products.
Whatever you decide — a generation, an API call, an export, a render minute. Plans grant credits; each action spends them through one ledger via consume_credits_for_action().
Your call per plan. Period credits top up to a fresh allowance each period by default, and you can switch to rollover in the plan config.
Yes — combine recurring plans that grant credits with one-time purchases for top-up packs.
Yes — parameterised SQL throughout, signed Stripe webhooks, CSRF, rate limiting and session hardening, all security-reviewed. Real plumbing, not a toy.
One small VPS runs the whole stack for a few dollars a month, and passwordless login emails on Amazon SES are about $1 per 10,000 sign-ins. Prefer Apple or Google sign-in? Both are built in with no per-login cost — Google's is free, and Apple's only needs an Apple Developer account ($99/yr) you likely already have to ship an app — so you can skip login emails entirely. No per-seat platform bills.
This is a live, fully interactive demo — explore every screen. Nothing you do is saved and no payments are real.