diff --git a/assets/companies/light/forem.svg b/assets/companies/light/forem.svg new file mode 100644 index 000000000..91ff52238 --- /dev/null +++ b/assets/companies/light/forem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/llnl.svg b/assets/companies/light/llnl.svg new file mode 100644 index 000000000..3364abd9d --- /dev/null +++ b/assets/companies/light/llnl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/norfolk.svg b/assets/companies/light/norfolk.svg new file mode 100644 index 000000000..dfc0ccced --- /dev/null +++ b/assets/companies/light/norfolk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/saccounty.svg b/assets/companies/light/saccounty.svg new file mode 100644 index 000000000..17442723a --- /dev/null +++ b/assets/companies/light/saccounty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/scc.svg b/assets/companies/light/scc.svg new file mode 100644 index 000000000..83e19e68e --- /dev/null +++ b/assets/companies/light/scc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/unglobalcompact.svg b/assets/companies/light/unglobalcompact.svg new file mode 100644 index 000000000..77711fbba --- /dev/null +++ b/assets/companies/light/unglobalcompact.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pcweb/components/docpage/navbar/navbar.py b/pcweb/components/docpage/navbar/navbar.py index 6cda0da5e..b05b0f25a 100644 --- a/pcweb/components/docpage/navbar/navbar.py +++ b/pcweb/components/docpage/navbar/navbar.py @@ -12,6 +12,7 @@ from pcweb.pages.framework.framework import framework from pcweb.pages.hosting.hosting import hosting_landing from pcweb.pages.use_cases.finance import finance_use_case_page +from pcweb.pages.use_cases.government import government_use_case_page from pcweb.pages.use_cases.healthcare import healthcare_use_case_page from pcweb.pages.use_cases.use_cases import use_cases_page @@ -388,6 +389,11 @@ def solutions_section(): "url": healthcare_use_case_page.path, "icon": "HealthIcon", }, + { + "label": "Government", + "url": government_use_case_page.path, + "icon": "City01Icon", + }, { "label": "Consulting", "url": use_cases_page.path, diff --git a/pcweb/pages/__init__.py b/pcweb/pages/__init__.py index e0c8a4b11..7f7f828fc 100644 --- a/pcweb/pages/__init__.py +++ b/pcweb/pages/__init__.py @@ -24,6 +24,7 @@ from .security.security import security_page as security_page from .to_be_booked import to_be_booked as to_be_booked from .use_cases.finance import finance_use_case_page as finance_use_case_page +from .use_cases.government import government_use_case_page as government_use_case_page from .use_cases.healthcare import healthcare_use_case_page as healthcare_use_case_page from .use_cases.use_cases import use_cases_page as use_cases_page diff --git a/pcweb/pages/use_cases/common/features_2.py b/pcweb/pages/use_cases/common/features_2.py index 8e4295b82..eec7fb72d 100644 --- a/pcweb/pages/use_cases/common/features_2.py +++ b/pcweb/pages/use_cases/common/features_2.py @@ -2,7 +2,14 @@ import reflex_ui as ui -def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Component: +def feature_card( + icon: str, + stat: str, + title: str, + description: str, + items: list[str] | None = None, + class_name: str = "", +) -> rx.Component: return rx.el.div( ui.icon( icon, class_name="text-m-violet-9 dark:text-m-violet-10 shrink-0 size-5" @@ -16,5 +23,17 @@ def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Compo description, class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-2", ), - class_name="flex flex-col items-start p-10", + rx.el.ul( + *[ + rx.el.li( + item, + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-1", + ) + for item in items + ], + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium list-disc list-inside mt-2", + ) + if items + else None, + class_name=ui.cn("flex flex-col items-start p-10", class_name), ) diff --git a/pcweb/pages/use_cases/government/__init__.py b/pcweb/pages/use_cases/government/__init__.py new file mode 100644 index 000000000..7377d12d3 --- /dev/null +++ b/pcweb/pages/use_cases/government/__init__.py @@ -0,0 +1,33 @@ +import reflex as rx + +from pcweb.meta.meta import meta_tags +from pcweb.pages.use_cases.government.views.faq import faq +from pcweb.pages.use_cases.government.views.features_1 import features_1 +from pcweb.pages.use_cases.government.views.features_2 import features_2 +from pcweb.pages.use_cases.government.views.final_section import final_section +from pcweb.pages.use_cases.government.views.hero import hero +from pcweb.pages.use_cases.government.views.social_proof import social_proof +from pcweb.pages.use_cases.government.views.stats import stats +from pcweb.pages.use_cases.government.views.text_section_1 import text_section_1 +from pcweb.pages.use_cases.government.views.text_section_2 import text_section_2 +from pcweb.pages.use_cases.government.views.text_section_3 import text_section_3 +from pcweb.templates.mainpage import mainpage + + +@mainpage( + path="/use-cases/government", title="Government Use Case - Reflex", meta=meta_tags +) +def government_use_case_page() -> rx.Component: + return rx.el.div( + hero(), + social_proof(), + text_section_1(), + features_1(), + text_section_2(), + features_2(), + text_section_3(), + stats(), + faq(), + final_section(), + class_name="flex flex-col size-full justify-center items-center max-w-[calc(100vw-2rem)] mx-auto", + ) diff --git a/pcweb/pages/use_cases/government/views/faq.py b/pcweb/pages/use_cases/government/views/faq.py new file mode 100644 index 000000000..c20212740 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/faq.py @@ -0,0 +1,30 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.faq import faq_section + + +def faq() -> rx.Component: + return faq_section( + [ + ( + "Is Reflex suitable for government use?", + "Yes. Reflex is already used by government agencies, public institutions, and national labs for real production systems.", + ), + ( + "Can Reflex run in restricted or air-gapped environments?", + "Yes. Reflex supports fully isolated deployments with no external internet access.", + ), + ( + "Do teams need frontend or cloud expertise?", + "No. Reflex abstracts frontend and deployment so teams can focus on Python and mission logic.", + ), + ( + "Can Reflex integrate with existing government systems?", + "Yes. Reflex runs in Python, making integration with internal databases, APIs, and legacy systems straightforward.", + ), + ( + "Can Reflex be used for AI and analytics?", + "Absolutely. Reflex supports AI assistants, analytics dashboards, and ML-powered tools — fully inside government infrastructure.", + ), + ] + ) diff --git a/pcweb/pages/use_cases/government/views/features_1.py b/pcweb/pages/use_cases/government/views/features_1.py new file mode 100644 index 000000000..e47d6147a --- /dev/null +++ b/pcweb/pages/use_cases/government/views/features_1.py @@ -0,0 +1,52 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.features_1 import feature_card + + +def features_1() -> rx.Component: + return rx.el.section( + feature_card( + "ArtificialIntelligence04Icon", + "AI App Builder for the Public Sector", + description="Build complete government applications from a prompt. Reflex AI generates Python logic, UIs, and secure data integrations — all fully editable and suitable for production use in public sector environments.", + items=[ + "Modernize legacy workflows without full rewrites", + "Turn policy ideas into real software fast", + "Support analysts, operators, and researchers with AI tools", + ], + ), + feature_card( + "ShieldEnergyIcon", + "Built for Secure, Controlled Environments", + description="Reflex is designed to run entirely inside government infrastructure, including VPCs, on-prem data centers, and air-gapped networks. Perfect for:", + items=[ + "Sensitive citizen data", + "Regulatory and compliance workflows", + "National security and research environments", + "Restricted or offline deployments", + ], + ), + feature_card( + "DashboardSpeed01Icon", + "10x Faster Than Traditional Government IT Projects", + description="Move from requirements → deployed app in weeks instead of years. Reflex removes frontend and infrastructure bottlenecks so small teams can ship meaningful systems quickly.", + items=[ + "No React", + "No fragile prototypes", + "No rebuilds after pilots", + ], + ), + feature_card( + "DatabaseIcon", + "Designed for Data-Heavy Government Work", + description="Reflex being in Pure Python makes it easy to integrate with existing public sector systems:", + items=[ + "Internal databases and data warehouses", + "Case management and registry systems", + "Geospatial and census datasets", + "Research, modeling, and simulation pipelines", + "Secure APIs and document repositories", + ], + ), + class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-l border-slate-3 relative overflow-hidden border-t", + ) diff --git a/pcweb/pages/use_cases/government/views/features_2.py b/pcweb/pages/use_cases/government/views/features_2.py new file mode 100644 index 000000000..c6f674731 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/features_2.py @@ -0,0 +1,59 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.features_2 import feature_card + + +def features_2() -> rx.Component: + return rx.el.section( + feature_card( + "WebDesign01Icon", + "Internal Government Dashboards", + "Track & Monitor Programs", + "Gain real-time visibility into program effectiveness, resource allocation, and service delivery with customizable dashboards.", + items=[ + "Program performance dashboards", + "Budgeting and spend oversight tools", + "Policy impact analysis", + "Operations and service delivery tracking", + ], + class_name="lg:border-b", + ), + feature_card( + "ArtificialIntelligence04Icon", + "AI Assistants for Public Servants", + "Empower Your Teams", + "Equip your workforce with AI-powered tools to navigate complex regulations and enhance decision-making.", + items=[ + "RAG chatbots over legislation and regulations", + "Internal knowledge assistants", + "Caseworker and analyst copilots", + "Research and document analysis tools", + ], + class_name="lg:border-b", + ), + feature_card( + "FlowConnectionIcon", + "Case, Permit & Workflow Systems", + "Streamline Operations", + "Modernize administrative processes with tailored applications that reduce bottlenecks and improve transparency.", + items=[ + "Case management tools", + "Review and approval workflows", + "Compliance and inspection apps", + "Grant and funding administration systems", + ], + ), + feature_card( + "TestTube02Icon", + "Research & National Lab Applications", + "Support Scientific Work", + "Accelerate scientific discovery with purpose-built tools for data analysis, collaboration, and secure research environments.", + items=[ + "Scientific data visualization", + "Experiment tracking and analysis", + "Secure model exploration tools", + "Internal research portals", + ], + ), + class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 relative overflow-hidden border-t lg:divide-x divide-slate-3 max-lg:divide-y lg:border-b", + ) diff --git a/pcweb/pages/use_cases/government/views/final_section.py b/pcweb/pages/use_cases/government/views/final_section.py new file mode 100644 index 000000000..ed0391969 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/final_section.py @@ -0,0 +1,20 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.final_section import left_content, right_content + + +def final_section() -> rx.Component: + return rx.el.section( + rx.el.div( + left_content( + "Modernize Government Software — Without Compromising Security", + "Turn policies, programs, and research into secure, AI-powered applications with Reflex.", + ), + right_content( + "Build Your First Government App", + "Connect your data source, and ship a secure internal tool in weeks — entirely within your infrastructure, no JavaScript required.", + ), + class_name="flex xl:flex-row flex-col w-full rounded-2xl border border-m-slate-4 dark:border-m-slate-12 bg-white-1 dark:bg-m-slate-14 z-5 xl:divide-x divide-slate-3 max-xl:divide-y", + ), + class_name="mx-auto w-full max-w-[71.125rem] relative rounded-4xl border border-slate-4 backdrop-blur-[6px] bg-slate-2/48 p-4 flex z-1 max-lg:mb-6 -mb-px", + ) diff --git a/pcweb/pages/use_cases/government/views/hero.py b/pcweb/pages/use_cases/government/views/hero.py new file mode 100644 index 000000000..c0513e026 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/hero.py @@ -0,0 +1,44 @@ +import reflex as rx + +from pcweb.components.numbers_pattern import numbers_pattern +from pcweb.pages.use_cases.common.hero import left_content, right_content + + +def hero() -> rx.Component: + return rx.el.section( + numbers_pattern( + side="right", + class_name="lg:top-[65px] top-[45px] lg:h-[calc(100%-65px)] h-[calc(100%-45px)] max-lg:hidden", + ), + rx.el.div( + left_content( + "Build Secure Government Apps —", + " 10x Faster with Reflex AI", + "The fastest way for government teams to build secure internal tools, dashboards, and AI-powered workflows using only Python. Designed for public sector constraints: security-first, auditable, and deployable entirely within government-controlled infrastructure.", + "Book a Demo", + "Get Started Free", + ), + right_content( + [ + ( + "ShieldEnergyIcon", + "Deploy entirely on-premises, in your VPC, or in air-gapped networks", + ), + ( + "DashboardSpeed01Icon", + "Build production-grade apps 10x faster using only Python", + ), + ( + "LockIcon", + "Maintain full security, compliance, and audit control at all times", + ), + ( + "DatabaseIcon", + "Keep all data within government-controlled infrastructure—nothing leaves your environment", + ), + ], + ), + class_name="flex lg:flex-row flex-col lg:gap-20 gap-10 max-lg:items-center max-lg:justify-center max-lg:text-center", + ), + class_name="flex flex-col justify-center items-center gap-4 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 pb-[3rem] pt-32 lg:pt-[11.5rem] lg:pb-[7.5rem] relative lg:overflow-hidden overflow-hidden z-[1] lg:px-10", + ) diff --git a/pcweb/pages/use_cases/government/views/social_proof.py b/pcweb/pages/use_cases/government/views/social_proof.py new file mode 100644 index 000000000..9f6598767 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/social_proof.py @@ -0,0 +1,37 @@ +import reflex as rx +import reflex_ui as ui + +from pcweb.pages.use_cases.common.logos_carousel import logos_carousel + +LOGOS = [ + "scc", + "forem", + "saccounty", + "unglobalcompact", + "llnl", + "norfolk", +] + + +def first_card(title: str) -> rx.Component: + return rx.el.div( + ui.icon( + "CheckmarkBadge02Icon", + class_name="text-m-slate-11 dark:text-m-slate-9 shrink-0", + ), + rx.el.span( + title, + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium text-wrap", + ), + class_name="flex flex-row gap-2.5 items-center max-lg:justify-center lg:col-span-2 px-10 h-full max-lg:h-[10.75rem] max-lg:w-full w-full lg:border-r", + ) + + +def social_proof() -> rx.Component: + return rx.el.div( + first_card( + "Government agencies use Reflex to modernize mission-critical systems faster—without compromising security or control." + ), + logos_carousel(LOGOS), + class_name="flex lg:flex-row flex-col justify-center items-center mx-auto w-full max-w-[64.19rem] lg:border border-slate-3 h-[10.75rem] z-1", + ) diff --git a/pcweb/pages/use_cases/government/views/stats.py b/pcweb/pages/use_cases/government/views/stats.py new file mode 100644 index 000000000..0ea9e8fd5 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/stats.py @@ -0,0 +1,39 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.stats import stat_card + + +def stats() -> rx.Component: + return rx.el.section( + stat_card( + "Deploy on-prem, VPC, or air-gapped", + "Run Reflex entirely within your controlled infrastructure with complete offline operation capabilities.", + accent=True, + ), + stat_card( + "No data leaves government infrastructure", + "All application data, user information, and processing remain within your secure environment at all times.", + accent=True, + ), + stat_card( + "Role-based access control & identity integration", + "Integrate with existing identity providers and enforce granular permissions with SSO and SAML support.", + accent=True, + ), + stat_card( + "Full auditability and observability", + "Complete audit logging of all user actions, data access, and system events for compliance and security reviews.", + accent=True, + ), + stat_card( + "FedRAMP and SOC 2-aligned", + "Architecture designed to meet federal security requirements and enterprise compliance standards.", + accent=True, + ), + stat_card( + "Compatible with public sector security models", + "Works with government-specific security and compliance requirements.", + accent=True, + ), + class_name="grid lg:grid-cols-3 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 relative overflow-hidden border-t lg:divide-x divide-slate-3 max-lg:divide-y", + ) diff --git a/pcweb/pages/use_cases/government/views/text_section_1.py b/pcweb/pages/use_cases/government/views/text_section_1.py new file mode 100644 index 000000000..32a9d0eb5 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/text_section_1.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_1() -> rx.Component: + return text_section( + header="Why Government Teams Choose Reflex", + description="Reflex powers mission-critical internal applications used by public servants, analysts, and researchers. Government organizations choose Reflex to modernize systems faster — without compromising security or control.", + class_name="border-t-0", + ) diff --git a/pcweb/pages/use_cases/government/views/text_section_2.py b/pcweb/pages/use_cases/government/views/text_section_2.py new file mode 100644 index 000000000..0459d811f --- /dev/null +++ b/pcweb/pages/use_cases/government/views/text_section_2.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_2() -> rx.Component: + return text_section( + header="What Governments Build with Reflex", + description="Public sector organizations use Reflex to create secure, purpose-built applications with AI.", + class_name="border-t-0", + ) diff --git a/pcweb/pages/use_cases/government/views/text_section_3.py b/pcweb/pages/use_cases/government/views/text_section_3.py new file mode 100644 index 000000000..e8225edd8 --- /dev/null +++ b/pcweb/pages/use_cases/government/views/text_section_3.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_3() -> rx.Component: + return text_section( + header="Built for Government Security & Compliance", + description="Reflex is purpose-built for regulated, high-assurance environments. Reflex does not access, transmit, or store government data. Agencies maintain full ownership and control at all times.", + class_name="border-t-0", + )