Skip to content

Commit c3ec9d9

Browse files
committed
updates
1 parent b83a524 commit c3ec9d9

5 files changed

Lines changed: 63 additions & 50 deletions

File tree

backend/subscription_manager.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,21 @@ class ServiceAccessConfig(BaseModel):
7171
id="trial",
7272
name="trial",
7373
display_name="Trial",
74-
price_monthly=1.00,
75-
price_yearly=52.00,
74+
price_monthly=0.00,
75+
price_yearly=0.00,
7676
features=[
77-
"7-day trial period",
77+
"30-day trial period",
7878
"Access to Open-WebUI",
7979
"Center-Deep Search",
8080
"Basic AI models",
8181
"BYOK support",
8282
"100 API calls/day"
8383
],
8484
services=[ServiceType.OPS_CENTER, ServiceType.CHAT, ServiceType.SEARCH],
85-
api_calls_limit=700, # 100/day * 7 days
85+
api_calls_limit=3000, # 100/day * 30 days
8686
byok_enabled=True,
87-
stripe_price_id="price_1SI0FHDzk9HqAZnHbUgvaidP", # Monthly
88-
stripe_annual_price_id="price_1SI0FHDzk9HqAZnHbUgvaidP" # Weekly trial only (no annual)
87+
stripe_price_id=None, # Free trial - no Stripe price needed
88+
stripe_annual_price_id=None # Free trial - no Stripe price needed
8989
),
9090
SubscriptionPlan(
9191
id="starter",
@@ -103,8 +103,8 @@ class ServiceAccessConfig(BaseModel):
103103
services=[ServiceType.OPS_CENTER, ServiceType.CHAT, ServiceType.SEARCH],
104104
api_calls_limit=1000,
105105
byok_enabled=True,
106-
stripe_price_id="price_1SI0FHDzk9HqAZnHAsMKY9tS", # Monthly
107-
stripe_annual_price_id="price_1SI0FHDzk9HqAZnHAsMKY9tS" # TODO: Create annual price in Stripe
106+
stripe_price_id="price_1T03k1HbRbwEK4CvGwvvYcSy", # Monthly $19
107+
stripe_annual_price_id="price_1T03k1HbRbwEK4CvGwvvYcSy" # TODO: Create annual price in Stripe
108108
),
109109
SubscriptionPlan(
110110
id="professional",
@@ -134,8 +134,8 @@ class ServiceAccessConfig(BaseModel):
134134
api_calls_limit=10000,
135135
byok_enabled=True,
136136
priority_support=True,
137-
stripe_price_id="price_1SI0FIDzk9HqAZnHgA63KIpk", # Monthly
138-
stripe_annual_price_id="price_1SI0FIDzk9HqAZnHgA63KIpk" # TODO: Create annual price in Stripe
137+
stripe_price_id="price_1T03k2HbRbwEK4CvdrKNsLp7", # Monthly $49
138+
stripe_annual_price_id="price_1T03k2HbRbwEK4CvdrKNsLp7" # TODO: Create annual price in Stripe
139139
),
140140
SubscriptionPlan(
141141
id="founders-friend",
@@ -168,8 +168,8 @@ class ServiceAccessConfig(BaseModel):
168168
api_calls_limit=10000,
169169
byok_enabled=True,
170170
priority_support=True,
171-
stripe_price_id="price_1SI0FIDzk9HqAZnHgA63KIpk", # Same as Professional (monthly)
172-
stripe_annual_price_id="price_1SI0FIDzk9HqAZnHgA63KIpk" # TODO: Create annual price in Stripe
171+
stripe_price_id="price_1T03k2HbRbwEK4CvJVcyf05R", # Monthly $49 (Founders Friend)
172+
stripe_annual_price_id="price_1T03k2HbRbwEK4CvJVcyf05R" # TODO: Create annual price in Stripe
173173
),
174174
SubscriptionPlan(
175175
id="enterprise",
@@ -201,8 +201,8 @@ class ServiceAccessConfig(BaseModel):
201201
byok_enabled=True,
202202
priority_support=True,
203203
team_seats=10,
204-
stripe_price_id="price_1SI0FIDzk9HqAZnHZFRzBjgP", # Monthly
205-
stripe_annual_price_id="price_1SI0FIDzk9HqAZnHZFRzBjgP" # TODO: Create annual price in Stripe
204+
stripe_price_id="price_1T03k3HbRbwEK4CvZaHAC5yJ", # Monthly $99
205+
stripe_annual_price_id="price_1T03k3HbRbwEK4CvZaHAC5yJ" # TODO: Create annual price in Stripe
206206
)
207207
]
208208

