Compare commits

..

3 Commits

Author SHA1 Message Date
Maria Shodunke
2e36e45582 Fix missing Globe icon in light mode 2026-02-23 16:01:00 +00:00
Maria Shodunke
b149e7a25f Fix Lending sidebar order + minor fixes
- Fix Lending sidebar order and remove landing pages.
- Fix tutorial headings to match language in filename.
2026-02-23 15:50:21 +00:00
Maria Shodunke
6c1c7ad300 Update Tutorials Landing Page 2026-02-23 14:38:03 +00:00
19 changed files with 678 additions and 416 deletions

View File

@@ -577,6 +577,16 @@ Stay ahead of the curve with the latest developments in RWA tokenization on the
Join the Developer Discord: 開発者ディスコードに参加
Sign up for the Newsletter: ニュースレターに登録
# docs/tutorials/index.page.tsx
Crypto Wallet and Blockchain Development Tutorials: 暗号資産ウォレットやブロックチェーン開発のチュートリアル
These tutorials walk you through the basics of building a very simple XRP Ledger-connected application using your favorite programming language.: これらのチュートリアルでは、お好きなプログラミング言語を使って、XRP Ledgerに接続するアプリケーションを構築するための基礎について説明します。
Get Started with SDKs: SDKを使って始める
Using the xrpl.js client library.: クライアントライブラリxrpl.jsを使用。
Using xrpl.py, a pure Python library.: Pythonライブラリxrpl.pyを使用。
Using xrpl4j, a pure Java library.: Javaライブラリを使用。
Using the XRPL_PHP client library.: PHPライブラリXRPL_PHPを使用。
Access the XRP Ledger directly through the APIs of its core server.: コアサーバのAPIを通じてXRP Ledgerに直接アクセス。
# community/index.page.tsx
XRPL Community: XRPLコミュニティ
community.index.h1part1: 開発者とイノベーターによる

View File

@@ -1,12 +1,13 @@
import { indexPages } from './plugins/index-pages.js';
import { codeSamples } from './plugins/code-samples.js';
import { blogPosts } from './plugins/blog-posts.js';
import { tutorialLanguages } from './plugins/tutorial-languages.js'
export default function customPlugin() {
const indexPagesInst = indexPages();
const codeSamplesInst = codeSamples();
const blogPostsInst = blogPosts();
const tutorialLanguagesInst = tutorialLanguages();
/** @type {import("@redocly/realm/dist/server/plugins/types").PluginInstance } */
@@ -16,11 +17,13 @@ export default function customPlugin() {
await indexPagesInst.processContent?.(content, actions);
await codeSamplesInst.processContent?.(content, actions);
await blogPostsInst.processContent?.(content, actions);
await tutorialLanguagesInst.processContent?.(content, actions);
},
afterRoutesCreated: async (content, actions) => {
await indexPagesInst.afterRoutesCreated?.(content, actions);
await codeSamplesInst.afterRoutesCreated?.(content, actions);
await blogPostsInst.afterRoutesCreated?.(content, actions);
await tutorialLanguagesInst.processContent?.(content, actions);
},
};

View File

@@ -0,0 +1,118 @@
// @ts-check
/**
* Plugin to detect languages supported in tutorial pages by scanning for tab labels.
* This creates shared data that maps tutorial paths to their supported languages.
*/
export function tutorialLanguages() {
/** @type {import("@redocly/realm/dist/server/plugins/types").PluginInstance } */
const instance = {
processContent: async (actions, { fs, cache }) => {
try {
/** @type {Record<string, string[]>} */
const tutorialLanguagesMap = {}
const allFiles = await fs.scan()
// Find all markdown files in tutorials directory
const tutorialFiles = allFiles.filter((file) =>
file.relativePath.match(/^docs[\/\\]tutorials[\/\\].*\.md$/)
)
for (const { relativePath } of tutorialFiles) {
try {
const { data } = await cache.load(relativePath, 'markdown-ast')
const languages = extractLanguagesFromAst(data.ast)
if (languages.length > 0) {
// Convert file path to URL path
const urlPath = '/' + relativePath
.replace(/\.md$/, '/')
.replace(/\\/g, '/')
tutorialLanguagesMap[urlPath] = languages
}
} catch (err) {
continue // Skip files that can't be parsed.
}
}
actions.createSharedData('tutorial-languages', tutorialLanguagesMap)
actions.addRouteSharedData('/docs/tutorials/', 'tutorial-languages', 'tutorial-languages')
actions.addRouteSharedData('/ja/docs/tutorials/', 'tutorial-languages', 'tutorial-languages')
actions.addRouteSharedData('/es-es/docs/tutorials/', 'tutorial-languages', 'tutorial-languages')
} catch (e) {
console.log('[tutorial-languages] Error:', e)
}
},
}
return instance
}
/**
* Extract language names from tab labels in the markdown AST
*/
function extractLanguagesFromAst(ast) {
const languages = new Set()
visit(ast, (node) => {
// Look for tab nodes with a label attribute
if (isNode(node) && node.type === 'tag' && node.tag === 'tab') {
const label = node.attributes?.label
if (label) {
const normalizedLang = normalizeLanguage(label)
if (normalizedLang) {
languages.add(normalizedLang)
}
}
}
})
return Array.from(languages)
}
/**
* Convert tab labels like "JavaScript", "Python", etc. to lowercase keys
* used for displaying the correct language icons on tutorial cards.
*/
function normalizeLanguage(label) {
const labelLower = label.toLowerCase()
if (labelLower.includes('javascript') || labelLower === 'js') {
return 'javascript'
}
if (labelLower.includes('python') || labelLower === 'py') {
return 'python'
}
if (labelLower.includes('java') && !labelLower.includes('javascript')) {
return 'java'
}
if (labelLower.includes('php')) {
return 'php'
}
if (labelLower.includes('go') || labelLower === 'golang') {
return 'go'
}
if (labelLower.includes('http') || labelLower.includes('websocket')) {
return 'http'
}
return null
}
function isNode(value) {
return !!(value?.$$mdtype === 'Node')
}
function visit(node, visitor) {
if (!node) return
visitor(node)
if (node.children) {
for (const child of node.children) {
if (!child || typeof child === 'string') {
continue
}
visit(child, visitor)
}
}
}

View File

@@ -5,7 +5,7 @@ labels:
- Decentralized Finance
- Permissioned Domains
---
# Create Permissioned Domains
# Create Permissioned Domains in JavaScript
Permissioned domains are controlled environments within the broader ecosystem of the XRP Ledger blockchain. Domains restrict access to other features such as Permissioned DEXes and Lending Protocols, only allowing access to them for accounts with specific credentials.

View File

@@ -1,4 +1,4 @@
# Add Assets to an AMM
# Add Assets to an AMM in JavaScript
Follow the steps from the [Create an AMM](./create-an-automated-market-maker.md) tutorial before proceeding.

View File

@@ -1,4 +1,4 @@
# Trade with an AMM Auction Slot
# Trade with an AMM Auction Slot in JavaScript
Follow the steps from the [Create an AMM](./create-an-automated-market-maker.md) tutorial before proceeding.

View File

