diff --git a/blog/2025-12-05-on-premises-deployment.md b/blog/2025-12-05-on-premises-deployment.md index 3d0fd3fc2..49b12a531 100644 --- a/blog/2025-12-05-on-premises-deployment.md +++ b/blog/2025-12-05-on-premises-deployment.md @@ -33,7 +33,7 @@ import reflex as rx import reflex_ui as ui from pcweb import pages, constants from reflex_image_zoom import image_zoom -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog ``` 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. You can securely hook up with all your company data sources, internal services, documentation, databases, and APIs—all within your own infrastructure. @@ -150,11 +150,12 @@ If you're interested in deploying Reflex on-premises, book a demo to discuss you ```python eval rx.el.div( - ui.button( - "Book a Demo", - variant="primary", - class_name="font-semibold", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + "Book a Demo", + variant="primary", + class_name="font-semibold", + ), ), class_name="flex justify-center items-center my-8", ) diff --git a/pcweb/components/docpage/navbar/navbar.py b/pcweb/components/docpage/navbar/navbar.py index 44015e63f..a439f2138 100644 --- a/pcweb/components/docpage/navbar/navbar.py +++ b/pcweb/components/docpage/navbar/navbar.py @@ -2,7 +2,7 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.constants import REFLEX_BUILD_URL, REFLEX_CLOUD_URL from pcweb.pages.blog import blogs @@ -741,12 +741,13 @@ def new_component_section() -> rx.Component: class_name="desktop-only", ), ui.navigation_menu.item( - render_=ui.button( - "Book a Demo", - size="sm", - variant="primary", - custom_attrs=get_cal_attrs(), - class_name="font-semibold whitespace-nowrap max-xl:hidden", + demo_form_dialog( + trigger=ui.button( + "Book a Demo", + size="sm", + variant="primary", + class_name="font-semibold whitespace-nowrap max-xl:hidden", + ), ), unstyled=True, class_name="xl:flex hidden", diff --git a/pcweb/constants.py b/pcweb/constants.py index 80f9745d9..8ec69e904 100644 --- a/pcweb/constants.py +++ b/pcweb/constants.py @@ -99,9 +99,6 @@ REFLEX_DOMAIN = "reflex.dev" TWITTER_CREATOR = "@getreflex" -# Posthog -POSTHOG_API_KEY = os.getenv("POSTHOG_API_KEY") - SLACK_DEMO_WEBHOOK_URL: str = os.environ.get("SLACK_DEMO_WEBHOOK_URL") # Enable free tier flag diff --git a/pcweb/pages/databricks/views/video.py b/pcweb/pages/databricks/views/video.py index cb4d867be..e4e356f39 100644 --- a/pcweb/pages/databricks/views/video.py +++ b/pcweb/pages/databricks/views/video.py @@ -1,6 +1,6 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog VIDEO_URL = "https://youtu.be/Hy3uhBVRdtk?si=Z5szIyInkBfeG2lk&t=92s" @@ -37,11 +37,12 @@ def text() -> rx.Component: ), class_name="text-slate-12 lg:text-3xl text-2xl font-semibold max-w-[57rem]", ), - ui.button( - "Get Personalized Walkthrough", - size="lg", - class_name="w-fit font-semibold mr-auto rounded-[0.625rem]", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + "Get Personalized Walkthrough", + size="lg", + class_name="w-fit font-semibold mr-auto rounded-[0.625rem]", + ), ), class_name="flex flex-col gap-6 items-start justify-center lg:py-20 py-8 px-10", ) diff --git a/pcweb/pages/demo/header.py b/pcweb/pages/demo/header.py index 36194ed16..618cf5f0c 100644 --- a/pcweb/pages/demo/header.py +++ b/pcweb/pages/demo/header.py @@ -1,6 +1,6 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.hosting_banner import HostingBannerState from pcweb.pages.framework.views.companies import pricing_page_companies @@ -19,11 +19,12 @@ def custom_quote_form() -> rx.Component: class_name="text-slate-11 text-md leading-relaxed font-medium text-center max-w-xl mx-auto", ), rx.el.div( - ui.button( - "Contact Sales", - class_name="font-semibold", - size="lg", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + "Contact Sales", + class_name="font-semibold", + size="lg", + ), ), class_name="p-3 border border-slate-3 rounded-[1.375rem] border-solid mt-2", ), diff --git a/pcweb/pages/gallery/apps.py b/pcweb/pages/gallery/apps.py index b8f7b88e4..82ec41681 100644 --- a/pcweb/pages/gallery/apps.py +++ b/pcweb/pages/gallery/apps.py @@ -4,7 +4,7 @@ import flexdown import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.button import button, button_with_icon from pcweb.components.code_card import gallery_app_card @@ -200,11 +200,12 @@ def page(document, is_reflex_template: bool) -> rx.Component: *( [ rx.box( - button_with_icon( - "Book a Demo", - icon="new_tab", - custom_attrs=get_cal_attrs(), - class_name="flex-row-reverse gap-2 !w-full", + demo_form_dialog( + trigger=button_with_icon( + "Book a Demo", + icon="new_tab", + class_name="flex-row-reverse gap-2 !w-full", + ), ), class_name="flex justify-center items-center h-full !w-full [&_button]:!w-full", ) diff --git a/pcweb/pages/landing/views/start_building.py b/pcweb/pages/landing/views/start_building.py index 86df9c27e..a973613b9 100644 --- a/pcweb/pages/landing/views/start_building.py +++ b/pcweb/pages/landing/views/start_building.py @@ -1,5 +1,5 @@ import reflex as rx -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.new_button import button @@ -22,11 +22,12 @@ def start_building() -> rx.Component: "Start building with Reflex", class_name="text-secondary-11 text-2xl lg:text-4xl font-semibold text-center", ), - button( - "Contact sales", - size="xl", - class_name="mt-6", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=button( + "Contact sales", + size="xl", + class_name="mt-6", + ), ), class_name="flex flex-col justify-center items-center lg:mx-auto md:w-full max-w-[64.19rem] lg:border-x border-slate-3 pb-[6.31rem] border-t border-slate-3 py-[6rem] relative z-[1] overflow-hidden isolate w-screen -mx-4", ) diff --git a/pcweb/pages/pricing/enterprise_demo_form.py b/pcweb/pages/pricing/enterprise_demo_form.py index ed422a411..9d9dd41ef 100644 --- a/pcweb/pages/pricing/enterprise_demo_form.py +++ b/pcweb/pages/pricing/enterprise_demo_form.py @@ -1,5 +1,5 @@ import reflex as rx -from reflex_ui.blocks.calcom import cal_embed +from reflex_ui.blocks.demo_form import demo_form from pcweb.pages.framework.views.companies import pricing_page_companies @@ -25,8 +25,9 @@ def book_a_demo_form() -> rx.Component: class_name="mb-8 lg:mb-0 text-center sm:text-left", ), # Right column - Form - cal_embed( - class_name="relative bg-slate-1 rounded-2xl border-2 border-violet-9 shadow-lg w-full max-w-md mx-auto lg:max-w-none lg:mx-0 overflow-hidden" + rx.box( + demo_form(), + class_name="relative bg-slate-1 rounded-2xl border border-slate-3 shadow-lg w-full max-w-md mx-auto lg:max-w-none lg:mx-0 overflow-hidden", ), class_name="grid grid-cols-1 lg:grid-cols-2 gap-6 lg:gap-2 max-w-7xl mx-auto items-start", ), diff --git a/pcweb/pages/pricing/faq.py b/pcweb/pages/pricing/faq.py index 5ae0448a4..b537440d1 100644 --- a/pcweb/pages/pricing/faq.py +++ b/pcweb/pages/pricing/faq.py @@ -1,5 +1,5 @@ import reflex as rx -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.button import button @@ -28,12 +28,13 @@ def sales_button() -> rx.Component: return rx.el.div( rx.el.div( glow(), - button( - "Need more help? Contact sales", - variant="secondary", - class_name="!text-slate-11 !font-semibold !text-sm w-fit", + demo_form_dialog( + trigger=button( + "Need more help? Contact sales", + variant="secondary", + class_name="!text-slate-11 !font-semibold !text-sm w-fit", + ), ), - custom_attrs=get_cal_attrs(), ), class_name="self-center relative", ) diff --git a/pcweb/pages/pricing/plan_cards.py b/pcweb/pages/pricing/plan_cards.py index e7110ed06..901e19164 100644 --- a/pcweb/pages/pricing/plan_cards.py +++ b/pcweb/pages/pricing/plan_cards.py @@ -4,7 +4,7 @@ import reflex as rx import reflex_ui as ui from reflex.experimental.client_state import ClientStateVar -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.hosting_banner import HostingBannerState from pcweb.components.number_flow import number_flow @@ -262,12 +262,13 @@ def pricing_cards() -> rx.Component: Feature("QuestionIcon", "Dedicated Support Channel"), Feature("CustomerSupportIcon", "Onboarding support"), ], - ui.button( - "Contact sales", - variant="primary", - size="lg", - custom_attrs=get_cal_attrs(), - class_name="w-full font-semibold", + demo_form_dialog( + trigger=ui.button( + "Contact sales", + variant="primary", + size="lg", + class_name="w-full font-semibold", + ), ), ), class_name=ui.cn( diff --git a/pcweb/pages/pricing/slider_calculator.py b/pcweb/pages/pricing/slider_calculator.py index d753c07b6..9689c3d0b 100644 --- a/pcweb/pages/pricing/slider_calculator.py +++ b/pcweb/pages/pricing/slider_calculator.py @@ -3,7 +3,7 @@ import reflex as rx import reflex_ui as ui from reflex.experimental.client_state import ClientStateVar -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.constants import PRO_TIERS_TABLE, REFLEX_CLOUD_URL from pcweb.pages.pricing.calculator import ( @@ -269,11 +269,12 @@ def total_credits_card() -> rx.Component: ), rx.cond( get_is_enterprise_tier(MachineState.messages_tier_index), - ui.button( - "Contact Sales", - size="sm", - custom_attrs=get_cal_attrs(), - class_name="font-semibold w-full", + demo_form_dialog( + trigger=ui.button( + "Contact Sales", + size="sm", + class_name="font-semibold w-full", + ), ), ui.link( render_=ui.button( diff --git a/pcweb/pages/pricing/table.py b/pcweb/pages/pricing/table.py index c5af452c3..f2dfe3e7f 100644 --- a/pcweb/pages/pricing/table.py +++ b/pcweb/pages/pricing/table.py @@ -2,7 +2,7 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.hosting_banner import HostingBannerState from pcweb.constants import REFLEX_BUILD_URL, REFLEX_CLOUD_URL @@ -395,11 +395,12 @@ def header_item(text: str, button: rx.Component) -> rx.Component: # Enterprise column with button header_item( "Enterprise", - ui.button( - "Get a demo", - variant="primary", - class_name="font-semibold w-full", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + "Get a demo", + variant="primary", + class_name="font-semibold w-full", + ), ), ), class_name=ui.cn( diff --git a/pcweb/pages/sales.py b/pcweb/pages/sales.py index 45646927b..79aa942ba 100644 --- a/pcweb/pages/sales.py +++ b/pcweb/pages/sales.py @@ -1,190 +1,15 @@ -import httpx import reflex as rx +from reflex_ui.blocks.demo_form import demo_form -from pcweb.components.button import button -from pcweb.constants import REFLEX_DEV_WEB_LANDING_FORM_SALES_CALL_WEBHOOK_URL from pcweb.templates.webpage import webpage -class FormState(rx.State): - is_loading: bool = False - email_sent: bool = False - - @rx.event - async def submit(self, form_data: dict): - self.is_loading = True - yield - - try: - with httpx.Client() as client: - response = client.post( - REFLEX_DEV_WEB_LANDING_FORM_SALES_CALL_WEBHOOK_URL, - json=form_data, - ) - response.raise_for_status() - - self.is_loading = False - self.email_sent = True - yield rx.toast.success("Demo request submitted successfully!") - - except httpx.HTTPError: - self.is_loading = False - self.email_sent = False - yield rx.toast.error("Failed to submit request. Please try again later.") - - -def dialog(trigger: rx.Component, content: rx.Component) -> rx.Component: - return rx.dialog.root( - rx.dialog.trigger( - trigger, - ), - rx.dialog.content( - content, - class_name="bg-white-1 p-4 rounded-[1.625rem] w-[26rem]", - ), - ) - - -def form() -> rx.Component: - input_class_name = "box-border border-slate-5 focus:border-violet-9 focus:border-1 bg-slate-1 p-[0.5rem_0.75rem] border rounded-[10px] w-full font-small text-slate-11 placeholder:text-slate-9 outline-none focus:outline-none" - return rx.box( - rx.form( - rx.box( - rx.text( - "Contact the Sales Team", - class_name="text-2xl text-slate-12 font-bold leading-6 scroll-m-[7rem]", - id="form-title", - ), - rx.text( - "Explore custom plans and pricing", - class_name="font-base text-slate-9", - ), - class_name="flex flex-col gap-2 mb-4 items-start", - ), - rx.box( - rx.hstack( - rx.el.input( - name="first_name", - type="text", - placeholder="First name *", - required=True, - class_name=input_class_name, - ), - rx.el.input( - name="last_name", - type="text", - placeholder="Last name *", - required=True, - class_name=input_class_name, - ), - spacing="2", - width="100%", - class_name="mb-2.5 gap-2", - ), - rx.hstack( - rx.el.input( - name="email", - type="email", - placeholder="Business email *", - required=True, - class_name=input_class_name, - ), - rx.el.input( - name="linkedin_profile", - type="text", - placeholder="LinkedIn profile", - required=False, - class_name=input_class_name, - ), - spacing="2", - width="100%", - class_name="mb-2.5 gap-2", - ), - rx.hstack( - rx.el.input( - name="company_name", - type="text", - placeholder="Company name *", - required=True, - class_name=input_class_name, - ), - rx.el.input( - name="title", - type="text", - placeholder="Title *", - required=True, - class_name=input_class_name, - ), - spacing="2", - width="100%", - class_name="mb-2.5 gap-2", - ), - rx.el.textarea( - name="project_description", - placeholder="Your company needs", - class_name=input_class_name + " h-24 mb-4 resize-none", - ), - class_name="flex flex-col", - ), - rx.cond( - FormState.is_loading, - button( - "Sending...", - variant="secondary", - type="submit", - class_name="opacity-80 !cursor-not-allowed pointer-events-none !w-min", - ), - button( - "Submit", - type="submit", - class_name="!w-min", - ), - ), - on_submit=FormState.submit, - class_name="flex flex-col", - ), - rx.box( - rx.text( - "If you have any questions, feel free to contact us", - class_name="font-small text-slate-9", - ), - rx.link( - "sales@reflex.dev", - href="mailto:sales@reflex.dev", - underline="always", - class_name="text-slate-9 font-small", - ), - class_name="flex flex-row justify-between items-center gap-2 mt-4", - ), - class_name="relative flex flex-col gap-4 border-slate-4 bg-slate-2 shadow-large p-8 border rounded-[1.125rem] self-stretch scroll-[3rem]", - ) - - @webpage(path="/sales", title="Pricing · Reflex") def sales(): return rx.el.section( rx.box( rx.box( - rx.cond( - FormState.email_sent, - rx.box( - rx.box( - rx.text( - """Thanks for your interest in Reflex! -You'll get a reply from us soon.""", - class_name="font-large text-slate-12 whitespace-pre text-center", - ), - class_name="flex flex-row items-center gap-2", - ), - button( - "Back", - on_click=FormState.setvar("email_sent", False), - class_name="mt-4", - ), - class_name="flex flex-col items-center gap-2", - ), - form(), - ), + demo_form(), class_name="mt-12 w-full", ), class_name="flex flex-col justify-center items-center w-full max-w-[84.5rem]", diff --git a/pcweb/pages/use_cases/common/final_section.py b/pcweb/pages/use_cases/common/final_section.py index 1eb40bbf2..761572c1a 100644 --- a/pcweb/pages/use_cases/common/final_section.py +++ b/pcweb/pages/use_cases/common/final_section.py @@ -1,6 +1,6 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.constants import REFLEX_BUILD_URL from pcweb.pages.pricing.plan_cards import radial_circle @@ -41,12 +41,13 @@ def left_content(h1: str, description: str) -> rx.Component: description, class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium", ), - ui.button( - ui.icon("Calendar04Icon"), - "Schedule a demo", - size="lg", - custom_attrs=get_cal_attrs(), - class_name="w-fit font-semibold mt-4", + demo_form_dialog( + trigger=ui.button( + ui.icon("Calendar04Icon"), + "Schedule a demo", + size="lg", + class_name="w-fit font-semibold mt-4", + ), ), class_name="flex flex-col gap-4 items-start justify-center lg:py-20 py-8 lg:pl-20 pl-8 lg:pr-[7.5rem] pr-8 relative overflow-hidden min-h-fit", ) diff --git a/pcweb/pages/use_cases/common/hero.py b/pcweb/pages/use_cases/common/hero.py index 1eae0cca3..351313e61 100644 --- a/pcweb/pages/use_cases/common/hero.py +++ b/pcweb/pages/use_cases/common/hero.py @@ -1,6 +1,6 @@ import reflex as rx import reflex_ui as ui -from reflex_ui.blocks.calcom import get_cal_attrs +from reflex_ui.blocks.demo_form import demo_form_dialog from pcweb.components.numbers_pattern import numbers_pattern @@ -22,18 +22,20 @@ def left_content( class_name="text-m-slate-11 dark:text-slate-9 text-base font-medium", ), rx.el.div( - ui.button( - button_1, - size="lg", - class_name="font-semibold", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + button_1, + size="lg", + class_name="font-semibold", + ), ), - ui.button( - button_2, - size="lg", - variant="outline", - class_name="font-semibold text-m-slate-11 dark:text-slate-9 border-m-slate-5 dark:border-m-slate-12", - custom_attrs=get_cal_attrs(), + demo_form_dialog( + trigger=ui.button( + button_2, + size="lg", + variant="outline", + class_name="font-semibold text-m-slate-11 dark:text-slate-9 border-m-slate-5 dark:border-m-slate-12", + ), ), class_name="flex lg:flex-row flex-col items-center max-lg:justify-center gap-4 mt-2", ), diff --git a/pcweb/pcweb.py b/pcweb/pcweb.py index 6943dd012..ba2594a8d 100644 --- a/pcweb/pcweb.py +++ b/pcweb/pcweb.py @@ -5,7 +5,6 @@ import reflex as rx import reflex_enterprise as rxe -from reflex_ui.blocks.calcom import calcom_popup_embed from pcweb import styles from pcweb.meta.meta import favicons_links @@ -32,9 +31,6 @@ radius="large", accent_color="violet", ), - extra_app_wraps={ - (55, "Calcom Popup Embed"): lambda _: calcom_popup_embed(), - }, head_components=get_pixel_website_trackers() + favicons_links() + [ diff --git a/pcweb/telemetry/pixels.py b/pcweb/telemetry/pixels.py index 95d81fff0..88411e39c 100644 --- a/pcweb/telemetry/pixels.py +++ b/pcweb/telemetry/pixels.py @@ -2,11 +2,8 @@ import reflex as rx from reflex_ui.blocks.telemetry import ( - get_clearbit_trackers, - get_common_room_trackers, + get_default_telemetry_script, get_google_analytics_trackers, - get_posthog_trackers, - get_rb2b_trackers, get_unify_trackers, gtag_report_conversion, ) @@ -15,15 +12,10 @@ def get_pixel_website_trackers() -> list[rx.Component]: """Get the pixel trackers for the website.""" return [ - get_common_room_trackers(site_id="b608b3c3-5dea-4365-b685-6b6635c7fda5"), *get_google_analytics_trackers(tracking_id="G-4T7C8ZD9TR"), gtag_report_conversion( conversion_id_and_label="AW-11360851250/ASB4COvpisIbELKqo6kq" ), - get_clearbit_trackers(public_key="pk_3d711a6e26de5ddb47443d8db170d506"), - get_posthog_trackers( - project_id="phc_A0MAR0wCGhXrizWmowRZcYqyZ8PMhPPQW06KEwD43aC" - ), - *get_rb2b_trackers(), get_unify_trackers(), + get_default_telemetry_script(), ] diff --git a/pcweb/telemetry/postog_metrics.py b/pcweb/telemetry/postog_metrics.py deleted file mode 100644 index 60e0c5b73..000000000 --- a/pcweb/telemetry/postog_metrics.py +++ /dev/null @@ -1,93 +0,0 @@ -import contextlib -from dataclasses import asdict, dataclass -from typing import Any - -import httpx -from posthog import Posthog -from reflex.utils.console import log - -from pcweb.constants import POSTHOG_API_KEY, SLACK_DEMO_WEBHOOK_URL - -with contextlib.suppress(Exception): - posthog = Posthog(POSTHOG_API_KEY, host="https://us.i.posthog.com") - - -@dataclass(kw_only=True) -class PosthogEvent: - """Base event structure.""" - - distinct_id: str - - def to_dict(self) -> dict[str, Any]: - return asdict(self) - - -@dataclass -class DemoEvent(PosthogEvent): - """Event for demo booking.""" - - first_name: str - last_name: str - company_email: str - linkedin_url: str - job_title: str - company_name: str - num_employees: str - internal_tools: str - referral_source: str - phone_number: str = "" - - -async def send_data_to_posthog(event_instance: PosthogEvent): - """Send data to PostHog using class introspection. - - Args: - event_instance: An instance of a PosthogEvent subclass. - - Raises: - httpx.HTTPError: When there is an error sending data to PostHog. - """ - event_data = { - "api_key": POSTHOG_API_KEY, - "event": event_instance.__class__.__name__, - "properties": event_instance.to_dict(), - } - try: - async with httpx.AsyncClient() as client: - response = await client.post( - "https://app.posthog.com/capture/", json=event_data - ) - response.raise_for_status() - except Exception: - log("Error sending data to PostHog") - - -async def send_data_to_slack(event_instance: DemoEvent): - """Send demo form data to Slack webhook. - - Args: - event_instance: An instance of DemoEvent with form data. - """ - slack_payload = { - "lookingToBuild": event_instance.internal_tools, - "businessEmail": event_instance.company_email, - "howDidYouHear": event_instance.referral_source, - "linkedinUrl": event_instance.linkedin_url, - "jobTitle": event_instance.job_title, - "numEmployees": event_instance.num_employees, - "companyName": event_instance.company_name, - "firstName": event_instance.first_name, - "lastName": event_instance.last_name, - "phoneNumber": event_instance.phone_number, - } - - try: - async with httpx.AsyncClient() as client: - response = await client.post( - SLACK_DEMO_WEBHOOK_URL, - json=slack_payload, - headers={"Content-Type": "application/json"}, - ) - response.raise_for_status() - except Exception as e: - log(f"Error sending data to Slack webhook: {e}") diff --git a/pyproject.toml b/pyproject.toml index 9c47feb24..1045dc4ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,6 @@ dependencies = [ "openai", "pandas", "plotly-express", - "posthog", "psycopg[binary]", "python-frontmatter", "reflex @ git+https://github.com/reflex-dev/reflex@main", diff --git a/uv.lock b/uv.lock index 5734c4db5..42377add7 100644 --- a/uv.lock +++ b/uv.lock @@ -206,15 +206,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] -[[package]] -name = "backoff" -version = "2.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, -] - [[package]] name = "bidict" version = "0.23.1" @@ -1914,23 +1905,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] -[[package]] -name = "posthog" -version = "7.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "backoff" }, - { name = "distro" }, - { name = "python-dateutil" }, - { name = "requests" }, - { name = "six" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a2/d4/b9afe855a8a7a1bf4459c28ae4c300b40338122dc850acabefcf2c3df24d/posthog-7.0.1.tar.gz", hash = "sha256:21150562c2630a599c1d7eac94bc5c64eb6f6acbf3ff52ccf1e57345706db05a", size = 126985, upload-time = "2025-11-15T12:44:22.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/0c/8b6b20b0be71725e6e8a32dcd460cdbf62fe6df9bc656a650150dc98fedd/posthog-7.0.1-py3-none-any.whl", hash = "sha256:efe212d8d88a9ba80a20c588eab4baf4b1a5e90e40b551160a5603bb21e96904", size = 145234, upload-time = "2025-11-15T12:44:21.247Z" }, -] - [[package]] name = "pre-commit" version = "4.5.0" @@ -2574,7 +2548,7 @@ wheels = [ [[package]] name = "reflex-ui" version = "0.0.1" -source = { git = "https://github.com/reflex-dev/reflex-ui?rev=main#d2432c30fbecfcd96ad90be5effae8cd5bcc8ea9" } +source = { git = "https://github.com/reflex-dev/reflex-ui?rev=main#2acfc6364b9a37c8475288b1d3c088a9510d5ae3" } dependencies = [ { name = "reflex" }, ] @@ -2592,7 +2566,6 @@ dependencies = [ { name = "openai" }, { name = "pandas" }, { name = "plotly-express" }, - { name = "posthog" }, { name = "psycopg", extra = ["binary"] }, { name = "python-frontmatter" }, { name = "reflex" }, @@ -2627,7 +2600,6 @@ requires-dist = [ { name = "openai" }, { name = "pandas" }, { name = "plotly-express" }, - { name = "posthog" }, { name = "psycopg", extras = ["binary"] }, { name = "python-frontmatter" }, { name = "reflex", git = "https://github.com/reflex-dev/reflex?rev=main" },