Skip to content

Commit 8e64f61

Browse files
committed
Add on-premises deployment blog post and banner
- Add new blog post about Reflex Build on-premises deployment - Add banner linking to on-premises blog post - Update blog image display to prevent cropping - Add images: on-prem.png, industries.png, connection.png
1 parent a8ba44c commit 8e64f61

File tree

7 files changed

+158
-24
lines changed

7 files changed

+158
-24
lines changed

assets/blog/connection.png

622 KB
Loading

assets/blog/industries.png

461 KB
Loading

assets/blog/on-prem.png

693 KB
Loading
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
author: Reflex Team
3+
date: 2025-12-05
4+
title: Reflex Build On-Prem - A Secure Builder Running in Your Environment
5+
description: Run Reflex Build on your own infrastructure with full control, security, and compliance.
6+
image: /blog/on-prem.png
7+
meta: [
8+
{
9+
"name": "keywords",
10+
"content": "
11+
on-premises deployment,
12+
self-hosted reflex,
13+
enterprise deployment,
14+
private cloud deployment,
15+
air-gapped deployment,
16+
reflex enterprise,
17+
secure app deployment,
18+
compliance-ready deployment,
19+
infrastructure control,
20+
enterprise security,
21+
data sovereignty,
22+
private infrastructure,
23+
reflex self-hosting,
24+
enterprise python apps,
25+
secure web app deployment,
26+
"
27+
},
28+
]
29+
---
30+
31+
```python exec
32+
import reflex as rx
33+
from pcweb import pages, constants
34+
from reflex_image_zoom import image_zoom
35+
```
36+
37+
For organizations with strict security, compliance, or data sovereignty requirements, building applications on your own infrastructure isn't just a preference—it's a necessity. With Reflex Enterprise, you can now run **Reflex Build**—our AI-powered app builder—on-premises or in your own private cloud, giving you complete control over your development environment while maintaining all the productivity benefits of building apps with AI.
38+
39+
## Why On-Premises Deployment?
40+
41+
Many enterprises face unique challenges that require on-premises solutions:
42+
43+
```python eval
44+
rx.el.div(
45+
image_zoom(
46+
rx.image(
47+
src="/blog/connection.png",
48+
class_name="p-2 rounded-md h-auto w-full",
49+
border=f"0.81px solid {rx.color('slate', 5)}",
50+
),
51+
class_name="rounded-md overflow-hidden",
52+
),
53+
class_name="w-full flex flex-col rounded-md cursor-pointer py-6",
54+
)
55+
```
56+
57+
### Security and Compliance
58+
59+
Organizations in regulated industries—finance, healthcare, government, and defense—often have strict requirements about where their data can reside and how applications must be secured. On-premises deployment ensures:
60+
61+
- **Data Sovereignty**: Your data never leaves your infrastructure
62+
- **Compliance**: Meet HIPAA, SOC 2, GDPR, and other regulatory requirements
63+
- **Air-Gapped Environments**: Deploy in completely isolated networks
64+
- **Custom Security Policies**: Implement your own security controls and monitoring
65+
66+
### Infrastructure Control
67+
68+
Some organizations need full control over their infrastructure:
69+
70+
- **Existing Cloud Investments**: Leverage your current AWS, Azure, or GCP infrastructure
71+
- **Custom Networking**: Integrate with your existing network architecture
72+
- **Resource Management**: Allocate resources according to your policies
73+
- **Integration Requirements**: Connect with internal systems and services
74+
75+
## What's Included
76+
77+
Reflex Enterprise on-premises deployment includes Reflex Build running securely in your environment:
78+
79+
### Infrastructure & Deployment
80+
81+
- **Complete Deployment on Your Infrastructure**: Full deployment with standard Helm charts and Docker containerization
82+
- **Fully Maintained by Reflex Team**: Automatic updates with latest security patches and features
83+
- **System Integration**: Full integration with your PostgreSQL databases and internal backend systems
84+
- **Performance Optimization**: Container lifecycle optimization and real-time state synchronization
85+
86+
### Data Sovereignty & Security
87+
88+
- **Zero PII Collection**: No Personally Identifiable Information collected
89+
- **Strict Data Confinement**: All data remains exclusively within your controlled infrastructure
90+
- **Access Control**: Data accessible only by authorized personnel, compliant with your security protocols
91+
- **SSO/SAML Integration**: Connect with your existing identity provider
92+
- **Audit Logs**: Complete audit trail of all builder activities
93+
94+
### Builder Features
95+
96+
- **AI-Powered App Building**: Build full-stack Python web apps using natural language prompts
97+
- **Private Projects**: Keep all projects private within your infrastructure
98+
- **Team Collaboration**: Manage team members and access controls
99+
- **Enterprise Integrations**: Connect with all your company's internal services, documentation, databases, and APIs
100+
- **Download App Code**: Export generated app code for full control
101+
102+
## Use Cases
103+
104+
```python eval
105+
rx.el.div(
106+
image_zoom(
107+
rx.image(
108+
src="/blog/industries.png",
109+
class_name="p-2 rounded-md h-auto w-full",
110+
border=f"0.81px solid {rx.color('slate', 5)}",
111+
),
112+
class_name="rounded-md overflow-hidden",
113+
),
114+
class_name="w-full flex flex-col rounded-md cursor-pointer py-6",
115+
)
116+
```
117+
118+
### Financial Services
119+
120+
Financial institutions need to build internal tools and customer-facing apps while ensuring all code generation and app development happens within their controlled infrastructure. Reflex Build on-premises enables secure AI-powered app building in air-gapped environments.
121+
122+
### Government and Defense
123+
124+
Organizations with strict security requirements can use Reflex Build in completely isolated networks, meeting the highest security standards while leveraging AI to build modern web applications without exposing sensitive data.
125+
126+
### Healthcare
127+
128+
Healthcare organizations can run Reflex Build on-premises to meet HIPAA requirements, ensuring all app building activities and generated code remain within their controlled infrastructure.
129+
130+
### Multi-Cloud Enterprises
131+
132+
Large enterprises can run Reflex Build inside their own AWS and Azure environments, integrating with their existing SSO, logging, and infrastructure management systems while maintaining complete control over the development process.
133+
134+
## What's Next
135+
136+
If you're interested in deploying Reflex on-premises, [book a demo]({constants.REFLEX_CLOUD_URL}) to discuss your specific requirements. Our team will work with you to design a deployment that meets your security, compliance, and infrastructure needs.
137+
138+
With Reflex Build on-premises, you get the best of both worlds: the power and productivity of AI-powered app building, with the control and security of your own infrastructure. Build full-stack Python web apps faster than ever, all while keeping your code, data, and development process completely within your controlled environment.
139+