@@ -1,14 +0,0 @@
---
seo:
description: Pool funds in a single asset vault and enable on-chain, fixed-term, uncollateralized loans.
metadata:
indexPage: true
labels:
- Lending Protocol
- Single Asset Vault
---
# Set Up Lending
Pool funds in a single asset vault and enable on-chain, fixed-term, uncollateralized loans. The lending protocol is highly configurable, enabling loan brokers to easily tune risk appetite, depostitor protections, and economic incentives.
{% child-pages /%}

View File

@@ -1,13 +0,0 @@
---
seo:
description: Create, deposit into, and withdraw from single asset vaults.
metadata:
indexPage: true
labels:
- Single Asset Vault
---
# Use Single Asset Vaults
Single asset vaults aggregate assets from multiple depositors and make them available to other on-chain protocols.
{% child-pages /%}

View File

@@ -1,13 +0,0 @@
---
seo:
description: Create and manage loans on the XRP Ledger.
metadata:
indexPage: true
labels:
- Lending Protocol
---
# Use the Lending Protocol
The Lending Protocol enables you to create highly configurable loans on the XRP Ledger.
{% child-pages /%}

View File

@@ -1,29 +0,0 @@
---
seo:
description: Learn how to get started building on the XRP Ledger with these helpful crypto wallet and blockchain tutorials for developers.
---
# Crypto Wallet and Blockchain Development Tutorials
The XRP Ledger tutorials walk you through the steps to learn and get started with the XRP Ledger and to use the ledger for advanced use cases.
## Get Started with SDKs
These tutorials walk you through the basics of building a very simple XRP Ledger-connected application using your favorite programming language.
{% card-grid %}
{% xrpl-card title="Javascript" body="Using the xrpl.js client library." href="/docs/tutorials/get-started/get-started-javascript/" image="/img/logos/javascript.svg" imageAlt="Javascript logo" /%}
{% xrpl-card title="Python" body="Using xrpl.py, a pure Python library." href="/docs/tutorials/get-started/get-started-python/" image="/img/logos/python.svg" imageAlt="Python logo" /%}
{% xrpl-card title="Go" body="Using xrpl-go, a pure Go library." href="/docs/tutorials/get-started/get-started-go/" image="/img/logos/golang.svg" imageAlt="Go logo" /%}
{% xrpl-card title="Java" body="Using xrpl4j, a pure Java library." href="/docs/tutorials/get-started/get-started-java/" image="/img/logos/java.svg" imageAlt="Java logo" /%}
{% xrpl-card title="PHP" body="Using the XRPL_PHP client library." href="/docs/tutorials/get-started/get-started-php/" image="/img/logos/php.svg" imageAlt="PHP logo" /%}
{% xrpl-card title="HTTP & WebSocket APIs" body="Access the XRP Ledger directly through the APIs of its core server." href="/docs/tutorials/get-started/get-started-http-websocket-apis/" image="/img/logos/globe.svg" imageAlt="globe icon" /%}
{% /card-grid %}
<!-- TODO: Add new sections for the new tutorial categories -->

View File

