Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions CHANGES_SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Portal-Only Engine to Transactions Migration Summary

## Overview
Renamed `/engine` slugs to `/transactions` in the **portal app only**, with comprehensive redirects for backward compatibility.

## Portal Changes Made

### 1. Directory Structure
- **Moved**: `/apps/portal/src/app/engine` → `/apps/portal/src/app/transactions`

### 2. Navigation & UI Updates
- **Header.tsx**: Updated main navigation `/engine` → `/transactions`
- **Sidebar files** (v2 & v3): All internal links updated to use `/transactions` paths
- **Layout files**: Updated to display "Transactions" instead of "Engine"
- **EngineVersionSelector component**: Updated to use transaction routes
- **Main page**: Updated article card link
- **DocSearch component**: Updated search handling

### 3. Comprehensive Redirect Configuration
Added `engineToTransactionsRedirects` in `redirects.mjs`:
```javascript
const engineToTransactionsRedirects = {
"/engine": "/transactions/v3", // Default to latest
"/engine/v2": "/transactions/v2",
"/engine/v3": "/transactions/v3",
"/engine/:path*": "/transactions/:path*" // Catch-all
};
```

### 4. Cross-Reference Updates (Portal Only)
- **Unreal Engine references**: Updated to use `/transactions`
- **Infrastructure redirects**: Updated to point to `/transactions`
- **Other redirects**: Updated various legacy redirects

## What Was NOT Changed
- **Dashboard app**: No changes made (still uses `/engine`)
- **Playground app**: No changes made (still uses `/engine`)
- **Packages/SDK**: No documentation link changes made
- **External links**: Only portal-internal links updated

## Result
- ✅ Portal now uses `/transactions` URLs consistently
- ✅ All old `/engine` URLs redirect to `/transactions`
- ✅ Backward compatibility maintained
- ✅ Other apps remain unchanged as requested
- ✅ External playground/API links still work correctly
67 changes: 41 additions & 26 deletions apps/portal/redirects.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -830,35 +830,47 @@ const contractRedirects = {
"/sdk/how-it-works": "/contracts",
};

const engineToTransactionsRedirects = {
"/engine": "/transactions/v3",
"/engine/v2": "/transactions/v2",
"/engine/v3": "/transactions/v3",
"/engine/:path*": "/transactions/:path*",
};