src/components/SubscriptionTierSelector.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ const defaultTiers = [
8282
features: [
8383
'100 API calls/day (700 total)',
8484
'All features',
85-
'7-day trial period',
8685
'Email support',
8786
],
8887
limits: { api_calls: 700, period: 'week' },

src/components/TierComparison.jsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,6 @@ export default function TierComparison({ currentTier = null, onSelectTier }) {
296296
>
297297
/{tier.period}
298298
</Typography>
299-
{tierCode === 'trial' && (
300-
<Typography variant="caption" display="block" color="textSecondary">
301-
7-day trial period
302-
</Typography>
303-
)}
304299
</Box>
305300

306301
{/* Description */}

src/data/tierFeatures.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ export const tierFeatures = {
1818
name: 'Trial',
1919
code: 'trial',
2020
tagline: 'Try before you buy',
21-
description: 'Explore UC-Cloud with limited features for 7 days',
21+
description: 'Explore UC-Cloud with limited features for 30 days',
2222

2323
// Pricing
24-
price: '$1.00',
24+
price: '$0.00',
2525
period: 'week',
2626
billingPeriod: 'Weekly',
2727
currency: 'USD',
28-
trialDays: 7,
28+
trialDays: 30,
2929

3030
// Visual styling
3131
color: 'info',
@@ -35,7 +35,7 @@ export const tierFeatures = {
3535

3636
// Features list (shown in UI)
3737
features: [
38-
'100 API calls per day (700 total)',
38+
'100 API calls per day (3,000 total)',
3939
'Open-WebUI chat access',
4040
'Basic AI models (GPT-3.5 equivalent)',
4141
'Community support',
@@ -55,7 +55,7 @@ export const tierFeatures = {
5555
// Quota limits
5656
limits: {
5757
api_calls_daily: 100,
58-
api_calls_total: 700,
58+
api_calls_total: 3000,
5959
models: ['gpt-3.5-turbo', 'qwen-2.5-7b'],
6060
organizations: 0,
6161
team_members: 1,

src/pages/TierComparison.jsx

Lines changed: 44 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useState, useEffect } from 'react';
22
import {
3-
Box, Grid, Card, CardContent, Typography, Button, List, ListItem,
4-
ListItemIcon, ListItemText, Chip, Paper, Divider, Container, CircularProgress
3+
Box, Card, CardContent, Typography, Button, List, ListItem,
4+
ListItemIcon, ListItemText, Chip, Paper, Divider, Container, CircularProgress, Grid
55
} from '@mui/material';
66
import { Check, Star, ArrowForward } from '@mui/icons-material';
77
import { useTheme } from '../contexts/ThemeContext';
@@ -167,11 +167,26 @@ export default function TierComparison() {
167167
</Box>
168168

169169
{/* Pricing Cards */}
170-
<Grid container spacing={3} sx={{ mb: 6 }}>
170+
<Box
171+
sx={{
172+
display: 'grid',
173+
gridTemplateColumns: {
174+
xs: '1fr',
175+
sm: 'repeat(2, 1fr)',
176+
md: `repeat(${Math.min(tiers.length, 5)}, 1fr)`
177+
},
178+
gap: 3,
179+
mb: 6,
180+
pt: 2,
181+
alignItems: 'stretch'
182+
}}
183+
>
171184
{tiers.map((tier) => (
172-
<Grid item xs={12} md={3} key={tier.name}>
185+
<Box key={tier.name} sx={{ display: 'flex', width: '100%' }}>
173186
<Card
174187
sx={{
188+
width: '100%',
189+
minHeight: 560,
175190
height: '100%',
176191
display: 'flex',
177192
flexDirection: 'column',
@@ -186,6 +201,7 @@ export default function TierComparison() {
186201
? 'linear-gradient(135deg, rgba(139, 92, 246, 0.05) 0%, rgba(168, 85, 247, 0.05) 100%)'
187202
: undefined,
188203
transition: 'all 0.3s ease',
204+
overflow: 'visible',
189205
'&:hover': {
190206
transform: 'translateY(-8px)',
191207
boxShadow: 6
@@ -224,7 +240,14 @@ export default function TierComparison() {
224240
</Box>
225241
)}
226242

227-
<CardContent sx={{ flexGrow: 1, pt: tier.popular ? 4 : 3 }}>
243+
<CardContent
244+
sx={{
245+
flexGrow: 1,
246+
pt: tier.popular ? 4 : 3,
247+
display: 'flex',
248+
flexDirection: 'column'
249+
}}
250+
>
228251
{/* Tier Name */}
229252
<Typography variant="h5" fontWeight={600} gutterBottom sx={{ color: tier.popular ? 'rgb(209, 213, 219)' : undefined }}>
230253
{tier.name}
@@ -265,8 +288,8 @@ export default function TierComparison() {
265288
<Divider sx={{ mb: 2 }} />
266289

267290
{/* Features */}
268-
<List dense>
269-
{tier.features.map((feature, idx) => (
291+
<List dense sx={{ flexGrow: 1, minHeight: 240 }}>
292+
{tier.features.slice(0, 6).map((feature, idx) => (
270293
<ListItem key={idx} disableGutters>
271294
<ListItemIcon sx={{ minWidth: 32 }}>
272295
<Check color="success" fontSize="small" />
@@ -280,23 +303,19 @@ export default function TierComparison() {
280303
/>
281304
</ListItem>
282305
))}
306+
{tier.features.length > 6 && (
307+
<ListItem disableGutters>
308+
<ListItemText
309+
primary={`+${tier.features.length - 6} more features`}
310+
primaryTypographyProps={{
311+
variant: 'caption',
312+
sx: { color: 'text.secondary', fontStyle: 'italic' }
313+
}}
314+
/>
315+
</ListItem>
316+
)}
283317
</List>
284318

285-
{/* Limitations */}
286-
{tier.limitations.length > 0 && (
287-
<>
288-
<Divider sx={{ my: 2 }} />
289-
<Typography variant="caption" sx={{ color: 'rgb(209, 213, 219)' }} display="block" gutterBottom>
290-
Limitations:
291-
</Typography>
292-
{tier.limitations.map((limitation, idx) => (
293-
<Typography key={idx} variant="caption" color="error" display="block">
294-
{limitation}
295-
</Typography>
296-
))}
297-
</>
298-
)}
299-
300319
{/* CTA Button */}
301320
<Button
302321
variant={tier.popular ? 'contained' : 'outlined'}
@@ -305,15 +324,15 @@ export default function TierComparison() {
305324
endIcon={<ArrowForward />}
306325
onClick={() => handleSelectPlan(tier)}
307326
disabled={currentTier === tier.planId || checkoutLoading}
308-
sx={{ mt: 3 }}
327+
sx={{ mt: 'auto' }}
309328
>
310329
{checkoutLoading ? 'Processing...' : currentTier === tier.planId ? 'Current Plan' : tier.cta}
311330
</Button>
312331
</CardContent>
313332
</Card>
314-
</Grid>
333+
</Box>
315334
))}
316-
</Grid>
335+
</Box>
317336

318337
{/* Feature Comparison Table */}
319338
<Paper sx={{ p: 3, mb: 4 }}>

0 commit comments

Comments
 (0)