@@ -0,0 +1,353 @@
import { useThemeHooks } from "@redocly/theme/core/hooks"
export const frontmatter = {
seo: {
title: "Tutorials",
description:
"Learn how to get started building on the XRP Ledger with these helpful crypto wallet and blockchain tutorials for developers.",
},
}
const langIcons: Record<string, { src: string; alt: string }> = {
javascript: { src: "/img/logos/javascript.svg", alt: "JavaScript" },
python: { src: "/img/logos/python.svg", alt: "Python" },
java: { src: "/img/logos/java.svg", alt: "Java" },
go: { src: "/img/logos/golang.svg", alt: "Go" },
php: { src: "/img/logos/php.svg", alt: "PHP" },
http: { src: "/img/logos/globe.svg", alt: "HTTP / WebSocket" },
xrpl: { src: "/img/logos/xrp-mark.svg", alt: "XRP Ledger" },
}
// Type for the tutorial languages map from the plugin
type TutorialLanguagesMap = Record<string, string[]>
interface Tutorial {
title: string
body?: string
path: string
icon?: string // Single language icon (for single-language tutorials)
}
interface TutorialSection {
id: string
title: string
description: string
tutorials: Tutorial[]
}
// Get Started tutorials -----------------
const getStartedTutorials: Tutorial[] = [
{
title: "JavaScript",
body: "Using the xrpl.js client library.",
path: "/docs/tutorials/get-started/get-started-javascript/",
icon: "javascript",
},
{
title: "Python",
body: "Using xrpl.py, a pure Python library.",
path: "/docs/tutorials/get-started/get-started-python/",
icon: "python",
},
{
title: "Go",
body: "Using xrpl-go, a pure Go library.",
path: "/docs/tutorials/get-started/get-started-go/",
icon: "go",
},
{
title: "Java",
body: "Using xrpl4j, a pure Java library.",
path: "/docs/tutorials/get-started/get-started-java/",
icon: "java",
},
{
title: "PHP",
body: "Using the XRPL_PHP client library.",
path: "/docs/tutorials/get-started/get-started-php/",
icon: "php",
},
{
title: "HTTP & WebSocket APIs",
body: "Access the XRP Ledger directly through the APIs of its core server.",
path: "/docs/tutorials/get-started/get-started-http-websocket-apis/",
icon: "http",
},
]
// Other tutorial sections -----------------
// Languages are auto-detected from the markdown files by the tutorial-languages plugin.
// Only specify `icon` for single-language tutorials without tabs.
const sections: TutorialSection[] = [
{
id: "tokens",
title: "Tokens",
description: "Create and manage tokens on the XRP Ledger.",
tutorials: [
{
title: "Issue a Multi-Purpose Token",
body: "Issue new tokens using the v2 fungible token standard.",
path: "/docs/tutorials/tokens/mpts/issue-a-multi-purpose-token/",
},
{
title: "Issue a Fungible Token",
body: "Issue new tokens using the v1 fungible token standard.",
path: "/docs/tutorials/tokens/fungible-tokens/issue-a-fungible-token/",
},
{
title: "Mint and Burn NFTs Using JavaScript",
body: "Create new NFTs, retrieve existing tokens, and burn the ones you no longer need.",
path: "/docs/tutorials/tokens/nfts/mint-and-burn-nfts-js/",
icon: "javascript",
},
],
},
{
id: "payments",
title: "Payments",
description: "Transfer XRP and issued currencies using various payment types.",
tutorials: [
{
title: "Send XRP",
body: "Send a direct XRP payment to another account.",
path: "/docs/tutorials/payments/send-xrp/",
},
{
title: "Sending MPTs in JavaScript",
body: "Send a Multi-Purpose Token (MPT) to another account with the JavaScript SDK.",
path: "/docs/tutorials/tokens/mpts/sending-mpts-in-javascript/",
icon: "javascript",
},
{
title: "Create Trust Line and Send Currency in JavaScript",
body: "Set up trust lines and send issued currencies with the JavaScript SDK.",
path: "/docs/tutorials/payments/create-trust-line-send-currency-in-javascript/",
icon: "javascript",
},
{
title: "Create Trust Line and Send Currency in Python",
body: "Set up trust lines and send issued currencies with the Python SDK.",
path: "/docs/tutorials/payments/create-trust-line-send-currency-in-python/",
icon: "python",
},
{
title: "Send a Conditional Escrow",
body: "Send an escrow that can be released when a specific crypto-condition is fulfilled.",
path: "/docs/tutorials/payments/send-a-conditional-escrow/",
},
{
title: "Send a Timed Escrow",
body: "Send an escrow whose only condition for release is that a specific time has passed.",
path: "/docs/tutorials/payments/send-a-timed-escrow/",
},
],
},
{
id: "defi",
title: "DeFi",
description: "Trade, provide liquidity, and lend using native XRP Ledger DeFi features.",
tutorials: [
{
title: "Create an Automated Market Maker",
body: "Set up an AMM for a token pair and provide liquidity.",
path: "/docs/tutorials/defi/dex/create-an-automated-market-maker/",
},
{
title: "Trade in the Decentralized Exchange",
body: "Buy and sell tokens in the Decentralized Exchange (DEX).",
path: "/docs/tutorials/defi/dex/trade-in-the-decentralized-exchange/",
},
{
title: "Create a Loan Broker",
body: "Set up a loan broker to create and manage loans.",
path: "/docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan-broker/",
},
{
title: "Create a Loan",
body: "Create a loan on the XRP Ledger.",
path: "/docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan/",
},
{
title: "Create a Single Asset Vault",
body: "Create a single asset vault on the XRP Ledger.",
path: "/docs/tutorials/defi/lending/use-single-asset-vaults/create-a-single-asset-vault/",
},
{
title: "Deposit into a Vault",
body: "Deposit assets into a vault and receive shares.",
path: "/docs/tutorials/defi/lending/use-single-asset-vaults/deposit-into-a-vault/",
},
],
},
{
id: "best-practices",
title: "Best Practices",
description: "Learn recommended patterns for building reliable, secure applications on the XRP Ledger.",
tutorials: [
{
title: "API Usage",
body: "Best practices for using XRP Ledger APIs.",
path: "/docs/tutorials/best-practices/api-usage/",
},
{
title: "Use Tickets",
body: "Use tickets to send transactions out of the normal order.",
path: "/docs/tutorials/best-practices/transaction-sending/use-tickets/",
},
{
title: "Send a Single Account Batch Transaction",
body: "Group multiple transactions together and execute them as a single atomic operation.",
path: "/docs/tutorials/best-practices/transaction-sending/send-a-single-account-batch-transaction/",
},
{
title: "Assign a Regular Key Pair",
body: "Assign a regular key pair for signing transactions.",
path: "/docs/tutorials/best-practices/key-management/assign-a-regular-key-pair/",
},
{
title: "Set Up Multi-Signing",
body: "Configure multi-signing for enhanced security.",
path: "/docs/tutorials/best-practices/key-management/set-up-multi-signing/",
},
{
title: "Send a Multi-Signed Transaction",
body: "Send a transaction with multiple signatures.",
path: "/docs/tutorials/best-practices/key-management/send-a-multi-signed-transaction/",
},
],
},
{
id: "sample-apps",
title: "Sample Apps",
description: "Build complete, end-to-end applications like wallets and credential services.",
tutorials: [
{
title: "Build a Browser Wallet in JavaScript",
body: "Build a browser wallet for the XRP Ledger using JavaScript and various libraries.",
path: "/docs/tutorials/sample-apps/build-a-browser-wallet-in-javascript/",
icon: "javascript",
},
{
title: "Build a Desktop Wallet in JavaScript",
body: "Build a desktop wallet for the XRP Ledger using JavaScript, the Electron Framework, and various libraries.",
path: "/docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript/",
icon: "javascript",
},
{
title: "Build a Desktop Wallet in Python",
body: "Build a desktop wallet for the XRP Ledger using Python and various libraries.",
path: "/docs/tutorials/sample-apps/build-a-desktop-wallet-in-python/",
icon: "python",
},
{
title: "Credential Issuing Service in JavaScript",
body: "Build a credential issuing service using the JavaScript SDK.",
path: "/docs/tutorials/sample-apps/credential-issuing-service-in-javascript/",
icon: "javascript",
},
{
title: "Credential Issuing Service in Python",
body: "Build a credential issuing service using the Python SDK.",
path: "/docs/tutorials/sample-apps/credential-issuing-service-in-python/",
icon: "python",
},
],
},
]
function TutorialCard({
tutorial,
detectedLanguages,
showFooter = false,
translate,
}: {
tutorial: Tutorial
detectedLanguages?: string[]
showFooter?: boolean
translate: (text: string) => string
}) {
// Get icons: auto-detected languages take priority, then manual icon, then XRPL fallback
const icons = detectedLanguages && detectedLanguages.length > 0
? detectedLanguages.map((lang) => langIcons[lang]).filter(Boolean)
: tutorial.icon && langIcons[tutorial.icon]
? [langIcons[tutorial.icon]]
: [langIcons.xrpl]
return (
<a href={tutorial.path} className="card">
<div className="card-header d-flex align-items-center flex-wrap">
{icons.map((icon, idx) => (
<span className="circled-logo" key={idx}>
<img src={icon.src} alt={icon.alt} />
</span>
))}
</div>
<div className="card-body">
<h4 className="card-title h5">{translate(tutorial.title)}</h4>
{tutorial.body && <p className="card-text">{translate(tutorial.body)}</p>}
</div>
{showFooter && <div className="card-footer"></div>}
</a>
)
}
export default function TutorialsIndex() {
const { useTranslate, usePageSharedData } = useThemeHooks()
const { translate } = useTranslate()
// Get auto-detected languages from the plugin (maps tutorial paths to language arrays).
const tutorialLanguages = usePageSharedData<TutorialLanguagesMap>("tutorial-languages") || {}
return (
<main className="landing page-tutorials landing-builtin-bg">
<section className="container-new py-26">
<div className="col-lg-8 mx-auto text-lg-center">
<div className="d-flex flex-column-reverse">
<h1 className="mb-0">
{translate("Crypto Wallet and Blockchain Development Tutorials")}
</h1>
<h6 className="eyebrow mb-3">{translate("Tutorials")}</h6>
</div>
</div>
</section>
{/* Get Started */}
<section className="container-new pt-10 pb-20">
<div className="col-12 col-xl-8 p-0">
<h3 className="h4 mb-3">{translate("Get Started with SDKs")}</h3>
<p className="mb-4">
{translate("These tutorials walk you through the basics of building a very simple XRP Ledger-connected application using your favorite programming language.")}
</p>
</div>
<div className="row tutorial-cards">
{getStartedTutorials.map((tutorial, idx) => (
<div key={idx} className="col-lg-4 col-md-6 mb-5">
<TutorialCard tutorial={tutorial} showFooter translate={translate} />
</div>
))}
</div>
</section>
{/* Other Tutorials */}
{sections.map((section) => (
<section className="container-new pt-10 pb-10" key={section.id}>
<div className="col-12 col-xl-8 p-0">
<h3 className="h4 mb-3">{translate(section.title)}</h3>
<p className="mb-4">{translate(section.description)}</p>
</div>
<div className="row tutorial-cards">
{section.tutorials.slice(0, 6).map((tutorial, idx) => (
<div key={idx} className="col-lg-4 col-md-6 mb-5">
<TutorialCard
tutorial={tutorial}
detectedLanguages={tutorialLanguages[tutorial.path]}
translate={translate}
/>
</div>
))}
</div>
</section>
))}
</main>
)
}