const infrastructureRedirects = {
"/engine": "/engine/v3",
"/engine/features/permissions": "/engine/features/admins",
"/guides/engine/relayer": "/engine/features/relayer",
"/engine/features/permissions": "/transactions/features/admins",
"/guides/engine/relayer": "/transactions/features/relayer",
//engine top-level
"/infrastructure/engine": "/engine",
"/infrastructure/engine/faq": "/engine/faq",
"/infrastructure/engine": "/transactions",
"/infrastructure/engine/faq": "/transactions/faq",
"/infrastructure/engine/features/backend-wallets":
"/engine/features/backend-wallets",
"/infrastructure/engine/features/contracts": "/engine/features/contracts",
"/transactions/features/backend-wallets",
"/infrastructure/engine/features/contracts":
"/transactions/features/contracts",
"/infrastructure/engine/features/gasless-transactions":
"/engine/features/gasless-transactions",
"/infrastructure/engine/features/permissions": "/engine/features/permissions",
"/infrastructure/engine/features/relayers": "/engine/features/relayers",
"/transactions/features/gasless-transactions",
"/infrastructure/engine/features/permissions":
"/transactions/features/permissions",
"/infrastructure/engine/features/relayers": "/transactions/features/relayers",
"/infrastructure/engine/features/smart-wallets":
"/engine/features/smart-wallets",
"/infrastructure/engine/features/webhooks": "/engine/features/webhooks",
"/infrastructure/engine/get-started": "/engine/get-started",
"/infrastructure/engine/guides/airdrop-nfts": "/engine/guides/airdrop-nfts",
"/infrastructure/engine/guides/nft-checkout": "/engine/guides/nft-checkout",
"/infrastructure/engine/guides/smart-wallets": "/engine/guides/smart-wallets",
"/infrastructure/engine/overview": "/engine",
"/infrastructure/engine/production-checklist": "/engine/production-checklist",
"/transactions/features/smart-wallets",
"/infrastructure/engine/features/webhooks": "/transactions/features/webhooks",
"/infrastructure/engine/get-started": "/transactions/get-started",
"/infrastructure/engine/guides/airdrop-nfts":
"/transactions/guides/airdrop-nfts",
"/infrastructure/engine/guides/nft-checkout":
"/transactions/guides/nft-checkout",
"/infrastructure/engine/guides/smart-wallets":
"/transactions/guides/smart-wallets",
"/infrastructure/engine/overview": "/transactions",
"/infrastructure/engine/production-checklist":
"/transactions/production-checklist",
"/infrastructure/engine/references/api-reference":
"/engine/references/api-reference",
"/transactions/references/api-reference",
"/infrastructure/engine/references/typescript":
"/engine/references/typescript",
"/infrastructure/engine/self-host": "/engine/self-host",
"/infrastucture/engine/security": "/engine/security",
"/transactions/references/typescript",
"/infrastructure/engine/self-host": "/transactions/self-host",
"/infrastucture/engine/security": "/transactions/security",
//rpc-edge
"/rpc-edge": "/infrastructure/rpc-edge/overview",
"/rpc-edge/faqs": "/infrastructure/rpc-edge/overview",
Expand Down Expand Up @@ -949,12 +961,13 @@ const otherRedirects = {
"/contracts/token": "/contracts/explore/pre-built-contracts/token",
"/contracts/token-drop": "/contracts/explore/pre-built-contracts/token-drop",
"/contracts/vote": "/contracts/explore/pre-built-contracts/vote",
"/engine/features/smart-wallets": "/engine/features/account-abstraction",
"/transactions/features/smart-wallets":
"/transactions/features/account-abstraction",
"/extensions/:path*": "/contracts/build/extensions",
"/gaming": "/",
"/gaming-kit/:path*": "/unity",
"/gamingkit/:path*": "/unity",
"/go": "/engine/overview",
"/go": "/transactions/overview",
"/guides": "https://blog.thirdweb.com/guides",
"/guides/bundle-collection": "https://blog.thirdweb.com/tag/edition",
"/guides/bundle-drop": "https://blog.thirdweb.com/tag/edition-drop",
Expand Down Expand Up @@ -989,7 +1002,7 @@ const otherRedirects = {
"/pre-built-contracts/:path*": "/contracts",
"/pre-built-contracts/solana/:match*":
"https://blog.thirdweb.com/discontinuing-solana-support/",
"/python": "/engine/overview",
"/python": "/transactions/overview",
"/react-native/v0/wallets/embedded-wallet":
"/react-native/v0/wallets/in-app-wallet",
// in-app wallet
Expand Down Expand Up @@ -1024,7 +1037,7 @@ const otherRedirects = {
"/wallets/embedded-wallet/:path*": "/connect/embedded-wallet/:path*",
// account abstraction rename
"/wallets/smart-wallet/:path*": "/connect/account-abstraction/:path*",
"/web3-api/:path*": "/infrastructure/engine/overview",
"/web3-api/:path*": "/transactions/overview",
};

const v5RestructuredRedirects = {
Expand Down Expand Up @@ -1076,6 +1089,8 @@ const payRedirects = {
*/
export const redirects = async () => {
return [
// Engine to Transactions redirects (highest priority)
...createRedirects(engineToTransactionsRedirects),
// old portal redirects
...createRedirects(reactRedirects),
...createRedirects(solidityRedirects),
Expand Down
2 changes: 1 addition & 1 deletion apps/portal/src/app/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const links = [
name: "Payments",
},
{
href: "/engine",
href: "/transactions",
name: "Transactions",
},
{
Expand Down
2 changes: 1 addition & 1 deletion apps/portal/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ function LearningResourcesSection() {
/>
<ArticleCardIndex
description="Reliable transactions and monitoring"
href="/engine"
href="/transactions"
icon={EngineIcon}
title="Transactions"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ export default async function Layout(props: { children: React.ReactNode }) {
sideBar={sidebar}
sidebarHeader={
<div className="flex-col items-center gap-1">
<p className="py-5 font-semibold text-foreground text-lg">Engine</p>
<p className="py-5 font-semibold text-foreground text-lg">
Transactions
</p>
<EngineVersionSelector selected="v2" />
</div>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ import {
} from "lucide-react";
import type { SideBar } from "@/components/Layouts/DocLayout";

const engineSlug = "/engine/v2";
const transactionsSlug = "/transactions/v2";

export const sidebar: SideBar = {
links: [
{
href: engineSlug,
href: transactionsSlug,
icon: <CloudIcon />,
name: "Overview",
},
Expand All @@ -30,90 +30,90 @@ export const sidebar: SideBar = {
name: "Playground",
},
{
href: `${engineSlug}/get-started`,
href: `${transactionsSlug}/get-started`,
icon: <RocketIcon />,
name: "Get Started",
},
{
icon: <KeyIcon />,
links: [
{
href: `${engineSlug}/features/transactions`,
href: `${transactionsSlug}/features/transactions`,
name: "Transactions",
},
{
href: `${engineSlug}/features/contracts`,
href: `${transactionsSlug}/features/contracts`,
name: "Contracts",
},
{
href: `${engineSlug}/features/admins`,
href: `${transactionsSlug}/features/admins`,
name: "Admins",
},
{
href: `${engineSlug}/features/access-tokens`,
href: `${transactionsSlug}/features/access-tokens`,
name: "Access Tokens",
},
{
href: `${engineSlug}/features/webhooks`,
href: `${transactionsSlug}/features/webhooks`,
name: "Webhooks",
},
{
href: `${engineSlug}/features/preventing-duplicate-transactions`,
href: `${transactionsSlug}/features/preventing-duplicate-transactions`,
name: "Preventing Duplicate Transactions",
},
{
href: `${engineSlug}/features/custom-chains`,
href: `${transactionsSlug}/features/custom-chains`,
name: "Custom Chains",
},
{
href: `${engineSlug}/features/account-abstraction`,
href: `${transactionsSlug}/features/account-abstraction`,
name: "Account Abstraction",
},
{
href: `${engineSlug}/features/relayers`,
href: `${transactionsSlug}/features/relayers`,
name: "Relayers",
},
{
href: `${engineSlug}/features/gasless-transactions`,
href: `${transactionsSlug}/features/gasless-transactions`,
name: "Gasless Transactions",
},
{
href: `${engineSlug}/features/contract-subscriptions`,
href: `${transactionsSlug}/features/contract-subscriptions`,
name: "Contract Subscriptions",
},
{
href: `${engineSlug}/features/alert-notifications`,
href: `${transactionsSlug}/features/alert-notifications`,
name: "Alert Notifications",
},
{
href: `${engineSlug}/features/security`,
href: `${transactionsSlug}/features/security`,
name: "Security",
},
],
name: "Key Concepts",
},
{
href: `${engineSlug}/configure-wallets`,
href: `${transactionsSlug}/configure-wallets`,
icon: <WalletIcon />,
links: [
{
href: `${engineSlug}/configure-wallets/server-wallet`,
href: `${transactionsSlug}/configure-wallets/server-wallet`,
name: "Smart Server Wallet",
},
{
href: `${engineSlug}/configure-wallets/aws-kms`,
href: `${transactionsSlug}/configure-wallets/aws-kms`,
name: "AWS KMS",
},
{
href: `${engineSlug}/configure-wallets/gcp-kms`,
href: `${transactionsSlug}/configure-wallets/gcp-kms`,
name: "Google Cloud KMS",
},
{
href: `${engineSlug}/configure-wallets/circle-wallet`,
href: `${transactionsSlug}/configure-wallets/circle-wallet`,
name: "Circle Wallet",
},
{
href: `${engineSlug}/configure-wallets/wallet-credentials`,
href: `${transactionsSlug}/configure-wallets/wallet-credentials`,
name: "Wallet Credentials",
},
],
Expand All @@ -122,8 +122,14 @@ export const sidebar: SideBar = {
{
icon: <BookMarkedIcon />,
links: [
{ href: `${engineSlug}/guides/airdrop-nfts`, name: "Airdrop NFTs" },
{ href: `${engineSlug}/guides/nft-checkout`, name: "NFT Checkout" },
{
href: `${transactionsSlug}/guides/airdrop-nfts`,
name: "Airdrop NFTs",
},
{
href: `${transactionsSlug}/guides/nft-checkout`,
name: "NFT Checkout",
},
],
name: "Tutorials",
},
Expand All @@ -133,32 +139,32 @@ export const sidebar: SideBar = {
name: "API Reference",
},
{
href: `${engineSlug}/references/typescript`,
href: `${transactionsSlug}/references/typescript`,
icon: <CodeIcon />,
name: "Typescript SDK",
},
{
href: `${engineSlug}/production-checklist`,
href: `${transactionsSlug}/production-checklist`,
icon: <ListCheckIcon />,
name: "Prod Checklist",
},
{
href: `${engineSlug}/self-host`,
href: `${transactionsSlug}/self-host`,
icon: <ServerIcon />,
name: "Self-Host",
},
{
href: `${engineSlug}/security`,
href: `${transactionsSlug}/security`,
icon: <ShieldQuestionIcon />,
name: "Security",
},
{
href: `${engineSlug}/troubleshooting`,
href: `${transactionsSlug}/troubleshooting`,
icon: <WrenchIcon />,
name: "Troubleshoot",
},
{
href: `${engineSlug}/faq`,
href: `${transactionsSlug}/faq`,
icon: <MessageCircleQuestionIcon />,
name: "FAQ",
},
Expand Down
Loading
Loading