- Add add-ons step to plan creation wizard (step 4 of 5) - Remove redundant business_tier field from both billing systems: - commerce.billing.PlanVersion (new system) - platform.admin.SubscriptionPlan (legacy system) - Move billing app from commerce.billing to top-level smoothschedule.billing - Create BillingManagement page at /platform/billing with sidebar link - Update plan matching logic to use plan.name instead of business_tier Frontend: - Add BillingManagement.tsx page - Add BillingPlansTab.tsx with unified plan wizard - Add useBillingAdmin.ts hooks - Update TenantInviteModal, BusinessEditModal, BillingSettings to use plan.name - Remove business_tier from usePlatformSettings, payments.ts types Backend: - Move billing app to smoothschedule/billing/ - Add migrations 0006-0009 for plan version settings, feature seeding, business_tier removal - Add platform_admin migration 0013 to remove business_tier - Update seed_subscription_plans command - Update tasks.py to map tier by plan name 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.