Skip to content
Merged
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
16 changes: 16 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path // \"\"' | grep -q 'docs\\.json$' && cd /Users/lucy/docs && node scripts/sync-solutions-order.js 2>/dev/null || true",
"statusMessage": "Syncing homepage solution order..."
}
]
}
]
}
}
4 changes: 4 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@
{
"tab": "Solutions",
"groups": [
{
"group": "Overview",
"pages": ["solutions/overview"]
},
{
"group": "Embedded Wallets",
"pages": [
Expand Down
65 changes: 65 additions & 0 deletions scripts/sync-solutions-order.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/usr/bin/env node
// Keeps welcome.mdx solution ordering in sync with the Solutions tab in docs.json.
// Run manually: node scripts/sync-solutions-order.js
// Also runs automatically via Claude Code hook when docs.json is edited.

const fs = require('fs');
const path = require('path');

const ROOT = path.join(__dirname, '..');
const DOCS_JSON = path.join(ROOT, 'docs.json');
const WELCOME_MDX = path.join(ROOT, 'welcome.mdx');

// Display names for each page path as they appear on the homepage.
// Update this map if a page is renamed or a new use case is added.
const PAGE_NAMES = {
'embedded-wallets/code-examples/embedded-consumer-wallet': 'Embedded Consumer Wallets',
'products/embedded-business-wallets/overview': 'Embedded Business Wallets',
'embedded-wallets/embedded-waas': 'Wallets-as-a-Service',
'products/embedded-wallets/features/agentic-wallets': 'Agentic Wallets',
'company-wallets/code-examples/signing-transactions': 'Signing Transactions',
'company-wallets/code-examples/smart-contract-management': 'Smart Contract Management',
'company-wallets/code-examples/payment-orchestration': 'Payment Orchestration',
'company-wallets/use-cases/agentic-wallets': 'Agentic Wallets',
};

function getUseCases(docsJson, tabName, groupName) {
const tab = docsJson.navigation.tabs.find(t => t.tab === tabName);
if (!tab) return [];
const group = tab.groups.find(g => g.group === groupName);
if (!group) return [];
const useCasesGroup = group.pages.find(p => typeof p === 'object' && p.group === 'Use cases');
if (!useCasesGroup) return [];
return useCasesGroup.pages.filter(p => typeof p === 'string' && PAGE_NAMES[p]);
}

function buildList(pages) {
return pages.map((p, i) => ` ${i + 1}. [${PAGE_NAMES[p]}](/${p})`).join('\n');
}

function escapeRegex(str) {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

function replaceSection(content, marker, newList) {
const start = `{/* sync-start: ${marker} */}`;
const end = `{/* sync-end: ${marker} */}`;
const re = new RegExp(`${escapeRegex(start)}[\\s\\S]*?${escapeRegex(end)}`);
const replacement = `${start}\n${newList}\n ${end}`;
if (!re.test(content)) {
console.warn(`Warning: marker "${marker}" not found in welcome.mdx — skipping.`);
return content;
}
return content.replace(re, replacement);
}

const docsJson = JSON.parse(fs.readFileSync(DOCS_JSON, 'utf8'));
const embeddedPages = getUseCases(docsJson, 'Solutions', 'Embedded Wallets');
const companyPages = getUseCases(docsJson, 'Solutions', 'Company Wallets');

let welcome = fs.readFileSync(WELCOME_MDX, 'utf8');
welcome = replaceSection(welcome, 'embedded-wallets-use-cases', buildList(embeddedPages));
welcome = replaceSection(welcome, 'company-wallets-use-cases', buildList(companyPages));
fs.writeFileSync(WELCOME_MDX, welcome);

console.log('✓ welcome.mdx solution ordering synced from docs.json');
69 changes: 65 additions & 4 deletions solutions/overview.mdx
Original file line number Diff line number Diff line change
@@ -1,8 +1,69 @@
---
title: "ROUTER PAGE"
description: "PLACEHOLDER LANDING PAGE"
title: "Introducing Solutions"
description: "Structured starting points for building onchain with Turnkey"
---

# Solutions
To help you ship quickly, we've packaged common patterns like wallet provisioning, policy enforcement, and transaction flows into easy integration paths called solutions. Each solution is built on Turnkey's underlying primitives, so you're never locked into a rigid workflow and can always go deeper when you need more flexibility.

> **This is a placeholder landing page.** Content will be written in a future phase.
Whether you're building consumer apps, business tooling, or AI-powered systems, there's a solution designed for your use case.

---

## Embedded Wallets

Wallet experiences built directly into your product. Users authenticate with email, passkeys, or social login — you control the UX.

<CardGroup cols={2}>
<Card title="Embedded Consumer Wallets" icon="user" href="/embedded-wallets/code-examples/embedded-consumer-wallet">
Non-custodial wallets with plug-and-play UI for consumer onboarding.
</Card>
<Card title="Embedded Business Wallets" icon="users" href="/products/embedded-business-wallets/overview">
Multi-user access with policy controls and automated payment flows.
</Card>
<Card title="Agentic Wallets" icon="robot" href="/products/embedded-wallets/features/agentic-wallets">
Transaction signing and smart contract interaction for AI agents.
</Card>
<Card title="Embedded WaaS" icon="building" href="/embedded-wallets/embedded-waas">
White-labeled wallets with isolated user environments for your own wallet product.
</Card>
</CardGroup>

---

## Company Wallets

Wallets your organization operates for onchain automation — high-volume signing with programmable controls.

<CardGroup cols={2}>
<Card title="Payment Orchestration" icon="arrow-right-arrow-left" href="/company-wallets/code-examples/payment-orchestration">
Automated stablecoin movement flows at scale.
</Card>
<Card title="Smart Contract Management" icon="file-code" href="/company-wallets/code-examples/smart-contract-management">
Production infrastructure for governing smart contract execution.
</Card>
</CardGroup>

---

## Key Management

Enterprise-grade security for your most sensitive keys — hardware-backed with programmable access controls.

<CardGroup cols={2}>
<Card title="Encryption Key Storage" icon="key" href="/products/key-management/examples/encryption-key-storage">
Secure key generation and policy-controlled access for encrypted data.
</Card>
<Card title="Enterprise Disaster Recovery" icon="shield-check" href="/products/key-management/examples/enterprise-disaster-recovery">
Non-custodial wallet recovery with instant policy enforcement.
</Card>
</CardGroup>

---

## Turnkey Verifiable Cloud

Run code inside hardware-isolated enclaves with verifiable computation guarantees.

<Card title="Verifiable Cloud" icon="cloud" href="/products/verifiable-cloud/overview">
Purpose-built for applications where trust and auditability are non-negotiable.
</Card>
Loading