pcweb/components/hosting_banner.py

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ def glow() -> rx.Component:
1010

1111

1212
POST_LINK = "https://www.producthunt.com/products/reflex-5?launch=reflex-7"
13+
BLOG_LINK = "/blog/2025-12-05-on-premises-deployment/"
1314

1415
# October 25, 2025 12:01 AM PDT (UTC-7) = October 25, 2025 07:01 AM UTC
1516
DEADLINE = datetime.datetime(2025, 10, 25, 7, 1, tzinfo=datetime.UTC)
@@ -28,6 +29,11 @@ def check_deadline(self):
2829
if datetime.datetime.now(datetime.UTC) < DEADLINE:
2930
self.show_banner = True
3031

32+
@rx.event
33+
def show_blog_banner(self):
34+
"""Show the on-premises blog banner."""
35+
self.show_banner = True
36+
3137
@rx.var
3238
def is_banner_visible(self) -> bool:
3339
return self.show_banner and not self.force_hide_banner
@@ -64,46 +70,35 @@ def hosting_banner() -> rx.Component:
6470
rx.box(
6571
# Header text with responsive spans
6672
rx.el.span(
67-
"Launch",
73+
"New",
6874
class_name="items-center font-medium px-1.5 h-5 rounded-md text-xs bg-violet-9 text-slate-1 z-[1] inline-flex",
6975
),
7076
rx.text(
7177
rx.el.span(
72-
"We're live on Product Hunt - ",
78+
"Reflex Build On-Prem - A secure builder running in your environment.",
7379
class_name="inline-block text-slate-12 font-semibold text-sm",
7480
),
75-
# Mobile CTA: inline on small, hidden on md+
76-
rx.el.span(
77-
" 50% ",
78-
class_name="text-slate-12 font-semibold text-sm underline decoration-slate-11",
79-
),
80-
rx.el.span(
81-
" launch",
82-
class_name="text-slate-12 font-semibold text-sm underline decoration-slate-11 hidden md:inline-block",
83-
),
84-
rx.el.span(
85-
" discount!",
86-
class_name="text-slate-12 font-semibold text-sm underline decoration-slate-11",
87-
),
8881
class_name="text-slate-12 font-semibold text-sm z-[1]",
8982
),
90-
# Standalone CTA button: hidden on small, inline on md+
91-
timer(),
83+
rx.el.span(
84+
"Learn more",
85+
class_name="text-slate-12 font-semibold text-sm underline decoration-slate-11",
86+
),
9287
class_name="flex items-center md:gap-3.5 gap-2",
9388
)
9489
),
9590
glow(),
96-
to=POST_LINK,
97-
target="_blank",
91+
to=BLOG_LINK,
92+
is_external=False,
9893
),
9994
rx.icon(
10095
"x",
10196
on_click=HostingBannerState.hide_banner,
10297
size=16,
103-
class_name="cursor-pointer hover:!text-slate-11 transition-color !text-slate-9 absolute right-4 z-10",
98+
class_name="cursor-pointer hover:!text-slate-11 transition-color !text-slate-9 absolute right-6 lg:right-4 z-10",
10499
),
105-
class_name="px-4 lg:px-6 w-screen h-[2rem] lg:h-[3.5rem] shadow-[inset_0_-1px_0_0_var(--c-slate-3)] flex items-center justify-between md:justify-center bg-slate-1 flex-row gap-4 overflow-hidden relative lg:py-0 py-2 max-w-full group",
100+
class_name="px-6 lg:px-6 w-screen min-h-[3rem] lg:h-[3.5rem] shadow-[inset_0_-1px_0_0_var(--c-slate-3)] flex items-center justify-between md:justify-center bg-slate-1 flex-row gap-4 overflow-hidden relative lg:py-0 py-3 max-w-full group",
106101
),
107102
),
108-
on_mount=HostingBannerState.check_deadline,
103+
on_mount=HostingBannerState.show_blog_banner,
109104
)

pcweb/pages/blog/blog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def first_post_card(meta: dict, path: str) -> rx.Component:
1818
alt="Image preview for blog post: " + str(meta["title"]),
1919
class_name="group-hover:scale-105 w-full h-full transition-transform duration-150 ease-out object-center object-cover",
2020
),
21-
class_name="relative flex-shrink-0 w-1/2 h-[18rem] overflow-hidden border-r border-solid border-slate-5",
21+
class_name="relative flex-shrink-0 w-2/5 h-[18rem] overflow-hidden border-r border-solid border-slate-5",
2222
),
2323
rx.box(
2424
rx.box(

pcweb/pages/blog/page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def page(document, route) -> rx.Component:
9292
src=f"{meta['image']}",
9393
alt=f"Image for blog post: {meta['title']}",
9494
loading="lazy",
95-
class_name="rounded-[1.125rem] w-auto object-cover max-w-full max-h-[25rem] aspect-[2/1]",
95+
class_name="rounded-[1.125rem] w-auto object-contain max-w-full max-h-[40rem]",
9696
),
9797
rx.box(
9898
xd.render(document, document.filename),

0 commit comments

Comments
 (0)