View File

@@ -5,7 +5,7 @@ labels:
- Tokens
- MPT
---
# Sending MPTs
# Sending MPTs in JavaScript
To send an MPT to another account, the receiving account must first authorize the receipt of the MPT, based on its MPToken Issuance ID. This is to prevent malicious users from spamming accounts with unwanted tokens that could negatively impact storage and XRP reserves.

View File

@@ -10,7 +10,7 @@ labels:
- XRP
---
# Batch Mint NFTs
# Batch Mint NFTs Using Python
You can create an application that mints multiple NFTs at one time, using a `for` loop to send one transaction after another.

View File

@@ -1,9 +1,7 @@
# Docs Redirects ---------------------------------------------------------------
/resources/contribute-documentation/tutorial-structure/:
to: /resources/contribute-documentation/tutorial-guidelines/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/use-an-escrow-as-a-smart-contract:
to: /docs/tutorials/payments/send-a-conditional-escrow/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-conditional-escrow
/docs/references/protocol/transactions/pseudo-transaction-types/pseudo-transaction-types/:
to: /docs/references/protocol/transactions/pseudo-transaction-types/
/docs/concepts/tokens/transfer-fees/:
@@ -29,250 +27,21 @@
/docs/concepts/accounts/decentralized-identifiers/:
to: /docs/concepts/decentralized-storage/decentralized-identifiers/
/docs/tutorials/javascript/trade-on-ledger/:
to: /docs/tutorials/defi/dex/trade-in-the-decentralized-exchange/
to: /docs/tutorials/javascript/amm/
/docs/tutorials/javascript/trade-on-ledger/earn-passive-income-as-a-liquidity-provider:
to: /docs/tutorials/defi/dex/add-assets-to-amm-in-javascript/
to: /docs/tutorials/javascript/amm/add-assets-to-amm
/docs/tutorials/javascript/trade-on-ledger/use-amm-auction-slot-for-lower-fees:
to: /docs/tutorials/defi/dex/trade-with-auction-slot-in-javascript/
to: /docs/tutorials/javascript/amm/trade-with-auction-slot
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks-by-recipient:
to: /docs/tutorials/payments/look-up-checks/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks-by-sender:
to: /docs/tutorials/payments/look-up-checks/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/use-checks:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks
/docs/references/http-websocket-apis/public-api-methods/clio-server:
to: /docs/references/http-websocket-apis/public-api-methods/clio-methods
/docs/references/protocol/transactions/transaction-results/transaction-results:
to: /docs/references/protocol/transactions/transaction-results
# Docs redirects for Tutorials IAv4: -------------------------------------------
/docs/tutorials/python/build-apps/credential-issuing-service/:
to: /docs/tutorials/sample-apps/credential-issuing-service-in-python/
/docs/tutorials/python/build-apps/build-a-desktop-wallet-in-python/:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-python/
/docs/tutorials/python/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-python/
/docs/tutorials/python/send-payments/send-and-cash-checks/:
to: /docs/tutorials/payments/send-a-check/
/docs/tutorials/python/send-payments/create-time-based-escrows/:
to: /docs/tutorials/payments/send-a-timed-escrow/
/docs/tutorials/python/send-payments/create-trust-line-send-currency/:
to: /docs/tutorials/payments/create-trust-line-send-currency-in-python/
/docs/tutorials/python/send-payments/create-accounts-send-xrp/:
to: /docs/tutorials/payments/send-xrp/
/docs/tutorials/python/send-payments/create-conditional-escrows/:
to: /docs/tutorials/payments/send-a-conditional-escrow/
/docs/tutorials/python/nfts/assign-an-authorized-minter/:
to: /docs/tutorials/tokens/nfts/assign-an-authorized-minter-py/
/docs/tutorials/python/nfts/broker-an-nft-sale/:
to: /docs/tutorials/tokens/nfts/broker-an-nft-sale-py/
/docs/tutorials/python/nfts/mint-and-burn-nfts/:
to: /docs/tutorials/tokens/nfts/mint-and-burn-nfts-py/
/docs/tutorials/python/nfts/batch-mint-nfts/:
to: /docs/tutorials/tokens/nfts/batch-mint-nfts-py/
/docs/tutorials/python/nfts/transfer-nfts/:
to: /docs/tutorials/tokens/nfts/transfer-nfts-py/
/docs/tutorials/python/compliance/verify-credential/:
to: /docs/tutorials/compliance-features/verify-credentials/
/docs/tutorials/javascript/build-apps/build-a-desktop-wallet-in-javascript/:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript/
/docs/tutorials/javascript/build-apps/build-a-browser-wallet-in-javascript/:
to: /docs/tutorials/sample-apps/build-a-browser-wallet-in-javascript/
/docs/tutorials/javascript/send-payments/sending-mpts/:
to: /docs/tutorials/tokens/mpts/sending-mpts-in-javascript/
/docs/tutorials/javascript/send-payments/create-offers/:
to: /docs/tutorials/defi/dex/trade-in-the-decentralized-exchange/
/docs/tutorials/javascript/compliance/create-permissioned-domains/:
to: /docs/tutorials/compliance-features/create-permissioned-domains-in-javascript/
/docs/tutorials/javascript/amm/add-assets-to-amm/:
to: /docs/tutorials/defi/dex/add-assets-to-amm-in-javascript/
/docs/tutorials/javascript/amm/trade-with-auction-slot/:
to: /docs/tutorials/defi/dex/trade-with-auction-slot-in-javascript/
/docs/tutorials/javascript/amm/create-an-amm/:
to: /docs/tutorials/defi/dex/create-an-automated-market-maker/
/docs/tutorials/how-tos/send-xrp/:
to: /docs/tutorials/payments/send-xrp/
/docs/tutorials/how-tos/testing-devnet-features/:
to: /docs/tutorials/advanced-developer-topics/protocol-development/testing-devnet-features/
/docs/tutorials/how-tos/use-tokens/enact-global-freeze/:
to: /docs/tutorials/tokens/fungible-tokens/enact-global-freeze/
/docs/tutorials/how-tos/use-tokens/freeze-a-trust-line/:
to: /docs/tutorials/tokens/fungible-tokens/freeze-a-trust-line/
/docs/tutorials/how-tos/use-tokens/issue-a-multi-purpose-token/:
to: /docs/tutorials/tokens/mpts/issue-a-multi-purpose-token/
/docs/tutorials/how-tos/use-tokens/issue-a-fungible-token/:
to: /docs/tutorials/tokens/fungible-tokens/issue-a-fungible-token/
/docs/tutorials/how-tos/use-tokens/enable-no-freeze/:
to: /docs/tutorials/tokens/fungible-tokens/enable-no-freeze/
/docs/tutorials/how-tos/use-tokens/trade-in-the-decentralized-exchange/:
to: /docs/tutorials/defi/dex/trade-in-the-decentralized-exchange/
/docs/tutorials/how-tos/use-tokens/create-an-automated-market-maker/:
to: /docs/tutorials/defi/dex/create-an-automated-market-maker/
/docs/tutorials/how-tos/use-xrpl-sidechains/submit-cross-chain-transaction/:
to: /docs/tutorials/programmability/submit-cross-chain-transaction/
/docs/tutorials/how-tos/use-xrpl-sidechains/set-up-xrp-xrp-bridge/:
to: /docs/tutorials/programmability/set-up-xrp-xrp-bridge/
/docs/tutorials/how-tos/use-xrpl-sidechains/set-up-iou-iou-bridge/:
to: /docs/tutorials/programmability/set-up-iou-iou-bridge/
/docs/tutorials/how-tos/manage-account-settings/disable-master-key-pair/:
to: /docs/tutorials/best-practices/key-management/disable-master-key-pair/
/docs/tutorials/how-tos/manage-account-settings/send-a-multi-signed-transaction/:
to: /docs/tutorials/best-practices/key-management/send-a-multi-signed-transaction/
/docs/tutorials/how-tos/manage-account-settings/offline-account-setup/:
to: /docs/tutorials/best-practices/key-management/offline-account-setup/
/docs/tutorials/how-tos/manage-account-settings/assign-a-regular-key-pair/:
to: /docs/tutorials/best-practices/key-management/assign-a-regular-key-pair/
/docs/tutorials/how-tos/manage-account-settings/set-up-multi-signing/:
to: /docs/tutorials/best-practices/key-management/set-up-multi-signing/
/docs/tutorials/how-tos/manage-account-settings/change-or-remove-a-regular-key-pair/:
to: /docs/tutorials/best-practices/key-management/change-or-remove-a-regular-key-pair/
/docs/tutorials/how-tos/manage-account-settings/use-tickets/:
to: /docs/tutorials/best-practices/transaction-sending/use-tickets/
/docs/tutorials/how-tos/manage-account-settings/require-destination-tags/:
to: /docs/tutorials/compliance-features/require-destination-tags/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/cancel-an-expired-escrow/:
to: /docs/tutorials/payments/cancel-an-expired-escrow/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-conditional-escrow/:
to: /docs/tutorials/payments/send-a-conditional-escrow/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-timed-escrow/:
to: /docs/tutorials/payments/send-a-timed-escrow/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/look-up-escrows/:
to: /docs/tutorials/payments/look-up-escrows/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/send-a-check/:
to: /docs/tutorials/payments/send-a-check/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cash-a-check-for-an-exact-amount/:
to: /docs/tutorials/payments/cash-a-check-for-an-exact-amount/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cancel-a-check/:
to: /docs/tutorials/payments/cancel-a-check/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cash-a-check-for-a-flexible-amount/:
to: /docs/tutorials/payments/cash-a-check-for-a-flexible-amount/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks/:
to: /docs/tutorials/payments/look-up-checks/
/docs/tutorials/how-tos/use-specialized-payment-types/use-payment-channels/open-a-payment-channel-to-enable-an-inter-exchange-network/:
to: /docs/tutorials/payments/use-payment-channels/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/manage-a-loan/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/manage-a-loan/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/claw-back-cover/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/claw-back-cover/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/create-a-loan-broker/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan-broker/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/deposit-and-withdraw-cover/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/deposit-and-withdraw-cover/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/pay-off-a-loan/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/create-a-loan/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan/
/docs/tutorials/how-tos/set-up-lending/use-single-asset-vaults/withdraw-from-a-vault/:
to: /docs/tutorials/defi/lending/use-single-asset-vaults/withdraw-from-a-vault/
/docs/tutorials/how-tos/set-up-lending/use-single-asset-vaults/create-a-single-asset-vault/:
to: /docs/tutorials/defi/lending/use-single-asset-vaults/create-a-single-asset-vault/
/docs/tutorials/how-tos/set-up-lending/use-single-asset-vaults/deposit-into-a-vault/:
to: /docs/tutorials/defi/lending/use-single-asset-vaults/deposit-into-a-vault/
/docs/tutorials/how-tos/use-batch-transactions/send-a-multi-account-batch-transaction/:
to: /docs/tutorials/best-practices/transaction-sending/send-a-multi-account-batch-transaction/
/docs/tutorials/how-tos/use-batch-transactions/send-a-single-account-batch-transaction/:
to: /docs/tutorials/best-practices/transaction-sending/send-a-single-account-batch-transaction/
/docs/tutorials/http-websocket-apis/build-apps/monitor-incoming-payments-with-websocket/:
to: /docs/tutorials/advanced-developer-topics/client-library-development/monitor-incoming-payments-with-websocket/
/docs/tutorials/php/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-php/
/docs/tutorials/javascript/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-javascript/
/docs/tutorials/go/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-go/
/docs/tutorials/java/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-java/
/docs/tutorials/http-websocket-apis/build-apps/get-started/:
to: /docs/tutorials/get-started/get-started-http-websocket-apis/
/docs/tutorials/javascript/build-apps/credential-issuing-service/:
to: /docs/tutorials/sample-apps/credential-issuing-service-in-javascript/
/docs/tutorials/javascript/send-payments/send-and-cash-checks/:
to: /docs/tutorials/payments/send-a-check/
/docs/tutorials/javascript/send-payments/create-time-based-escrows/:
to: /docs/tutorials/payments/send-a-timed-escrow/
/docs/tutorials/javascript/send-payments/create-trust-line-send-currency/:
to: /docs/tutorials/payments/create-trust-line-send-currency-in-javascript/
/docs/tutorials/javascript/send-payments/create-accounts-send-xrp/:
to: /docs/tutorials/payments/send-xrp/
/docs/tutorials/javascript/send-payments/create-conditional-escrows/:
to: /docs/tutorials/payments/send-a-conditional-escrow/
/docs/tutorials/javascript/nfts/assign-an-authorized-minter/:
to: /docs/tutorials/tokens/nfts/assign-an-authorized-minter-js/
/docs/tutorials/javascript/nfts/broker-an-nft-sale/:
to: /docs/tutorials/tokens/nfts/broker-an-nft-sale-js/
/docs/tutorials/javascript/nfts/mint-and-burn-nfts/:
to: /docs/tutorials/tokens/nfts/mint-and-burn-nfts-js/
/docs/tutorials/javascript/nfts/batch-mint-nfts/:
to: /docs/tutorials/tokens/nfts/batch-mint-nfts-js/
/docs/tutorials/javascript/nfts/transfer-nfts/:
to: /docs/tutorials/tokens/nfts/transfer-nfts-js/
/docs/tutorials/javascript/compliance/verify-credential/:
to: /docs/tutorials/compliance-features/verify-credentials/
/docs/tutorials/python/:
to: /docs/tutorials/
/docs/tutorials/python/build-apps/:
to: /docs/tutorials/
/docs/tutorials/python/send-payments/:
to: /docs/tutorials/
/docs/tutorials/python/nfts/:
to: /docs/tutorials/
/docs/tutorials/python/compliance/:
to: /docs/tutorials/
/docs/tutorials/php/:
to: /docs/tutorials/
/docs/tutorials/php/build-apps/:
to: /docs/tutorials/
/docs/tutorials/javascript/:
to: /docs/tutorials/
/docs/tutorials/javascript/build-apps/:
to: /docs/tutorials/
/docs/tutorials/javascript/send-payments/:
to: /docs/tutorials/
/docs/tutorials/javascript/nfts/:
to: /docs/tutorials/
/docs/tutorials/javascript/compliance/:
to: /docs/tutorials/
/docs/tutorials/javascript/amm/:
to: /docs/tutorials/
/docs/tutorials/go/:
to: /docs/tutorials/
/docs/tutorials/go/build-apps/:
to: /docs/tutorials/
/docs/tutorials/how-tos/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-tokens/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-xrpl-sidechains/:
to: /docs/tutorials/
/docs/tutorials/how-tos/manage-account-settings/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-specialized-payment-types/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-specialized-payment-types/use-checks/:
to: /docs/tutorials/
/docs/tutorials/how-tos/use-specialized-payment-types/use-payment-channels/:
to: /docs/tutorials/payments/use-payment-channels/
/docs/tutorials/how-tos/set-up-lending/:
to: /docs/tutorials/defi/lending/
/docs/tutorials/how-tos/set-up-lending/use-the-lending-protocol/:
to: /docs/tutorials/defi/lending/use-the-lending-protocol/
/docs/tutorials/how-tos/set-up-lending/use-single-asset-vaults/:
to: /docs/tutorials/defi/lending/use-single-asset-vaults/
/docs/tutorials/how-tos/use-batch-transactions/:
to: /docs/tutorials/
/docs/tutorials/java/:
to: /docs/tutorials/
/docs/tutorials/java/build-apps/:
to: /docs/tutorials/
/docs/tutorials/http-websocket-apis/:
to: /docs/tutorials/
/docs/tutorials/http-websocket-apis/build-apps/:
to: /docs/tutorials/
# Redirects from pre-Redocly .html URLs ----------------------------------------
xrp-ledger-rpc-tool.html:
to: /resources/dev-tools/rpc-tool
xrp-ledger-toml-checker.html:
@@ -604,25 +373,25 @@ witness-servers.html:
public-servers.html:
to: /docs/tutorials/public-servers
python.html:
to: /docs/tutorials/
to: /docs/tutorials/python/
get-started-using-python.html:
to: /docs/tutorials/get-started/get-started-python/
to: /docs/tutorials/python/get-started
docs/tutorials/python/get-started/:
to: /docs/tutorials/get-started/get-started-python/
to: docs/tutorials/python/build-apps/get-started/
modular-tutorials-in-python.html:
to: /docs/tutorials/
to: /docs/tutorials/python/
send-payments-using-python.html:
to: /docs/tutorials/
to: /docs/tutorials/python/send-payments
py-create-accounts-send-xrp.html:
to: /docs/tutorials/payments/send-xrp/
to: /docs/tutorials/python/send-payments/create-accounts-send-xrp
py-create-trustline-send-currency.html:
to: /docs/tutorials/python/send-payments/create-trustline-send-currency
py-create-time-based-escrows.html:
to: /docs/tutorials/payments/send-a-timed-escrow/
to: /docs/tutorials/python/send-payments/create-time-based-escrows
py-mint-and-burn-nfts.html:
to: /docs/tutorials/tokens/nfts/mint-and-burn-nfts-py/
to: /docs/tutorials/python/nfts/mint-and-burn-nfts
py-transfer-nfts.html:
to: /docs/tutorials/tokens/nfts/transfer-nfts-py/
to: /docs/tutorials/python/nfts/transfer-nfts
py-broker-sale.html:
to: /docs/tutorials/python/nfts/broker-sale
py-authorize-minter.html:
@@ -630,155 +399,155 @@ py-authorize-minter.html:
py-batch-minting.html:
to: /docs/tutorials/python/nfts/batch-minting
build-a-desktop-wallet-in-python.html:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-python/
to: /docs/tutorials/python/build-apps/build-a-desktop-wallet-in-python
javascript.html:
to: /docs/tutorials/
to: /docs/tutorials/javascript/
get-started-using-javascript.html:
to: /docs/tutorials/get-started/get-started-javascript/
to: /docs/tutorials/javascript/build-apps/get-started
docs/tutorials/javascript/get-started:
to: docs/tutorials/javascript/build-apps/get-started/
docs/tutorials/javascript/get-started/:
to: docs/tutorials/javascript/build-apps/get-started/
get-started-using-node-js.html:
to: /docs/tutorials/get-started/get-started-javascript/
to: /docs/tutorials/javascript/build-apps/get-started
get-started-with-rippleapi-for-javascript.html:
to: /docs/tutorials/get-started/get-started-javascript/
to: /docs/tutorials/javascript/build-apps/get-started
modular-tutorials-in-javascript.html:
to: /docs/tutorials/
to: /docs/tutorials/javascript/
send-payments-using-javascript.html:
to: /docs/tutorials/
to: /docs/tutorials/javascript/send-payments
create-accounts-send-xrp-using-javascript.html:
to: /docs/tutorials/payments/send-xrp/
to: /docs/tutorials/javascript/send-payments/create-accounts-send-xrp
create-trustline-send-currency-using-javascript.html:
to: /docs/tutorials/javascript/send-payments/create-trustline-send-currency
create-time-based-escrows-using-javascript.html:
to: /docs/tutorials/payments/send-a-timed-escrow/
to: /docs/tutorials/javascript/send-payments/create-time-based-escrows
create-conditional-escrows-using-javascript.html:
to: /docs/tutorials/payments/send-a-conditional-escrow/
to: /docs/tutorials/javascript/send-payments/create-conditional-escrows
nfts-using-javascript.html:
to: /docs/tutorials/javascript/nfts-using-javascript/
nfts-using-python.html:
to: /docs/tutorials/
to: /docs/tutorials/python/nfts
mint-and-burn-nfts-using-javascript.html:
to: /docs/tutorials/tokens/nfts/mint-and-burn-nfts-js/
to: /docs/tutorials/javascript/nfts/mint-and-burn-nfts
transfer-nfts-using-javascript.html:
to: /docs/tutorials/tokens/nfts/transfer-nfts-js/
to: /docs/tutorials/javascript/nfts/transfer-nfts
broker-an-nft-sale-using-javascript.html:
to: /docs/tutorials/tokens/nfts/broker-an-nft-sale-js/
to: /docs/tutorials/javascript/nfts/broker-an-nft-sale
assign-an-authorized-minter-using-javascript.html:
to: /docs/tutorials/tokens/nfts/assign-an-authorized-minter-js/
to: /docs/tutorials/javascript/nfts/assign-an-authorized-minter
batch-mint-nfts-using-javascript.html:
to: /docs/tutorials/tokens/nfts/batch-mint-nfts-js/
to: /docs/tutorials/javascript/nfts/batch-mint-nfts
build-a-browser-wallet-in-javascript.html:
to: /docs/tutorials/sample-apps/build-a-browser-wallet-in-javascript/
to: /docs/tutorials/javascript/build-apps/build-a-browser-wallet-in-javascript/
build-a-browser-wallet-using-javascript.html:
to: /docs/tutorials/sample-apps/build-a-browser-wallet-in-javascript/
to: /docs/tutorials/javascript/build-apps/build-a-browser-wallet-in-javascript/
docs/tutorials/javascript/build-a-browser-wallet-in-javascript:
to: docs/tutorials/javascript/build-apps/build-a-browser-wallet-in-javascript/
docs/tutorials/javascript/build-a-browser-wallet-in-javascript/:
to: docs/tutorials/javascript/build-apps/build-a-browser-wallet-in-javascript/
build-a-desktop-wallet-in-javascript.html:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript/
to: /docs/tutorials/javascript/build-apps/build-a-desktop-wallet-in-javascript
docs/tutorials/javascript/build-a-desktop-wallet-in-javascript:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript/
to: /docs/tutorials/javascript/build-apps/build-a-desktop-wallet-in-javascript
docs/tutorials/javascript/build-a-desktop-wallet-in-javascript/:
to: /docs/tutorials/sample-apps/build-a-desktop-wallet-in-javascript/
to: /docs/tutorials/javascript/build-apps/build-a-desktop-wallet-in-javascript
java.html:
to: /docs/tutorials/
to: /docs/tutorials/java/
get-started-using-java.html:
to: /docs/tutorials/get-started/get-started-java/
to: /docs/tutorials/java/build-apps/get-started
docs/tutorials/java/get-started:
to: /docs/tutorials/get-started/get-started-java/
to: /docs/tutorials/java/build-apps/get-started
docs/tutorials/java/get-started/:
to: /docs/tutorials/get-started/get-started-java/
to: /docs/tutorials/java/build-apps/get-started
php.html:
to: /docs/tutorials/
to: /docs/tutorials/php
get-started-using-php.html:
to: /docs/tutorials/get-started/get-started-php/
to: /docs/tutorials/php/build-apps/get-started
http-websocket-apis-tutorials.html:
to: /docs/tutorials/
to: /docs/tutorials/http-websocket-apis/
get-started-with-the-rippled-api.html:
to: /docs/tutorials/get-started/get-started-http-websocket-apis/
to: /docs/tutorials/http-websocket-apis/build-apps/get-started
get-started-using-http-websocket-apis.html:
to: /docs/tutorials/get-started/get-started-http-websocket-apis/
to: /docs/tutorials/http-websocket-apis/build-apps/get-started/
docs/tutorials/http-websocket-apis/get-started:
to: /docs/tutorials/get-started/get-started-http-websocket-apis/
to: /docs/tutorials/http-websocket-apis/build-apps/get-started/
docs/tutorials/http-websocket-apis/get-started/:
to: /docs/tutorials/get-started/get-started-http-websocket-apis/
to: /docs/tutorials/http-websocket-apis/build-apps/get-started/
monitor-incoming-payments-with-websocket.html:
to: /docs/tutorials/advanced-developer-topics/client-library-development/monitor-incoming-payments-with-websocket/
to: /docs/tutorials/http-websocket-apis/build-apps/monitor-incoming-payments-with-websocket
tasks.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/
manage-account-settings.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/manage-account-settings/
assign-a-regular-key-pair.html:
to: /docs/tutorials/best-practices/key-management/assign-a-regular-key-pair/
to: /docs/tutorials/how-tos/manage-account-settings/assign-a-regular-key-pair
change-or-remove-a-regular-key-pair.html:
to: /docs/tutorials/best-practices/key-management/change-or-remove-a-regular-key-pair/
to: /docs/tutorials/how-tos/manage-account-settings/change-or-remove-a-regular-key-pair
disable-master-key-pair.html:
to: /docs/tutorials/best-practices/key-management/disable-master-key-pair/
to: /docs/tutorials/how-tos/manage-account-settings/disable-master-key-pair
set-up-multi-signing.html:
to: /docs/tutorials/best-practices/key-management/set-up-multi-signing/
to: /docs/tutorials/how-tos/manage-account-settings/set-up-multi-signing
send-a-multi-signed-transaction.html:
to: /docs/tutorials/best-practices/key-management/send-a-multi-signed-transaction/
to: /docs/tutorials/how-tos/manage-account-settings/send-a-multi-signed-transaction
require-destination-tags.html:
to: /docs/tutorials/compliance-features/require-destination-tags/
to: /docs/tutorials/how-tos/manage-account-settings/require-destination-tags
offline-account-setup.html:
to: /docs/tutorials/best-practices/key-management/offline-account-setup/
to: /docs/tutorials/how-tos/manage-account-settings/offline-account-setup
use-tickets.html:
to: /docs/tutorials/best-practices/transaction-sending/use-tickets/
to: /docs/tutorials/how-tos/manage-account-settings/use-tickets
send-xrp.html:
to: /docs/tutorials/payments/send-xrp/
to: /docs/tutorials/how-tos/send-xrp
use-specialized-payment-types.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-specialized-payment-types/
use-complex-payment-types.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-specialized-payment-types/
use-escrows.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/
send-a-time-held-escrow.html:
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-time-held-escrow
send-a-conditionally-held-escrow.html:
to: /docs/tutorials/payments/send-a-conditional-escrow/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-conditional-escrow
cancel-an-expired-escrow.html:
to: /docs/tutorials/payments/cancel-an-expired-escrow/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/cancel-an-expired-escrow
look-up-escrows.html:
to: /docs/tutorials/payments/look-up-escrows/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/look-up-escrows
use-an-escrow-as-a-smart-contract.html:
to: /docs/tutorials/payments/send-a-conditional-escrow/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-escrows/send-a-conditional-escrow
use-payment-channels.html:
to: /docs/tutorials/payments/use-payment-channels/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-payment-channels
open-a-payment-channel-to-enable-an-inter-exchange-network.html:
to: /docs/tutorials/how-tos/use-specialized-payment-types/open-a-payment-channel-to-enable-an-inter-exchange-network
use-checks.html:
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/use-checks
send-a-check.html:
to: /docs/tutorials/payments/send-a-check/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/send-a-check
cash-a-check-for-an-exact-amount.html:
to: /docs/tutorials/payments/cash-a-check-for-an-exact-amount/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cash-a-check-for-an-exact-amount
cash-a-check-for-a-flexible-amount.html:
to: /docs/tutorials/payments/cash-a-check-for-a-flexible-amount/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cash-a-check-for-a-flexible-amount
cancel-a-check.html:
to: /docs/tutorials/payments/cancel-a-check/
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/cancel-a-check
look-up-checks-by-sender.html:
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks-by-sender
look-up-checks-by-recipient.html:
to: /docs/tutorials/how-tos/use-specialized-payment-types/use-checks/look-up-checks-by-recipient
use-tokens.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-tokens/
issue-a-fungible-token.html:
to: /docs/tutorials/tokens/fungible-tokens/issue-a-fungible-token/
to: /docs/tutorials/how-tos/use-tokens/issue-a-fungible-token
trade-in-the-decentralized-exchange.html:
to: /docs/tutorials/defi/dex/trade-in-the-decentralized-exchange/
to: /docs/tutorials/how-tos/use-tokens/trade-in-the-decentralized-exchange
enable-no-freeze.html:
to: /docs/tutorials/tokens/fungible-tokens/enable-no-freeze/
to: /docs/tutorials/how-tos/use-tokens/enable-no-freeze
enact-global-freeze.html:
to: /docs/tutorials/tokens/fungible-tokens/enact-global-freeze/
to: /docs/tutorials/how-tos/use-tokens/enact-global-freeze
freeze-a-trust-line.html:
to: /docs/tutorials/tokens/fungible-tokens/freeze-a-trust-line/
to: /docs/tutorials/how-tos/use-tokens/freeze-a-trust-line
create-an-automated-market-maker.html:
to: /docs/tutorials/defi/dex/create-an-automated-market-maker/
to: /docs/tutorials/how-tos/use-tokens/create-an-automated-market-maker
use-simple-xrp-payments.html:
to: /docs/tutorials/payments/send-xrp/
to: /docs/tutorials/how-tos/send-xrp
cancel-or-skip-a-transaction.html:
to: /docs/concepts/transactions/finality-of-results/canceling-a-transaction
evm-sidechains.html:
@@ -794,13 +563,13 @@ evm-sidechain-validator-security.html:
evm-sidechain-run-a-validator-node.html:
to: https://opensource.ripple.com/docs/evm-sidechain/evm-sidechain-run-a-validator-node/
use-xrpl-sidechains.html:
to: /docs/tutorials/
to: /docs/tutorials/how-tos/use-xrpl-sidechains/
set-up-xrp-xrp-bridge.html:
to: /docs/tutorials/programmability/set-up-xrp-xrp-bridge/
to: /docs/tutorials/how-tos/use-xrpl-sidechains/set-up-xrp-xrp-bridge
set-up-iou-iou-bridge.html:
to: /docs/tutorials/programmability/set-up-iou-iou-bridge/
to: /docs/tutorials/how-tos/use-xrpl-sidechains/set-up-iou-iou-bridge
submit-cross-chain-transactions.html:
to: /docs/tutorials/programmability/submit-cross-chain-transaction/
to: /docs/tutorials/how-tos/use-xrpl-sidechains/submit-cross-chain-transaction
references.html:
to: /docs/references/
protocol-reference.html:
@@ -1351,21 +1120,14 @@ report-a-scam.html:
to: /contributing/report-a-scam
wallets.html:
to: /docs/introduction/crypto-wallets
blog/2014:
to: /blog
blog/2015:
to: /blog
# Blog redirects ---------------------------------------------------------------
blog/2014/:
blog/2020:
to: /blog
blog/2015/:
to: /blog
blog/2017/:
to: /blog
blog/2018/:
to: /blog
blog/2019/:
to: /blog
blog/2020/:
to: /blog
blog/2021/:
blog/2021:
to: /blog
blog/2024/rippled-2.2.0.html:
to: /blog/2024/rippled-2.2.0
@@ -1803,8 +1565,6 @@ blog/2024.html:
to: /blog/
blog/label/developer-reflections.html:
to: /blog/
# Miscellaneous redirects ------------------------------------------------------
code_of_conduct/:
to: /code-of-conduct
code_of_conduct:

