diff --git a/apps/dashboard/framer-rewrites.js b/apps/dashboard/framer-rewrites.js
index 4d63379d6ca..8f4cad3c6f0 100644
--- a/apps/dashboard/framer-rewrites.js
+++ b/apps/dashboard/framer-rewrites.js
@@ -4,4 +4,6 @@ module.exports = [
"/connect/sign-in",
"/contracts/modular-contracts",
"/unlimited-wallets",
+ "/engine",
+ "/solutions/gaming",
];
diff --git a/apps/dashboard/src/components/homepage/open-source/OpenSource.tsx b/apps/dashboard/src/components/homepage/open-source/OpenSource.tsx
deleted file mode 100644
index 250709509e3..00000000000
--- a/apps/dashboard/src/components/homepage/open-source/OpenSource.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { TrackedLink } from "tw-components";
-import styles from "./opensource.module.css";
-
-const thirdwebRepoUrl = "https://github.com/thirdweb-dev";
-
-const GithubIcon = () => {
- return (
-
- );
-};
-
-type OpenSourceProps = {
- TRACKING_CATEGORY: string;
-};
-
-export const OpenSource: React.FC = ({
- TRACKING_CATEGORY,
-}) => {
- return (
-
-
- open-source
-
-
- );
-};
diff --git a/apps/dashboard/src/components/homepage/open-source/opensource.module.css b/apps/dashboard/src/components/homepage/open-source/opensource.module.css
deleted file mode 100644
index 3ffd7f18e1f..00000000000
--- a/apps/dashboard/src/components/homepage/open-source/opensource.module.css
+++ /dev/null
@@ -1,57 +0,0 @@
-@keyframes slideGradient {
- from {
- background-position: 0% 50%;
- }
- to {
- background-position: -200% 50%;
- }
-}
-
-.animatedGradient {
- cursor: pointer;
- position: relative;
- display: inline-block; /* Use inline-block for better control */
- background: linear-gradient(88deg, #fff 0%, #fff 50%, #9786df 60%, #fff 90%);
- -webkit-background-clip: text;
- background-clip: text;
- color: transparent;
- background-size: 200% 100%;
- animation: slideGradient 4s linear infinite;
-}
-
-.animatedGradient:hover {
- background: none;
- color: #9786df;
-}
-
-.githubIcon {
- position: absolute;
- top: 4px;
- right: -24px;
-}
-
-.animatedGradient:hover > .githubIcon > g > path {
- fill: #9786df;
-}
-
-@media screen and (max-width: 1166px) {
- .githubIcon {
- top: -10px;
- right: -12px;
- }
-}
-
-@media screen and (max-width: 611px) {
- .githubIcon {
- top: -10px;
- right: -12px;
- }
-}
-@media screen and (max-width: 479px) {
- .githubIcon {
- width: 16px;
- height: 16px;
- top: -8px;
- right: -8px;
- }
-}
diff --git a/apps/dashboard/src/components/homepage/sections/PricingEngine.tsx b/apps/dashboard/src/components/homepage/sections/PricingEngine.tsx
deleted file mode 100644
index 91c4e508d0e..00000000000
--- a/apps/dashboard/src/components/homepage/sections/PricingEngine.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Box, Container, Flex, SimpleGrid } from "@chakra-ui/react";
-import { EngineTierCard } from "components/engine/create/tier-card";
-import { useTrack } from "hooks/analytics/useTrack";
-import { useRouter } from "next/router";
-import { Heading } from "tw-components";
-
-interface PricingSectionProps {
- trackingCategory: string;
-}
-
-export const PricingEngineHomepage: React.FC = ({
- trackingCategory,
-}) => {
- const track = useTrack();
- const router = useRouter();
- return (
-
-
-
-
- Simple, transparent & flexible{" "}
-
- pricing for every team.
-
-
-
-
- {
- track({
- category: trackingCategory,
- action: "click",
- label: "clicked-cloud-hosted",
- tier: "STANDARD",
- });
- router.push("/dashboard/engine");
- }}
- />
-
- {
- track({
- category: trackingCategory,
- action: "click",
- label: "clicked-cloud-hosted",
- tier: "PREMIUM",
- });
- router.push("/dashboard/engine");
- }}
- />
-
- {
- track({
- category: trackingCategory,
- action: "click",
- label: "clicked-cloud-hosted",
- tier: "ENTERPRISE",
- });
- router.push("/contact-us");
- }}
- />
-
-
-
- );
-};
diff --git a/apps/dashboard/src/components/landing-pages/image-section-item.tsx b/apps/dashboard/src/components/landing-pages/image-section-item.tsx
deleted file mode 100644
index 3958da739d8..00000000000
--- a/apps/dashboard/src/components/landing-pages/image-section-item.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { Flex, type FlexProps } from "@chakra-ui/react";
-import type { StaticImageData } from "next/image";
-import { Text } from "tw-components";
-import { LandingDesktopMobileImage } from "./desktop-mobile-image";
-
-type LandingImageSectionItemProps = {
- image: StaticImageData;
- mobileImage: StaticImageData;
- title: string;
- description: string;
- maxHeightImage?: FlexProps["maxHeight"];
-} & FlexProps;
-
-const LandingImageSectionItem = ({
- mobileImage,
- image,
- title,
- description,
- maxHeightImage,
- ...rest
-}: LandingImageSectionItemProps) => {
- return (
-
-
-
-
-
-
- {title}
-
-
- {description && {description}}
-
-
- );
-};
-
-export default LandingImageSectionItem;
diff --git a/apps/dashboard/src/components/landing-pages/splash-image.tsx b/apps/dashboard/src/components/landing-pages/splash-image.tsx
deleted file mode 100644
index cf084da5135..00000000000
--- a/apps/dashboard/src/components/landing-pages/splash-image.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import { Box, Container, Flex } from "@chakra-ui/react";
-import type { StaticImageData } from "next/image";
-import { Heading, Text } from "tw-components";
-import { LandingCTAButtons } from "./cta-buttons";
-import { LandingDesktopMobileImage } from "./desktop-mobile-image";
-
-interface SplashImageProps {
- title: string;
- titleWithGradient: string;
- subtitle: string;
- trackingCategory: string;
- ctaText?: string;
- ctaLink?: string;
- // biome-ignore lint/complexity/noBannedTypes: FIXME
- lottie?: {};
- gradient: string;
- image?: StaticImageData;
- mobileImage?: StaticImageData;
- noCta?: boolean;
- contactUsTitle?: string;
- contactUsLink?: string;
-}
-
-export const SplashImage: React.FC = ({
- title,
- titleWithGradient,
- subtitle,
- trackingCategory,
- ctaText,
- ctaLink,
- gradient,
- lottie,
- image,
- mobileImage,
- noCta,
- contactUsTitle,
- contactUsLink,
-}) => {
- return (
-
-
-
-
-
- {title}{" "}
-
- {titleWithGradient}
-
-
-
-
- {subtitle}
-
-
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/apps/dashboard/src/components/notices/AnnouncementBanner.tsx b/apps/dashboard/src/components/notices/AnnouncementBanner.tsx
index 80b6a7e2366..4ae8e3e3035 100644
--- a/apps/dashboard/src/components/notices/AnnouncementBanner.tsx
+++ b/apps/dashboard/src/components/notices/AnnouncementBanner.tsx
@@ -53,8 +53,8 @@ function AnnouncementBanner(props: {
export function UnlimitedWalletsBanner() {
return (
);
diff --git a/apps/dashboard/src/components/product-pages/common/ImageCard.tsx b/apps/dashboard/src/components/product-pages/common/ImageCard.tsx
deleted file mode 100644
index b121cc34c19..00000000000
--- a/apps/dashboard/src/components/product-pages/common/ImageCard.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import { Box, Flex } from "@chakra-ui/react";
-import { ArrowRightIcon } from "lucide-react";
-import NextImage, { type StaticImageData } from "next/image";
-import { Card, Heading, TrackedLink } from "tw-components";
-import type { ComponentWithChildren } from "types/component-with-children";
-
-interface ImageCardProps {
- title: string;
- image: StaticImageData;
- TRACKING_CATEGORY: string;
- linkTitle?: string;
- category?: string;
- label: string;
- href: string;
-}
-
-export const ImageCard: ComponentWithChildren = ({
- title,
- image,
- href,
- linkTitle,
- category,
- TRACKING_CATEGORY,
- label,
- children,
-}) => {
- return (
-
-
-
-
-
- {title}
-
- {category && (
-
- {category}
-
- )}
-
- {children && (
-
- {children}
-
- )}
- {href && (
-
- {linkTitle || Visit website}
-
-
- )}
-
-
-
- );
-};
diff --git a/apps/dashboard/src/components/settings/Account/Billing/CouponCard.tsx b/apps/dashboard/src/components/settings/Account/Billing/CouponCard.tsx
index 93dcf204875..0bf0c18d46a 100644
--- a/apps/dashboard/src/components/settings/Account/Billing/CouponCard.tsx
+++ b/apps/dashboard/src/components/settings/Account/Billing/CouponCard.tsx
@@ -151,6 +151,8 @@ export function ApplyCouponCardUI(props: {
res.data,
// prod & dev
values.promoCode === "FREEWALLETS" ||
+ // new prod code
+ values.promoCode === "FREEWALLETS24" ||
values.promoCode === "TESTFREEWALLETS",
);
}
diff --git a/apps/dashboard/src/page-id.ts b/apps/dashboard/src/page-id.ts
index ca8652985a1..33fcaf68b84 100644
--- a/apps/dashboard/src/page-id.ts
+++ b/apps/dashboard/src/page-id.ts
@@ -66,8 +66,6 @@ export enum PageId {
// thirdweb.com/rpc-edge
RPCEdgeLanding = "rpc-edge-landing",
- // thirdweb.com/engine
- EngineLanding = "engine-landing",
// thirdweb.com/web3-dashboard
DashboardLanding = "dashboard-landing",
diff --git a/apps/dashboard/src/pages/engine.tsx b/apps/dashboard/src/pages/engine.tsx
deleted file mode 100644
index 47e961b82ba..00000000000
--- a/apps/dashboard/src/pages/engine.tsx
+++ /dev/null
@@ -1,394 +0,0 @@
-import { Box, Container, Flex } from "@chakra-ui/react";
-import { PricingEngineHomepage } from "components/homepage/sections/PricingEngine";
-import { LandingCardWithImage } from "components/landing-pages/card-with-image";
-import LandingCardWithMetrics from "components/landing-pages/card-with-metrics";
-import { LandingEndCTA } from "components/landing-pages/end-cta";
-import { Gradients } from "components/landing-pages/gradients";
-import { LandingGridSection } from "components/landing-pages/grid-section";
-import { LandingGuidesShowcase } from "components/landing-pages/guide-showcase";
-import { LandingHeroWithSideImage } from "components/landing-pages/hero-with-side-image";
-import LandingImageSectionItem from "components/landing-pages/image-section-item";
-import { LandingLayout } from "components/landing-pages/layout";
-import { LandingSectionHeading } from "components/landing-pages/section-heading";
-import { SplashImage } from "components/landing-pages/splash-image";
-import { getAbsoluteUrl } from "lib/vercel-utils";
-import { PageId } from "page-id";
-import { Heading, Text } from "tw-components";
-import type { ThirdwebNextPage } from "utils/types";
-import { OpenSource } from "../components/homepage/open-source/OpenSource";
-
-const TRACKING_CATEGORY = "engine-landing";
-
-export const metrics = [
- {
- title: "Stand With Crypto",
- description:
- "Championing clear crypto regulation to foster greater economic freedom via a grassroots advocacy hub.",
- image: require("../../public/assets/product-pages/engine/casestudy-image-standwithcrypto.png"),
- mobileImage: require("../../public/assets/product-pages/engine/casestudy-image-standwithcrypto.png"),
- items: [
- {
- title: "$87M+",
- description: "Raised",
- },
- {
- title: "515k+",
- description: "Crypto Advocates",
- colSpan: 2,
- },
- {
- title: "165k+",
- description: "Contacts",
- },
- ],
- href: "https://www.standwithcrypto.org/",
- hoverBackground: "#0053FF",
- },
- {
- title: "InfiniGods",
- description:
- "Building a free-to-play web3 game universe — with interoperable onchain assets that players truly own.",
- image: require("../../public/assets/product-pages/engine/casestudy-image-infinigods.png"),
- mobileImage: require("../../public/assets/product-pages/engine/casestudy-image-infinigods.png"),
- items: [
- {
- title: "100k+",
- description: "Daily Users",
- },
- {
- title: "1.5M+",
- description: "Monthly Transactions",
- colSpan: 2,
- },
- {
- title: "10k+",
- description: "VIP Members",
- },
- ],
- href: "https://blog.thirdweb.com/case-studies/king-of-destiny-launches-avatar-nfts-thirdweb-engine/",
- hoverBackground: "#25262B",
- },
- {
- title: "Coinbase Wallet",
- description:
- "Bringing onchain experiences to the real world — with seamless NFT creation, delivery, & transaction management.",
- image: require("../../public/assets/product-pages/engine/casestudy-image-coinbase-wallet.png"),
- mobileImage: require("../../public/assets/product-pages/engine/casestudy-image-coinbase-wallet.png"),
- items: [
- {
- title: "1,000+",
- description: "Real-World Transactions",
- colSpan: 2,
- },
- {
- title: "4 Weeks",
- description: "Total Development Time",
- colSpan: 2,
- },
- ],
- href: "https://blog.thirdweb.com/case-studies/coinbase-brings-onchain-experiences-to-life/",
- hoverBackground: "#0053FF",
- },
-];
-
-const GUIDES = [
- {
- title: "The Quick-Start Guide to thirdweb Engine",
- image: require("../../public/assets/product-pages/engine/guide-get-started.png"),
- link: "https://portal.thirdweb.com/engine/get-started",
- },
- {
- title: "Airdrop Tokens and NFTs to Users",
- image: require("../../public/assets/product-pages/engine/guide-airdrop.png"),
- link: "https://portal.thirdweb.com/engine/guides/airdrop-nfts",
- },
- {
- title: "Create a Gasless NFT Mint Farcaster Frame",
- image: require("../../public/assets/product-pages/engine/guide-farcaster-frame.png"),
- link: "https://blog.thirdweb.com/guides/create-an-nft-mint-farcaster-frame/",
- },
-];
-
-const EngineLanding: ThirdwebNextPage = () => {
- return (
-
-
-
-
-
-
-
- APIs for web3 apps & games
- >
- }
- titleWithGradient=""
- subtitle="Scalable smart contract APIs backed by secure wallets, with automatic nonce queuing & gas-optimized retries."
- trackingCategory={TRACKING_CATEGORY}
- ctaLink="/dashboard/engine"
- ctaText="Get started"
- contactUsTitle="Book a demo"
- gradient="linear(to-r, #9786DF, #9786DF)"
- lottie={require("../../public/assets/product-pages/engine/lottie.json")}
- contactUsBg="#0E0E0E"
- contactUsHover={{ background: "#0E0E0E" }}
- />
-
-
-
-
-
-
- }
- >
-
-
-
-
-
-
-
-
-
-
- }
- desktopColumns={4}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Trusted by the best
-
-
-
- thirdweb Engine powers the best onchain apps, integrating into
- any backend at scale.
-
-
- }
- desktopColumns={3}
- TRACKING_CATEGORY={TRACKING_CATEGORY}
- metrics={metrics}
- />
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-EngineLanding.pageId = PageId.EngineLanding;
-
-export default EngineLanding;
diff --git a/apps/dashboard/src/pages/solutions/gaming.tsx b/apps/dashboard/src/pages/solutions/gaming.tsx
deleted file mode 100644
index 9e99c4e1e12..00000000000
--- a/apps/dashboard/src/pages/solutions/gaming.tsx
+++ /dev/null
@@ -1,449 +0,0 @@
-import { Container, Flex, SimpleGrid } from "@chakra-ui/react";
-import LandingCardWithMetrics from "components/landing-pages/card-with-metrics";
-import { LandingEndCTA } from "components/landing-pages/end-cta";
-import { LandingGridSection } from "components/landing-pages/grid-section";
-import { LandingHero } from "components/landing-pages/hero";
-import { LandingIconSectionItem } from "components/landing-pages/icon-section-item";
-import { LandingLayout } from "components/landing-pages/layout";
-import { LandingOptionSelector } from "components/landing-pages/option-selector";
-import { ImageCard } from "components/product-pages/common/ImageCard";
-import { getAbsoluteUrl } from "lib/vercel-utils";
-import { PageId } from "page-id";
-import type { ReactNode } from "react";
-import {
- Card,
- type CardProps,
- Heading,
- Text,
- TrackedLink,
-} from "tw-components";
-import type { ThirdwebNextPage } from "utils/types";
-
-const TRACKING_CATEGORY = "gaming_kit";
-
-const SELECTOR_ITEMS = [
- {
- title: "Frictionless onboarding experience",
- description:
- "Get users onboarded quickly with familiar email and social log-ins— we create game wallets on behalf of users. Purchases can be made via credit card, Apple/Google Pay.",
- steps: [
- "User sign-in to app with their email or social log-in",
- "Wallet is created on behalf of the user abstracting away crypto entirely",
- "User interacts with app seamlessly— without disruptive transaction pop-ups",
- ],
- products: ["connect", "embedded-wallets", "smart-wallet"],
- },
- {
- title: "Uninterrupted game play",
- description:
- "Give users uninterrupted game play by removing disruptive transaction pop-ups. Generate on-chain transactions reliably and at scale on behalf of users.",
- steps: [
- "User completes a level in game and is rewarded with an in-game digital asset",
- "Developer sponsors the transaction so that user does not have to pay for gas fees",
- "User receives in-game asset without any interruption to game play",
- ],
- products: [
- "embedded-wallets",
- "smart-wallet",
- "sponsored-transactions",
- "engine",
- ],
- },
- {
- title: "Subscription and All Access passes",
- description:
- "Create digital loyalty passes that provide access to early gameplay content, exclusive NFT drops, and in-game boosts",
- steps: [
- "User selects a digital loyalty pass NFT when they login",
- "Loyalty pass is used to unlock in-game experiences",
- "User collects rewards to upgrade their loyalty pass",
- ],
- products: ["explore", "interact"],
- },
- {
- title: "Interoperable game ecosystems",
- description:
- "Give a unified interface to users to login across your gaming ecosystem with the flexibility to import/export their digital assets",
- steps: [
- "User logs in using existing game login",
- "Game links User's gaming wallet to game issued account",
- "User selects assets they want to import and gives game scoped access to use assets for duration of game play",
- ],
- products: ["auth", "smart-wallet", "engine"],
- },
- {
- title: "Game appchain",
- description:
- "Connect seamlessly to any EVM compatible L1, L2 blockchains as well as build your game on your own app chain.",
- steps: [
- "Game devs can add their app chain to thirdweb Dashboard and SDK's",
- "An app chain landing page is generated with links to SDKs, contract deployment and infrastructure for their app chain",
- "Developers can easily deploy contracts to their app chain in just a few clicks and get code snippets to integrate contracts into their games",
- ],
- products: ["rpc-edge", "explore", "interact", "engine"],
- },
- {
- title: "Marketplace for digital assets",
- description:
- "Generate revenue through the launch of your own on-chain marketplace",
- steps: [
- "Deploy marketplace contract",
- "Set % platform fee (% collected by game dev on every in-game asset sale, e.g. when buyer buys tokens from listing)",
- "Players can list and trade NFTs for sale at a fixed price",
- ],
- products: ["explore", "interact", "engine", "storage"],
- },
-];
-
-export const metrics = [
- {
- title: "Pixels",
- description:
- "Creating an open-world web3 game with a thriving ecosystem — with in-game tokens, VIP memberships, and digital assets that users own onchain.",
- image: require("../../../public/assets/landingpage/pixels.png"),
- mobileImage: require("../../../public/assets/landingpage/mobile-pixels.png"),
- items: [],
- href: "https://blog.thirdweb.com/case-studies/pixels-builds-an-onchain-ecosystem-for-its-web3-game",
- hoverBackground: "#622AFF",
- },
- {
- title: "Gala Games",
- description:
- "Partnering with DreamWorks to integrate their brand IP into the VOXverse — and bringing fans onchain with interoperable digital collectibles.",
- image: require("../../../public/assets/solutions-pages/gaming/case-study-gala.png"),
- mobileImage: require("../../../public/assets/solutions-pages/gaming/mobile-case-study-gala.png"),
- items: [],
- href: "https://blog.thirdweb.com/case-studies/dreamworks-launches-nft-avatars-for-web3-games-with-gala-and-the-sims-creators-voxverse/",
- hoverBackground: "#0053FF",
- },
- {
- title: "Paima Studios",
- description:
- "Bringing onchain games to all players — with instant onboarding, an `invisible` wallet experience, and the smoothest gameplay with signless & gasless UX.",
- image: require("../../../public/assets/solutions-pages/gaming/case-study-ztx.png"),
- mobileImage: require("../../../public/assets/solutions-pages/gaming/mobile-case-study-ztx.png"),
- items: [],
- href: "https://paimastudios.com",
- hoverBackground: "#00B477",
- },
-];
-
-const SolutionsGamingCard = ({
- children,
- href,
- label,
- ...rest
-}: { children: ReactNode; href: string; label: string } & CardProps) => {
- return (
-
-
- {children}
-
-
- );
-};
-
-const SolutionsGaming: ThirdwebNextPage = () => {
- return (
-
-
-
-
-
-
-
-
-
-
-
- Build games on any platform
-
-
-
-
-
-
-
-
-
-
- Create new gaming universes
-
-
-
- A full-scale action RPG — built in 3 weeks using thirdweb's
- Unity SDK.
-
-
-
- A simple web3 mobile game — gone viral & built in 2 days using
- thirdweb.
-
-
-
- Guide your fowl through a fantastical landscape that requires
- quick reflexes and precise timing.
-
-
-
-
-
-
-
-
- The complete stack for web3 games
-
-
-
- Everything you need to build full-featured onchain games.
-
-
- }
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Trusted by the best
-
-
-
- Powering web3 apps across verticals — from onchain games to
- creator platforms.
-
-
- }
- desktopColumns={3}
- TRACKING_CATEGORY={TRACKING_CATEGORY}
- metrics={metrics}
- />
-
-
-
-
- );
-};
-
-SolutionsGaming.pageId = PageId.SolutionsGaming;
-
-export default SolutionsGaming;