diff --git a/apps/site/package.json b/apps/site/package.json index c9d6de8357..7ce8d2745b 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -16,6 +16,7 @@ "@prisma-docs/ui": "workspace:*", "@prisma/eclipse": "workspace:^", "@react-three/fiber": "^9.5.0", + "@rive-app/react-webgl2": "^4.27.3", "cors": "^2.8.6", "html-react-parser": "^5.2.17", "lucide-react": "catalog:", @@ -24,6 +25,7 @@ "posthog-js": "catalog:", "react": "catalog:", "react-dom": "catalog:", + "react-intersection-observer": "^10.0.3", "react-tweet": "catalog:", "remark-directive": "catalog:", "tailwind-merge": "catalog:", diff --git a/apps/site/public/animations/enterprise/build_fortify_grow.riv b/apps/site/public/animations/enterprise/build_fortify_grow.riv new file mode 100644 index 0000000000..8ad4e9dc5c Binary files /dev/null and b/apps/site/public/animations/enterprise/build_fortify_grow.riv differ diff --git a/apps/site/public/icons/technologies/mariadb.svg b/apps/site/public/icons/technologies/mariadb.svg new file mode 100644 index 0000000000..ef34e995a6 --- /dev/null +++ b/apps/site/public/icons/technologies/mariadb.svg @@ -0,0 +1,47 @@ + + + + + + + + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mariadbdark.svg b/apps/site/public/icons/technologies/mariadbdark.svg new file mode 100644 index 0000000000..7e93faa3ba --- /dev/null +++ b/apps/site/public/icons/technologies/mariadbdark.svg @@ -0,0 +1,15 @@ + + + + + + MDB-VLogo_White + + + + + + + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mongodb copy.svg b/apps/site/public/icons/technologies/mongodb copy.svg new file mode 100644 index 0000000000..69b6564fd8 --- /dev/null +++ b/apps/site/public/icons/technologies/mongodb copy.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mongodbsimple.svg b/apps/site/public/icons/technologies/mongodbsimple.svg new file mode 100644 index 0000000000..ebe9937d6b --- /dev/null +++ b/apps/site/public/icons/technologies/mongodbsimple.svg @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mssql.svg b/apps/site/public/icons/technologies/mssql.svg new file mode 100644 index 0000000000..b6b81fb5ec --- /dev/null +++ b/apps/site/public/icons/technologies/mssql.svg @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mysql copy.svg b/apps/site/public/icons/technologies/mysql copy.svg new file mode 100644 index 0000000000..eef39d31a2 --- /dev/null +++ b/apps/site/public/icons/technologies/mysql copy.svg @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/apps/site/public/icons/technologies/mysqlsimple.svg b/apps/site/public/icons/technologies/mysqlsimple.svg new file mode 100644 index 0000000000..953749db04 --- /dev/null +++ b/apps/site/public/icons/technologies/mysqlsimple.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/site/public/illustrations/enterprise/Illustrations/Diagrams/Code/Type3.svg b/apps/site/public/illustrations/enterprise/Illustrations/Diagrams/Code/Type3.svg new file mode 100644 index 0000000000..78dfa6497f --- /dev/null +++ b/apps/site/public/illustrations/enterprise/Illustrations/Diagrams/Code/Type3.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/site/public/illustrations/enterprise/bgf-light.svg b/apps/site/public/illustrations/enterprise/bgf-light.svg new file mode 100644 index 0000000000..00d7aa64ca --- /dev/null +++ b/apps/site/public/illustrations/enterprise/bgf-light.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/bgf.svg b/apps/site/public/illustrations/enterprise/bgf.svg new file mode 100644 index 0000000000..e4dc34fd37 --- /dev/null +++ b/apps/site/public/illustrations/enterprise/bgf.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_0.svg b/apps/site/public/illustrations/enterprise/enterprise_0.svg new file mode 100644 index 0000000000..a10db98acc --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_0.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_0_light.svg b/apps/site/public/illustrations/enterprise/enterprise_0_light.svg new file mode 100644 index 0000000000..a0ea478802 --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_0_light.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_1.svg b/apps/site/public/illustrations/enterprise/enterprise_1.svg new file mode 100644 index 0000000000..d6ae7f414f --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_1.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_1_light.svg b/apps/site/public/illustrations/enterprise/enterprise_1_light.svg new file mode 100644 index 0000000000..a2e312a734 --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_1_light.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_2.svg b/apps/site/public/illustrations/enterprise/enterprise_2.svg new file mode 100644 index 0000000000..56ca9665dd --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_2.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/enterprise/enterprise_2_light.svg b/apps/site/public/illustrations/enterprise/enterprise_2_light.svg new file mode 100644 index 0000000000..4582b4eb83 --- /dev/null +++ b/apps/site/public/illustrations/enterprise/enterprise_2_light.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/og/og-enterprise.png b/apps/site/public/og/og-enterprise.png new file mode 100644 index 0000000000..31a874469b Binary files /dev/null and b/apps/site/public/og/og-enterprise.png differ diff --git a/apps/site/public/og/og-index.png b/apps/site/public/og/og-index.png new file mode 100644 index 0000000000..5479f16a28 Binary files /dev/null and b/apps/site/public/og/og-index.png differ diff --git a/apps/site/src/app/(index)/page.tsx b/apps/site/src/app/(index)/page.tsx index 29f769e3b9..5a563cc87d 100644 --- a/apps/site/src/app/(index)/page.tsx +++ b/apps/site/src/app/(index)/page.tsx @@ -6,8 +6,6 @@ import { } from "../../lib/blog-metadata"; import { Button } from "@prisma/eclipse"; import { CopyCode } from "@/components/homepage/copy-btn"; -import LogoParade from "@prisma-docs/ui/components/logo-parade"; -import React from "react"; import { Bento } from "@/components/homepage/bento"; import { CardSection } from "@/components/homepage/card-section/card-section"; import review from "../../data/homepage.json"; @@ -61,6 +59,25 @@ const twoCol = [ export const metadata: Metadata = { title: SITE_HOME_TITLE, description: SITE_HOME_DESCRIPTION, + alternates: { + canonical: "https://www.prisma.io/", + }, + openGraph: { + title: SITE_HOME_TITLE, + description: SITE_HOME_DESCRIPTION, + url: "https://www.prisma.io/", + images: [ + { + url: "/og/og-index.png", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: SITE_HOME_TITLE, + description: SITE_HOME_DESCRIPTION, + images: ["/og/og-index.png"], + }, }; export default function SiteHome() { diff --git a/apps/site/src/app/enterprise/page.tsx b/apps/site/src/app/enterprise/page.tsx new file mode 100644 index 0000000000..be0b527b3f --- /dev/null +++ b/apps/site/src/app/enterprise/page.tsx @@ -0,0 +1,569 @@ +import { EnterpriseForm } from "@/components/enterprise/form"; +import { EnterpriseScrollCarousel } from "@/components/enterprise/scroll-carousel"; +import Image from "next/image"; +import { FooterAccordion } from "@/components/enterprise/footer-accordion"; +import { SwitchEnterprise } from "@/components/enterprise/switch-enterprise"; +import LogoParade from "@/components/logo-parade"; +import type { Metadata } from "next"; +import { Button, Card, Action } from "@prisma/eclipse"; +import { CardSection } from "@/components/homepage/card-section/card-section"; +import { cn } from "@/lib/cn"; +import { Technology } from "@/components/technology"; + +const first = [ + { + content: ( + <> +

+ Boost your
+ application’s lifecycle +

+

+ By integrating Prisma into your development ecosystem, you leverage + its capabilities to Build robust, adaptable applications with less + code and fewer errors and also Fortify your database interactions for + peak performance right from the start. +

+

+ As your application Grows, our platform products Accelerate and Prisma + Postgres ensure that your data layer can adapt and scale, supporting + increased traffic and requirements without sacrificing performance or + security. +

+ + ), + imageUrl: null, + imageAlt: null, + mobileImageUrl: null, + mobileImageAlt: null, + logos: null, + other: ( + <> + Build Fortify Grow + Build Fortify Grow + + ), + useDefaultLogos: true, + visualPosition: "left" as const, + visualType: "other" as const, + }, +]; + +const databases = { + title: "Supported Databases", + list: [ + { + name: "PostgreSQL", + icon: "/icons/companies/postgres.svg", + url: "/", + }, + { + name: "MySQL", + icon: "/icons/technologies/mysqlsimple.svg", + url: "/", + }, + { + name: "MariaDB", + icon: "/icons/technologies/mariadb.svg", + url: "/", + }, + { + name: "SQLite", + icon: "/icons/companies/sqlite.svg", + url: "/", + }, + { + name: "SQL Server", + icon: "/icons/companies/sqlserver.svg", + url: "/", + }, + { + name: "CockroachDB", + icon: "/icons/companies/cockroachdb.svg", + url: "/", + }, + { + name: "PlanetScale", + icon: "/icons/companies/planetscale.svg", + url: "/", + }, + { + name: "MongoDB", + icon: "/icons/technologies/mongodbsimple.svg", + url: "/", + }, + ], +}; + +const complexities = [ + { + title: "Improved developer experience", + image: "/illustrations/enterprise/enterprise_0", + subtitle: + "Prisma ORM enhances code clarity and modularity. New team members can onboard quickly, thanks to the high level of abstraction and the intuitive query syntax.", + icon: "fa-regular fa-cubes-stacked", + }, + { + title: "Increased productivity", + image: "/illustrations/enterprise/enterprise_1", + subtitle: + "The Prisma ORM Client API comes with an intuitive querying interface and editor auto-completion, allowing developers to focus on business logic instead of database syntax.", + icon: "fa-regular fa-code", + }, + { + title: "Bring your own database", + subtitle: + "Prisma ORM’s extensive compatibility enables teams to work with different databases and switch without significant changes to the application logic.", + icon: "fa-regular fa-database", + }, +]; + +const enterprises = [ + { + title: "Enterprise-level support", + description: + "Work directly with Prisma specialists who understand enterprise architectures, delivery timelines, and production constraints.", + icon: "fa-regular fa-headset", // or "fa-light fa-headset" + }, + { + title: "Risk and compliance", + description: + "Navigate security reviews, procurement, and compliance requirements with clearer guidance and supporting documentation.", + icon: "fa-regular fa-file-contract", // or "fa-light fa-file-contract" + }, + { + title: "Custom solutions", + description: + "Shape an engagement that fits your stack, internal processes, and the needs of your organization.", + icon: "fa-regular fa-wrench", // or "fa-light fa-wrench" + }, + { + title: "Priority resolution", + description: + "Escalate urgent issues faster to reduce downtime, unblock teams, and keep releases on schedule.", + icon: "fa-regular fa-check-to-slot", // or "fa-light fa-circle-check" + }, + { + title: "Advanced security", + description: + "Adopt secure defaults and harden database access patterns for sensitive workloads and regulated environments.", + icon: "fa-regular fa-shield-exclamation", // or "fa-light fa-shield-exclamation" + }, + { + title: "Performance optimization", + description: + "Tune query patterns, schema design, and workflows for predictable performance under real production load.", + icon: "fa-regular fa-chart-line-up", // or "fa-light fa-chart-line-up" + }, + { + title: "Expert scalability consultation", + description: + "Plan for growth with guidance on scaling data access, team workflows, and application architecture.", + icon: "fa-regular fa-up-right-and-down-left-from-center", // or "fa-light fa-arrow-trend-up" + }, + { + title: "Comprehensive team training", + description: + "Upskill developers with hands-on enablement tailored to your codebase, workflows, and Prisma adoption goals.", + icon: "fa-regular fa-screen-users", // or "fa-light fa-people-group" + }, + { + title: "Influential feedback loop", + description: + "Share direct product feedback with the Prisma team and help shape the roadmap around enterprise needs.", + icon: "fa-regular fa-repeat", // or "fa-light fa-repeat" + }, +]; +const solution_providers = [ + { + title: "Direct access to product experts", + description: + "Engage with the brains behind the Prisma ORM for in-depth problem-solving and specialized insights.", + icon: "fa-regular fa-person-chalkboard", // or "fa-light fa-person-chalkboard" + }, + { + title: "Swift problem resolution", + description: + "Benefit from quick and effective support responses that are crucial in maintaining the pace of your project timelines.", + icon: "fa-regular fa-gauge-simple-max", // or "fa-light fa-badge-check" + }, + { + title: "Bespoke customization guidance", + description: + "Receive personalized advice on tailoring the Prisma ORM to the specific requirements of your unique projects.", + icon: "fa-regular fa-comments-question-check", // or "fa-light fa-comments-question" + }, + { + title: "Advanced updates", + description: + "Stay ahead in the game with the latest updates and best practices.", + icon: "fa-regular fa-file-arrow-up", // or "fa-light fa-file-import" + }, + { + title: "Expedited and priority support", + description: + "Benefit from prioritized attention to your inquiries and problems.", + icon: "fa-regular fa-phone-volume", // or "fa-light fa-phone-arrow-up-right" + }, + { + title: "Specialized training for your team", + description: + "Empower your team with advanced training sessions, enabling them to leverage the full capabilities of our ORM.", + icon: "fa-regular fa-screen-users", // or "fa-light fa-people-group" + }, + { + title: "Optimization for peak performance", + description: "Ensure your software solutions run smoothly and efficiently.", + icon: "fa-regular fa-arrow-up-right-dots", // or "fa-light fa-chart-mixed" + }, + { + title: "Proactive risk management", + description: + "Help you to anticipate and mitigate risks, ensuring a seamless development process and uninterrupted service to your clients.", + icon: "fa-regular fa-triangle-exclamation", // or "fa-light fa-triangle-exclamation" + }, +]; +const scal_port = [ + { + title: "Support for multiple databases", + description: + "Prisma ORM's compatibility enables teams to work with different databases without significant changes to the application logic. Developers can easily switch between different projects, and applications can be easily adapted to future requirements without extensive rework.", + icon: "fa-regular fa-layer-plus", // or "fa-light fa-layer-group" + }, + { + title: "Community and ecosystem", + description: + "The vibrant Prisma community and ecosystem offer extensive resources, including documentation, tutorials, and support forums. This knowledge pool aids in resolving issues swiftly and exchanging best practices.", + icon: "fa-regular fa-hands-holding-circle", // or "fa-light fa-people-group" + }, + { + title: "Scalability at its core", + description: + "Designed with scalability in mind, Prisma products support efficient data fetching and manipulation patterns that are essential for high-load applications, ensuring that the database layer does not become a bottleneck as the application grows.", + icon: "fa-regular fa-up-right-and-down-left-from-center", // or "fa-light fa-chart-network" + }, + { + title: "Code maintainability", + description: + "The reduction in handwritten SQL leads to cleaner, more maintainable codebases. Developers can focus on the business logic rather than the intricacies of SQL syntax, making it easier to update and refactor code.", + icon: "fa-regular fa-gear-complex-code", // or "fa-light fa-code" + }, +]; + +const abstraction_ease_of_use = [ + { + title: "Abstraction and ease of use", + description: + "Prisma ORM allows developers to work with high-level objects and methods instead of raw SQL queries. This accelerates development and minimizes errors associated with directly handling SQL. Retrieving user data can be as straightforward as prisma.user.findMany() instead of constructing a complex SQL query.", + icon: "fa-regular fa-shapes", + }, + { + title: "Database schema migration", + description: + "Prisma Migrate facilitates easy version control for database schemas, streamlining the deployment and rollback of changes. This is crucial for maintaining consistency across environments. The schema evolution necessary for application development becomes safe and hassle-free, yet customizable to provide flexibility.", + icon: "fa-regular fa-arrow-up-triangle-square", + }, + { + title: "Reduced training needs", + description: + "By standardizing database interactions, Prisma ORM reduces the need for in-depth database-specific training. New team members can contribute quickly, focusing on learning your data model rather than the nuances of SQL.", + icon: "fa-regular fa-head-side-gear", + }, + { + title: "Transferability of responsibilities", + description: + "The uniform interface provided by Prisma ORM simplifies the transfer of responsibilities within the team. Developers can easily understand and work on different parts of the application, enhancing team flexibility and resilience.", + icon: "fa-regular fa-person-walking-dashed-line-arrow-right", + }, + { + title: "Improved productivity", + description: + "The Prisma ORM Client API boosts developer productivity by providing a querying interface that is intuitive and comes with features like editor auto-completion. This reduces the cognitive load on developers, allowing them to focus on business logic rather than database syntax intricacies.", + icon: "fa-regular fa-arrow-up-right-dots", + }, + { + title: "Cross-functional team collaboration", + description: + "Prisma ORM's schema-centric approach enhances collaboration between developers and database administrators (DBAs) by providing a clear, version-controlled schema definition. This shared understanding facilitates smoother communication and decision-making.", + icon: "fa-regular fa-screen-users", + }, + { + title: "Improved developer experience", + description: + "Prisma ORM contributes to a more modular and understandable codebase, significantly enhancing developer experience. The modularity facilitates easier testing and debugging, as developers can focus on smaller, more isolated parts of the application logic.", + icon: "fa-regular fa-cubes-stacked", + }, +]; + +const ENTERPRISE_TITLE = "Streamline your enterprise development workflow with Prisma"; +const ENTERPRISE_DESCRIPTION = + "Learn how Prisma ORM can improve your team's productivity and explore our tailored ORM support solutions for enterprises and solution providers."; + +export const metadata: Metadata = { + title: ENTERPRISE_TITLE, + description: ENTERPRISE_DESCRIPTION, + alternates: { + canonical: "https://www.prisma.io/enterprise", + }, + openGraph: { + title: ENTERPRISE_TITLE, + description: ENTERPRISE_DESCRIPTION, + url: "https://www.prisma.io/enterprise", + images: [ + { + url: "/og/og-enterprise.png", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: ENTERPRISE_TITLE, + description: ENTERPRISE_DESCRIPTION, + images: ["/og/og-enterprise.png"], + }, +}; + +export default function EnterprisePage() { + return ( +
+ {/* Hero */} +
+
+
+
+
+ Enterprise & Solution Providers +
+

+ Streamline your +
development workflow +

+
+

+ Prisma acts as your comprehensive enterprise data toolset, + simplifying database interactions and reducing complexity so + developers can focus on business logic. +

+
+ +
+
+
+ + {/* Trusted by teams at */} +
+
+ Trusted by teams at +
+ +
+ + {/* Boost your application’s lifecycle */} +
+ +
+ + {/* Leave the database complexities to us */} +
+
+

+ Leave the database complexities to us +

+

+ Focus on core competencies of your team, rather than building and + managing complex infrastructure components. +

+
+
+ {complexities.map((card: any, index: number) => { + const last = index === complexities.length - 1; + return ( + +
+
+
+ + + +

+ {card.title} +

+
+

+ {card.subtitle} +

+ {!last && ( +
+ Enterprise + Enterprise +
+ )} +
+ {last && ( +
+
+ {databases.title} +
+
+ {databases.list.map((db: any, idx: number) => ( +
+ + + {db.name} + + +
+ ))} +
+
+ )} +
+
+ ); + })} +
+
+ + {/* Developer experience */} +
+
+

+ Developer experience +

+ +
+
+ {/* Code quality and safety */} +
+
+

+ Code quality and safety +

+
+
+
+ +
+
+ Code quality and safety + Code quality and safety +
+
+
+
+
+ + {/* Scalability and portability */} +
+
+

+ Scalability and portability +

+ +
+
+ + {/* Dedicated ORM support options */} +
+
+

+ Dedicated ORM support options +

+

+ Focus on core competencies of your team, rather than building and + managing complex infrastructure components. +

+ +
+
+ + {/* Connect with us */} +
+
+

+ Connect with us +

+

+ To explore how our support solutions can revolutionize your agency + or enterprise's approach to developing with Prisma ORM. +

+ +
+
+ +
+ ); +} diff --git a/apps/site/src/components/animation.tsx b/apps/site/src/components/animation.tsx new file mode 100644 index 0000000000..5e42591f9f --- /dev/null +++ b/apps/site/src/components/animation.tsx @@ -0,0 +1,55 @@ +"use client"; +import { useRive, Layout, Alignment, Fit } from "@rive-app/react-webgl2"; +import { useEffect } from "react"; +import { useInView } from "react-intersection-observer"; + +interface AnimationProps { + name: string; + className?: string; + fit?: Fit; + threshold?: number; + style?: React.CSSProperties; + autoplay?: boolean; +} + +export const Animation = ({ + name, + className, + fit, + threshold, + style, + autoplay, +}: AnimationProps) => { + const [reference, isInView] = useInView({ + threshold: threshold ?? 0.2, + }); + + const { rive, RiveComponent } = useRive({ + src: `/animations/${name}.riv`, + autoplay: autoplay || false, + layout: new Layout({ + fit: fit, + alignment: Alignment.Center, + }), + }); + + useEffect(() => { + if (rive) { + if (isInView) { + rive.play(); + } else rive.pause(); + } + return () => rive?.pause(); + }, [isInView, rive]); + + return ( +
+ +
+ ); +}; diff --git a/apps/site/src/components/enterprise/carousel-item.tsx b/apps/site/src/components/enterprise/carousel-item.tsx new file mode 100644 index 0000000000..d576b810e5 --- /dev/null +++ b/apps/site/src/components/enterprise/carousel-item.tsx @@ -0,0 +1,37 @@ +import { Action, Card } from "@prisma/eclipse"; +import { cn } from "@/lib/cn"; + +export interface EnterpriseCarouselCard { + title: string; + description: string; + icon: string; +} + +export const CarouselItem = ({ + card, + className, +}: { + card: EnterpriseCarouselCard; + className?: string; +}) => { + return ( + +
+
+ + + +

+ {card.title} +

+
+

+

+
+ ); +}; diff --git a/apps/site/src/components/enterprise/footer-accordion.tsx b/apps/site/src/components/enterprise/footer-accordion.tsx new file mode 100644 index 0000000000..695a8bb519 --- /dev/null +++ b/apps/site/src/components/enterprise/footer-accordion.tsx @@ -0,0 +1,61 @@ +import { Accordions, Accordion } from "@prisma/eclipse"; + +export const FooterAccordion = () => { + return ( +
+ + + + Type-safety +
+ } + > +

+ With Prisma ORM’s first-class TypeScript support, developers benefit + from compile-time type checking, significantly reducing runtime + errors. Any changes in the database schema are reflected in the + code, prompting immediate updates where necessary. +

+ + + + Security features + + } + > +

+ Prisma ORM mitigates common security vulnerabilities, such as SQL + injection, by abstracting raw SQL queries and sanitizing inputs. + This built-in protection layer adds an additional security safeguard + for applications. +

+
+ + + Performance considerations + + } + > +

+ While ORMs add a layer of abstraction, Prisma ORM is optimized to + generate efficient SQL queries, minimizing performance overhead. + Techniques such as query batching and selective loading of data + ensure applications remain responsive and scalable. +

+
+ + + ); +}; diff --git a/apps/site/src/components/enterprise/form.tsx b/apps/site/src/components/enterprise/form.tsx new file mode 100644 index 0000000000..b3753fff91 --- /dev/null +++ b/apps/site/src/components/enterprise/form.tsx @@ -0,0 +1,19 @@ +"use client"; +import Script from "next/script"; + +export const EnterpriseForm = () => ( + <> +