View File

@@ -127,7 +127,7 @@ footer:
- page: docs/concepts/index.md
label: Concepts
labelTranslationKey: footer.docs.concepts
- page: docs/tutorials/index.md
- page: docs/tutorials/index.page.tsx
label: Tutorials
labelTranslationKey: footer.docs.tutorials
- page: docs/references/index.md

View File

@@ -184,7 +184,7 @@
- page: docs/concepts/decentralized-storage/decentralized-identifiers.md
- page: docs/concepts/decentralized-storage/price-oracles.md
- page: docs/tutorials/index.md
- page: docs/tutorials/index.page.tsx
label: Tutorials
labelTranslationKey: sidebar.docs.tutorials
expanded: false
@@ -221,24 +221,27 @@
- page: docs/tutorials/defi/dex/add-assets-to-amm-in-javascript.md
- page: docs/tutorials/defi/dex/trade-in-the-decentralized-exchange.md
- page: docs/tutorials/defi/dex/trade-with-auction-slot-in-javascript.md
- page: docs/tutorials/defi/lending/index.md
- group: Set Up Lending
groupTranslationKey: sidebar.docs.tutorials.defi.setUpLending
expanded: false
items:
- page: docs/tutorials/defi/lending/use-the-lending-protocol/index.md
- group: Use the Lending Protocol
groupTranslationKey: sidebar.docs.tutorials.defi.setUpLending.useTheLendingProtocol
expanded: false
items:
- page: docs/tutorials/defi/lending/use-the-lending-protocol/manage-a-loan.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/claw-back-cover.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan-broker.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/claw-back-cover.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/deposit-and-withdraw-cover.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/create-a-loan.md
- page: docs/tutorials/defi/lending/use-single-asset-vaults/index.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/manage-a-loan.md
- page: docs/tutorials/defi/lending/use-the-lending-protocol/pay-off-a-loan.md
- group: Use Single Asset Vaults
groupTranslationKey: sidebar.docs.tutorials.defi.setUpLending.useSingleAssetVaults
expanded: false
items:
- page: docs/tutorials/defi/lending/use-single-asset-vaults/withdraw-from-a-vault.md
- page: docs/tutorials/defi/lending/use-single-asset-vaults/create-a-single-asset-vault.md
- page: docs/tutorials/defi/lending/use-single-asset-vaults/deposit-into-a-vault.md
- page: docs/tutorials/defi/lending/use-single-asset-vaults/withdraw-from-a-vault.md
- group: Payments
groupTranslationKey: sidebar.docs.tutorials.payments
expanded: false

