Skip to content

Commit 9e884a7

Browse files
Tom GotsmanTom Gotsman
authored andcommitted
update pricing with latest AI changes
1 parent 66e3b36 commit 9e884a7

File tree

3 files changed

+104
-71
lines changed

3 files changed

+104
-71
lines changed

pcweb/pages/pricing/plan_cards.py

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,14 @@ def plan_cards() -> rx.Component:
247247
"Hobby",
248248
"Everything you need to get started.",
249249
[
250-
("heart-handshake", "Community support"),
250+
("brain", "AI App Builder (Limited Access)"),
251251
(
252252
"app-window",
253-
"Unlimited apps",
253+
"Reflex Cloud Unlimited Apps",
254254
"Free users are limited to 20 hours of 1 vCPU, 1 GB RAM machines per month.",
255255
),
256-
("clock", "1 day log retention"),
257-
("code", "Open Source Framework"),
258-
("file-code", "Starter Templates"),
256+
("code", "Full access to Reflex Open Source Library"),
257+
("heart-handshake", "Community support on Discord/Github")
259258
],
260259
"Start building for free",
261260
price="Free",
@@ -265,18 +264,12 @@ def plan_cards() -> rx.Component:
265264
"Pro",
266265
"For professional projects and startups.",
267266
[
268-
("heart-handshake", "Priority Community support"),
269-
("users", "1 seat incl. (additional seats at $20/mo)"),
270-
("credit-card", "$10 / month free compute credits"),
271-
("server", "Customize machine sizes"),
272-
("clock", "30 days log retention"),
273-
("globe", "Multi-region"),
267+
# ("heart-handshake", "Priority Community support"),
268+
("brain", "AI App Builder (Free $20 credits / month)"),
269+
("circle-dollar-sign", "Purchase Extra AI Credits"),
270+
("credit-card", "Reflex Cloud (Free $10 credits / month)"),
271+
("server", "Customize hosting machine sizes"),
274272
("brush", "Custom domains"),
275-
(
276-
"file-badge",
277-
"Remove Branding",
278-
"Check out the Reflex Branding doc page to learn how to remove the 'Built with Reflex' badge from your app.",
279-
),
280273
("circle-plus", "Everything in Hobby"),
281274
],
282275
"Start with Pro plan",
@@ -286,34 +279,27 @@ def plan_cards() -> rx.Component:
286279
"Team",
287280
"For teams looking to scale their applications.",
288281
[
289-
("mail", "Email/Slack support"),
290-
("users", "5 seat incl. (additional seats available)"),
291-
("credit-card", "Monthly free compute credits"),
292-
("git-branch", "Create multiple projects"),
293-
("signal", "Full Website Analytics"),
282+
("users", "Invite your team mates"),
283+
("cable", "Connect AI Builder to your Data", "Integrations include Databricks, Snowflake, etc."),
294284
("lock-keyhole", "One Click Auth"),
295-
(
296-
"file-badge",
297-
"Remove Branding Everywhere",
298-
"Check out the Remove Reflex Branding section in the Self Hosting doc page to learn how to remove the 'Built with Reflex' badge from your app.",
299-
),
285+
("file-badge", "AG Grid with no Reflex Branding"),
286+
("mail", "Email support"),
300287
("circle-plus", "Everything in Pro"),
301288
],
302289
"Contact sales",
290+
price="$49/user/mo + compute",
303291
redirect_url=REFLEX_DEV_WEB_LANDING_FORM_URL_GET_DEMO,
304292
),
305293
card(
306294
"Enterprise",
307295
"Get a plan tailored to your business needs.",
308296
[
309-
("headset", "Dedicated Support"),
310-
("users", "Customized seat amount"),
297+
("hand-helping", "White Glove Onboarding"),
311298
("user-round-plus", "Personalized integration help"),
312299
("hard-drive", "On Premise Deployment"),
313-
("clock", "Unlimited log retention"),
314-
("activity", "Error Monitoring and Observability"),
300+
("key", "Bring your own AI API keys"),
301+
("headset", "Priority Support"),
315302
("git-pull-request", "Influence Reflex Roadmap"),
316-
("shield-check", "Audit logs, SSO, SOC2 Reports"),
317303
("circle-plus", "Everything in Team"),
318304
],
319305
"Contact sales",

pcweb/pages/pricing/pricing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from pcweb.pages.index.views.footer_index import footer_index
55
from pcweb.pages.pricing.header import header
66
from pcweb.pages.pricing.plan_cards import plan_cards
7-
from pcweb.pages.pricing.table import comparison_table_hosting, comparison_table_oss
7+
from pcweb.pages.pricing.table import comparison_table_hosting, comparison_table_ai_and_oss
88
from pcweb.pages.pricing.faq import faq
99
from pcweb.pages.pricing.calculator import calculator_section
1010
from pcweb.meta.meta import hosting_meta_tags
@@ -25,8 +25,8 @@ def pricing() -> rx.Component:
2525
header(),
2626
plan_cards(),
2727
calculator_section(),
28+
comparison_table_ai_and_oss(),
2829
comparison_table_hosting(),
29-
comparison_table_oss(),
3030
faq(),
3131
class_name="flex flex-col relative justify-center items-center w-full",
3232
),

