// @bun
var n=Object.defineProperty;var s=(o)=>o;function i(o,a){this[o]=s.bind(null,a)}var p=(o,a)=>{for(var r in a)n(o,r,{get:a[r],enumerable:!0,configurable:!0,set:i.bind(a,r)})};var l=(o,a)=>()=>(o&&(a=o(o=0)),a);import{jsx as t,jsxs as e}from"react/jsx-runtime";function c(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Comparison overview"}),t("p",{className:"text-muted-foreground",children:"ContractSpec sits at the intersection of several tool categories. To appreciate its unique offering\u2014typed specifications for back-end, front-end, workflows and policies with a unified web/mobile runtime\u2014this section compares it to related products."}),e("p",{className:"text-muted-foreground",children:["ContractSpec uses ",t("strong",{children:"runtime adapters"})," to serve typed"," ",t("strong",{children:"Operations"})," (Commands/Queries),"," ",t("strong",{children:"DataViews"}),", ",t("strong",{children:"Workflows"}),", and"," ",t("strong",{children:"Policies"})," as REST/GraphQL/MCP endpoints. A"," ",t("strong",{children:"policy decision point"})," governs every operation, and"," ",t("strong",{children:"OverlaySpecs"})," allow non-technical users to personalise screens safely. Few competitors offer this combination of runtime type safety, policy enforcement, and end-user customisation."]})]}),e("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Tool categories"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:e("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:e("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Category"}),t("th",{className:"px-4 py-3 font-semibold",children:"Examples"}),t("th",{className:"px-4 py-3 font-semibold",children:"What they do"}),t("th",{className:"px-4 py-3 font-semibold",children:"Limitations"})]})}),e("tbody",{className:"divide-y divide-border/50",children:[e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Workflow engines"})}),t("td",{className:"px-4 py-3 align-top",children:"Prefect, Kestra, Temporal, Airflow, Dagster, Hatchet, Windmill"}),t("td",{className:"px-4 py-3 align-top",children:"Orchestrate code or data pipelines; handle retries, scheduling and observability"}),t("td",{className:"px-4 py-3 align-top",children:"Require writing code; no automatic UI generation or policy enforcement."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Internal-tool builders"})}),t("td",{className:"px-4 py-3 align-top",children:"Retool, Appsmith, ToolJet, Budibase"}),t("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop dashboards and admin panels; connect to databases/APIs"}),t("td",{className:"px-4 py-3 align-top",children:"No typed back-end spec; limited enforcement of policies; custom code glues logic."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Automation platforms"})}),t("td",{className:"px-4 py-3 align-top",children:"Zapier, Make, n8n, Pipedream"}),t("td",{className:"px-4 py-3 align-top",children:"Connect apps via triggers and actions; visual or low-code interfaces"}),t("td",{className:"px-4 py-3 align-top",children:"Automate tasks but do not generate full apps or enforce per-field policies."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Enterprise orchestrators"})}),t("td",{className:"px-4 py-3 align-top",children:"Redwood RunMyJobs"}),t("td",{className:"px-4 py-3 align-top",children:"Automate mission-critical workloads with self-service portals and SAP integrations"}),t("td",{className:"px-4 py-3 align-top",children:"Focus on IT workloads; not built for custom app creation or per-user customisation."})]})]})]})}),t("p",{className:"text-muted-foreground",children:"Use the pages below to explore each group in detail and see how ContractSpec compares."})]})]})}export{c as ComparisonOverviewPage};