File diff suppressed because one or more lines are too long

View File

@@ -320,3 +320,87 @@ main article .card-grid {
margin-bottom: 0.25rem;
margin-top: 0.5rem;
}
/* Tutorial cards */
.page-tutorials .tutorial-cards {
> div {
display: flex;
}
.card {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
min-height: 280px;
transition: all 0.35s ease-out;
cursor: pointer;
&:hover {
transform: translateY(-16px);
}
.card-header {
border-bottom: none;
background: transparent;
padding: 1.5rem 1.5rem 0 2rem;
}
.circled-logo {
margin-left: -10px;
display: inline-flex;
align-items: center;
justify-content: center;
}
.card-body {
padding: 1rem 1.5rem;
flex: 1;
}
.card-title {
font-weight: 700;
margin-bottom: 1rem;
}
.card-text {
font-size: 1rem;
margin-bottom: 1.5rem;
}
.card-footer {
background-color: transparent;
border-top: none;
padding: 0;
height: 40px;
background-size: cover;
background-position: bottom;
background-repeat: no-repeat;
margin-top: auto;
}
}
// Apply colored footers to each card
> div:nth-child(1) .card .card-footer {
background-image: url("../img/cards/3-col-pink.svg");
}
> div:nth-child(2) .card .card-footer {
background-image: url("../img/cards/3col-blue-light-blue.svg");
}
> div:nth-child(3) .card .card-footer {
background-image: url("../img/cards/3-col-light-blue.svg");
}
> div:nth-child(4) .card .card-footer {
background-image: url("../img/cards/3col-blue-green.svg");
}
> div:nth-child(5) .card .card-footer {
background-image: url("../img/cards/3col-magenta.svg");
}
> div:nth-child(6) .card .card-footer {
background-image: url("../img/cards/3-col-orange.svg");
}
}
.light .page-tutorials .tutorial-cards .circled-logo img[alt="HTTP / WebSocket"] {
filter: invert(1);
}

View File

@@ -60,7 +60,7 @@
- page: ./docs/concepts/index.md
label: Concepts
labelTranslationKey: topnav.docs.concepts
- page: ./docs/tutorials/index.md
- page: ./docs/tutorials/index.page.tsx
label: Tutorials
labelTranslationKey: topnav.docs.tutorials
- page: ./docs/references/index.md