pcweb/pages/pricing/table.py

Lines changed: 85 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,49 +33,76 @@
3333
}
3434
"""
3535

36+
PRICE_SECTION = [
37+
("Per Seat Price", "FREE", "$20/month", "$49/user/month", "Custom"),
38+
("Team Size", "1", "1", "< 25", "Unlimited"),
39+
]
40+
3641
FRAMEWORK_SECTION = [
3742
("Open Source Framework", True, True, True, True),
43+
("AG Grid *", True, True, True, True),
3844
("One Click Auth", False, False, True, True),
39-
("Embed Reflex Apps", False, False, True, True),
45+
("Single Port Deploy", False, False, True, True),
46+
("HTTP Fallback for Websockets", False, False, True, True),
47+
("Custom NPM Registry", False, False, True, True),
4048
]
4149

42-
REFLEX_BRANDING_SECTION = [
43-
("Remove Branding", "", "On Cloud", "Everywhere*", "Everywhere*"),
50+
AI_TEXT_SECTION = [
51+
("AI App Building", "Limited Access", "$20 credits/month", "$40 credits/user/month", "Custom"),
4452
]
4553

46-
REFLEX_AI_SECTION = []
54+
AI_BOOLEAN_SECTION = [
55+
("Purchase Extra AI Credits", False, True, True, True),
56+
("One Click Cloud Deploy", True, True, True, True),
57+
("Github Integration", True, True, True, True),
58+
("Database Integration", True, True, True, True),
59+
("Secrets Integration", True, True, True, True),
60+
("Web IDE", True, True, True, True),
61+
("Private Apps", False, True, True, True),
62+
("Connect AI Builder to your Data Sources", False, False, True, True),
63+
("Bring your own API Keys", False, False, False, True),
64+
]
65+
66+
67+
4768

4869
HOSTING_TEXT_SECTION = [
70+
("Compute", "20 hours/month", "$10 credits/month + Usage", "$20 credits/user/month + Usage", "Custom"),
4971
("Regions", "Single", "Multiple", "Multiple", "Multiple"),
50-
("Logs", "1 day", "30 days", "90 days", "Custom"),
72+
("Build Logs", "1 day", "30 days", "90 days", "Custom"),
73+
("Runtime Logs", "1 hour", "1 day", "1 week", "Custom"),
5174
]
5275

5376
HOSTING_BOOLEAN_SECTION = [
77+
("CPU / Memory Metrics", True, True, True, True),
5478
("CLI Deployments", True, True, True, True),
5579
("CI/CD Deploy Tokens", True, True, True, True),
5680
("Set Billing Limits", True, True, True, True),
5781
("Custom Domains", False, True, True, True),
5882
("Secret Manager", False, True, True, True),
59-
("App Analytics", False, True, True, True),
60-
("On Prem Hosting", False, False, False, True),
83+
("User Analytics", False, False, True, True),
84+
("Custom Alerts", False, False, True, True),
85+
("Rollbacks", False, False, True, True),
86+
("Audit Log", False, False, True, True),
87+
("On Prem Deployments", False, False, False, True),
6188
]
6289

6390
SECURITY_SECTION = [
6491
("Web App Firewall", True, True, True, True),
6592
("HTTP/SSL", True, True, True, True),
6693
("DDos Protection", True, True, True, True),
67-
("2 Factor Auth", True, True, True, True),
68-
("Audit Logs", False, False, False, True),
94+
("Automatic CI/CD", False, True, True, True),
95+
("Security Audit Reports", False, False, True, True),
6996
("SSO", False, False, False, True),
7097
]
7198

7299
SUPPORT_TEXT_SECTION = [
73-
("Support", "Community", "Community", "Email/Slack", "Dedicated Support")
100+
("Support", "Community", "Community", "Email Support", "Dedicated Support")
74101
]
75102

76103
SUPPORT_BOOLEAN_SECTION = [
104+
("White Glove Onboarding", False, False, False, True),
77105
("SLAs Available", False, False, False, True),
78-
("Personalized Onboarding", False, False, False, True),
79106
("", "", "", "", ""),
80107
]
81108

@@ -88,7 +115,7 @@
88115

89116
ASTERIX_SECTION = [
90117
(
91-
"* Everywhere: This includes removing the 'Built with Reflex' badge for self hosted apps.",
118+
"* AG Grid comes with a 'Built with Reflex' badge for Hobby and Pro tier.",
92119
"",
93120
"",
94121
"",
@@ -194,34 +221,72 @@ def create_checkmark_row(feature: str, checks: tuple[bool, ...]) -> rx.Component
194221
return create_table_row(cells)
195222

196223

197-
def header_hosting() -> rx.Component:
224+
225+
226+
def header_oss() -> rx.Component:
198227
return rx.box(
199228
rx.el.h3(
200-
"Secure and Scalable Hosting",
229+
"Supercharged Features to Build Faster",
201230
class_name="text-slate-12 text-3xl font-semibold text-center",
202231
),
203232
rx.el.p(
204-
"Compare features across plans.",
233+
"Premium Features to help you get the most out of Reflex",
205234
class_name="text-slate-9 text-2xl font-semibold text-center",
206235
),
207236
class_name="flex items-center justify-between text-slate-11 flex-col py-[5rem] 2xl:border-x border-slate-4 max-w-[64.19rem] mx-auto w-full",
208237
)
209238

239+
def table_body_oss() -> rx.Component:
240+
return rx.table.root(
241+
rx.table.header(
242+
create_table_row_header("Pricing"),
243+
class_name="relative",
244+
),
245+
create_table_body(
246+
*[create_table_row(row) for row in PRICE_SECTION],
247+
),
248+
rx.table.header(
249+
create_table_row_header("AI"),
250+
class_name="relative",
251+
),
252+
create_table_body(
253+
*[create_table_row(row) for row in AI_TEXT_SECTION],
254+
*[
255+
create_checkmark_row(feature, checks)
256+
for feature, *checks in AI_BOOLEAN_SECTION
257+
],
258+
),
259+
rx.table.header(
260+
create_table_row_header("Reflex Enterprise"),
261+
class_name="relative",
262+
),
263+
create_table_body(
264+
*[
265+
create_checkmark_row(feature, checks)
266+
for feature, *checks in FRAMEWORK_SECTION
267+
],
268+
),
269+
create_table_body(
270+
*[create_table_row(row) for row in ASTERIX_SECTION],
271+
),
272+
class_name="w-full overflow-x-auto max-w-[69.125rem] -mt-[2rem]",
273+
)
274+
210275

211-
def header_oss() -> rx.Component:
276+
277+
def header_hosting() -> rx.Component:
212278
return rx.box(
213279
rx.el.h3(
214-
"Supercharged Features to Build Faster",
280+
"Secure and Scalable Hosting",
215281
class_name="text-slate-12 text-3xl font-semibold text-center",
216282
),
217283
rx.el.p(
218-
"Premium Features to help you get the most out of Reflex",
284+
"Compare features across plans.",
219285
class_name="text-slate-9 text-2xl font-semibold text-center",
220286
),
221287
class_name="flex items-center justify-between text-slate-11 flex-col py-[5rem] 2xl:border-x border-slate-4 max-w-[64.19rem] mx-auto w-full",
222288
)
223289

224-
225290
def table_body_hosting() -> rx.Component:
226291
return rx.table.root(
227292
rx.el.style(TABLE_STYLE),
@@ -262,24 +327,6 @@ def table_body_hosting() -> rx.Component:
262327
)
263328

264329

265-
def table_body_oss() -> rx.Component:
266-
return rx.table.root(
267-
rx.table.header(
268-
create_table_row_header("Framework"),
269-
class_name="relative",
270-
),
271-
create_table_body(
272-
*[
273-
create_checkmark_row(feature, checks)
274-
for feature, *checks in FRAMEWORK_SECTION
275-
],
276-
*[create_table_row(row) for row in REFLEX_BRANDING_SECTION],
277-
),
278-
create_table_body(
279-
*[create_table_row(row) for row in ASTERIX_SECTION],
280-
),
281-
class_name="w-full overflow-x-auto max-w-[69.125rem] -mt-[2rem]",
282-
)
283330

284331

285332
def comparison_table_hosting() -> rx.Component:
@@ -290,7 +337,7 @@ def comparison_table_hosting() -> rx.Component:
290337
)
291338

292339

293-
def comparison_table_oss() -> rx.Component:
340+
def comparison_table_ai_and_oss() -> rx.Component:
294341
return rx.box(
295342
header_oss(),
296343
table_body_oss(),

0 commit comments

Comments
 (0)