Carder
AI mini-site builder · Backend & infrastructure lead
carder.app ↗- Problem
- Turn one sentence into a live site with menu, hours and booking, for many businesses at once, on paid plans with AI limits.
- Why it mattered
- Billing errors cost money both ways: a lapsed plan keeping a site live, or a paying customer blocked. Heavy uploads couldn't slow everyone else down.
- 01Split the loadLaravel stays the core; media and billing run on their own paths.
- 02Ask StripeEvery publish checks the plan against Stripe, not a cached flag.
- 03Meter AIGeneration is counted per plan, so limits match what each customer pays for.
A sentence becomes a live site, with billing and AI limits enforced on every publish. One admin back office covers every tenant.
// Every publish asks Stripe, never a cached flag.
public function publish(Site $site)
{
$plan = $this->billing->activePlan($site->tenant);
abort_unless($plan?->allows('publish'), 402, 'Plan inactive');
PublishSite::dispatch($site);
}
