-- ============================================ -- TEMPLATE-SAAS: Production Seeds - Plans -- Version: 1.0.0 -- ============================================ -- Default pricing plans INSERT INTO plans.plans (id, name, slug, description, tagline, price_monthly, price_yearly, trial_days, is_popular, sort_order, features, limits, included_features) VALUES -- Free Plan ( 'a0000000-0000-0000-0000-000000000001', 'Free', 'free', 'Perfect for trying out the platform', 'Get started for free', 0.00, 0.00, 0, -- No trial needed FALSE, 1, '[ {"name": "Users", "value": "1", "highlight": false}, {"name": "Storage", "value": "100MB", "highlight": false}, {"name": "API Calls", "value": "1,000/mo", "highlight": false}, {"name": "Email Support", "value": true, "highlight": false} ]'::jsonb, '{ "max_users": 1, "max_storage_mb": 100, "max_api_calls_month": 1000, "max_projects": 1 }'::jsonb, '["basic_features"]'::jsonb ), -- Starter Plan ( 'a0000000-0000-0000-0000-000000000002', 'Starter', 'starter', 'Great for small teams getting started', 'Best for small teams', 29.00, 290.00, -- ~17% discount 14, FALSE, 2, '[ {"name": "Users", "value": "5", "highlight": true}, {"name": "Storage", "value": "5GB", "highlight": false}, {"name": "API Calls", "value": "10,000/mo", "highlight": false}, {"name": "Email Support", "value": true, "highlight": false}, {"name": "Basic Analytics", "value": true, "highlight": false} ]'::jsonb, '{ "max_users": 5, "max_storage_mb": 5120, "max_api_calls_month": 10000, "max_projects": 5 }'::jsonb, '["basic_features", "analytics_basic"]'::jsonb ), -- Pro Plan ( 'a0000000-0000-0000-0000-000000000003', 'Pro', 'pro', 'For growing teams that need more power', 'Most popular', 79.00, 790.00, -- ~17% discount 14, TRUE, -- Popular 3, '[ {"name": "Users", "value": "25", "highlight": true}, {"name": "Storage", "value": "50GB", "highlight": true}, {"name": "API Calls", "value": "100,000/mo", "highlight": false}, {"name": "Priority Support", "value": true, "highlight": true}, {"name": "Advanced Analytics", "value": true, "highlight": false}, {"name": "API Access", "value": true, "highlight": false}, {"name": "Custom Integrations", "value": true, "highlight": false} ]'::jsonb, '{ "max_users": 25, "max_storage_mb": 51200, "max_api_calls_month": 100000, "max_projects": 25 }'::jsonb, '["basic_features", "analytics_basic", "analytics_advanced", "api_access", "integrations"]'::jsonb ), -- Enterprise Plan ( 'a0000000-0000-0000-0000-000000000004', 'Enterprise', 'enterprise', 'For large organizations with custom needs', 'Contact sales', NULL, -- Custom pricing NULL, 30, FALSE, 4, '[ {"name": "Users", "value": "Unlimited", "highlight": true}, {"name": "Storage", "value": "Unlimited", "highlight": true}, {"name": "API Calls", "value": "Unlimited", "highlight": true}, {"name": "Dedicated Support", "value": true, "highlight": true}, {"name": "SLA", "value": "99.9%", "highlight": true}, {"name": "Custom Development", "value": true, "highlight": false}, {"name": "On-premise Option", "value": true, "highlight": false} ]'::jsonb, '{ "max_users": -1, "max_storage_mb": -1, "max_api_calls_month": -1, "max_projects": -1 }'::jsonb, '["basic_features", "analytics_basic", "analytics_advanced", "api_access", "integrations", "sso", "audit_logs_extended", "custom_development"]'::jsonb ) ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description, price_monthly = EXCLUDED.price_monthly, price_yearly = EXCLUDED.price_yearly, features = EXCLUDED.features, limits = EXCLUDED.limits, updated_at = NOW(); -- Plan features detailed (optional) INSERT INTO plans.plan_features (plan_id, feature_code, feature_name, category, value_type, value_number, display_value, sort_order) VALUES -- Free plan features ('a0000000-0000-0000-0000-000000000001', 'max_users', 'Maximum Users', 'limits', 'number', 1, '1 user', 1), ('a0000000-0000-0000-0000-000000000001', 'storage', 'Storage', 'limits', 'number', 100, '100 MB', 2), -- Starter plan features ('a0000000-0000-0000-0000-000000000002', 'max_users', 'Maximum Users', 'limits', 'number', 5, '5 users', 1), ('a0000000-0000-0000-0000-000000000002', 'storage', 'Storage', 'limits', 'number', 5120, '5 GB', 2), -- Pro plan features ('a0000000-0000-0000-0000-000000000003', 'max_users', 'Maximum Users', 'limits', 'number', 25, '25 users', 1), ('a0000000-0000-0000-0000-000000000003', 'storage', 'Storage', 'limits', 'number', 51200, '50 GB', 2), -- Enterprise plan features ('a0000000-0000-0000-0000-000000000004', 'max_users', 'Maximum Users', 'limits', 'number', -1, 'Unlimited', 1), ('a0000000-0000-0000-0000-000000000004', 'storage', 'Storage', 'limits', 'number', -1, 'Unlimited', 2) ON CONFLICT (plan_id, feature_code) DO NOTHING; -- Comments COMMENT ON TABLE plans.plans IS 'Default SaaS pricing plans';