diff --git a/claude.md b/claude.md index 3d2584d0b..f835e3f1f 100644 --- a/claude.md +++ b/claude.md @@ -19,7 +19,7 @@ docs/ ├── base-chain/ # Network, nodes, tools ├── base-account/ # Smart Wallet SDK ├── ai-agents/ # Agent development -├── mini-apps/ # MiniKit guides +├── apps/ # Apps on Base (MiniKit, guides) ├── onchainkit/ # React components (versioned) ├── images/ # Assets by topic ├── snippets/ # Reusable MDX components diff --git a/docs/.mintignore b/docs/.mintignore index 8e3662ddd..665b1c221 100644 --- a/docs/.mintignore +++ b/docs/.mintignore @@ -1,11 +1,11 @@ # Exclude specific files writing.md -# Hidden mini-apps sections (redirected to migrate-to-standard-web-app) -/mini-apps/core-concepts/* -/mini-apps/resources/* -/mini-apps/featured-guidelines/* -/mini-apps/troubleshooting/* -/mini-apps/introduction/* -/mini-apps/growth/build-viral-mini-apps -/mini-apps/growth/optimize-onboarding +# Hidden apps sections (redirected to migrate-to-standard-web-app) +/apps/core-concepts/* +/apps/resources/* +/apps/featured-guidelines/* +/apps/troubleshooting/* +/apps/introduction/* +/apps/growth/build-viral-apps +/apps/growth/optimize-onboarding diff --git a/docs/agents.md b/docs/agents.md index caebf8108..4de882baa 100644 --- a/docs/agents.md +++ b/docs/agents.md @@ -11,6 +11,10 @@ Base is an Ethereum L2 by Coinbase. Docs for: Base Chain, Smart Wallet, OnchainK |ai-agents/skills/trading:alchemy-agentic-gateway,coingecko,swap-execution |ai-agents/skills/wallets:bankr,cdp-agentic-wallet,sponge-wallet |ai-agents/trading:data-fetching,trade-execution +|apps/growth:rewards +|apps/quality-and-publishing:overview,quality-bar,submission-guidelines +|apps/quickstart:build-checklist,building-for-the-base-app,create-new-app,migrate-existing-apps,migrate-to-standard-web-app,template +|apps/technical-guides:accept-payments,base-notifications,building-chat-agents,neynar-notifications,sharing-and-social-graph,sign-manifest |base-account/basenames:basename-transfer,basenames-faq,basenames-wagmi-tutorial |base-account/contribute:contribute-to-base-account-docs,security-and-bug-bounty |base-account/framework-integrations:cdp,rainbowkit,reown,thirdweb @@ -37,15 +41,11 @@ Base is an Ethereum L2 by Coinbase. Docs for: Base Chain, Smart Wallet, OnchainK |base-chain/api-reference/ethereum-json-rpc-api:eth_blockNumber,eth_call,eth_chainId,eth_estimateGas,eth_feeHistory,eth_gasPrice,eth_getBalance,eth_getBlockByHash,eth_getBlockByNumber,eth_getBlockReceipts,eth_getBlockTransactionCountByHash,eth_getBlockTransactionCountByNumber,eth_getCode,eth_getLogs,eth_getStorageAt,eth_getTransactionByBlockHashAndIndex,eth_getTransactionByBlockNumberAndIndex,eth_getTransactionByHash,eth_getTransactionCount,eth_getTransactionReceipt,eth_maxPriorityFeePerGas,eth_sendRawTransaction,eth_subscribe,eth_syncing,eth_unsubscribe,net_version,web3_clientVersion |base-chain/api-reference/flashblocks-api:base_transactionStatus,eth_simulateV1,flashblocks-api-overview,newFlashblockTransactions,newFlashblocks,pendingLogs |base-chain/builder-codes:agent-developers,app-developers,builder-codes,wallet-developers -|base-chain/flashblocks:app-integration,architecture,faq,overview +|base-chain/flashblocks:app-integration,architecture,faq,overview,run-a-flashblocks-node |base-chain/network-information:base-contracts,block-building,bridges,configuration-changelog,diffs-ethereum-base,ecosystem-contracts,network-faucets,network-fees,transaction-finality,troubleshooting-transactions |base-chain/node-operators:node-providers,performance-tuning,run-a-base-node,snapshots,troubleshooting |base-chain/quickstart:base-solana-bridge,connecting-to-base,deploy-on-base,why-base |base-chain/security:avoid-malicious-flags,bug-bounty,report-vulnerability,security-council |get-started:base-mentorship-program,base-services-hub,base,block-explorers,build-app,concepts,country-leads-and-ambassadors,data-indexers,deploy-smart-contracts,docs-llms,docs-mcp,get-funded,launch-token,learning-resources,mistakes,prompt-library,resources-for-ai-agents -|mini-apps/growth:rewards -|mini-apps/quality-and-publishing:overview,quality-bar,submission-guidelines -|mini-apps/quickstart:build-checklist,building-for-the-base-app,create-new-miniapp,migrate-existing-apps,migrate-to-standard-web-app,template -|mini-apps/technical-guides:accept-payments,building-chat-agents,neynar-notifications,sharing-and-social-graph,sign-manifest |onchainkit:migrate-from-onchainkit -|root:agents,cookie-policy,privacy-policy,terms-of-service,tone_of_voice +|root:agents,changes,cookie-policy,privacy-policy,terms-of-service,tone_of_voice diff --git a/docs/mini-apps/core-concepts/authentication.mdx b/docs/apps/core-concepts/authentication.mdx similarity index 100% rename from docs/mini-apps/core-concepts/authentication.mdx rename to docs/apps/core-concepts/authentication.mdx diff --git a/docs/mini-apps/core-concepts/base-account.mdx b/docs/apps/core-concepts/base-account.mdx similarity index 100% rename from docs/mini-apps/core-concepts/base-account.mdx rename to docs/apps/core-concepts/base-account.mdx diff --git a/docs/mini-apps/core-concepts/context.mdx b/docs/apps/core-concepts/context.mdx similarity index 100% rename from docs/mini-apps/core-concepts/context.mdx rename to docs/apps/core-concepts/context.mdx diff --git a/docs/mini-apps/core-concepts/embeds-and-previews.mdx b/docs/apps/core-concepts/embeds-and-previews.mdx similarity index 100% rename from docs/mini-apps/core-concepts/embeds-and-previews.mdx rename to docs/apps/core-concepts/embeds-and-previews.mdx diff --git a/docs/mini-apps/core-concepts/manifest.mdx b/docs/apps/core-concepts/manifest.mdx similarity index 100% rename from docs/mini-apps/core-concepts/manifest.mdx rename to docs/apps/core-concepts/manifest.mdx diff --git a/docs/mini-apps/core-concepts/navigation.mdx b/docs/apps/core-concepts/navigation.mdx similarity index 100% rename from docs/mini-apps/core-concepts/navigation.mdx rename to docs/apps/core-concepts/navigation.mdx diff --git a/docs/mini-apps/core-concepts/notifications.mdx b/docs/apps/core-concepts/notifications.mdx similarity index 100% rename from docs/mini-apps/core-concepts/notifications.mdx rename to docs/apps/core-concepts/notifications.mdx diff --git a/docs/mini-apps/featured-guidelines/design-guidelines.mdx b/docs/apps/featured-guidelines/design-guidelines.mdx similarity index 100% rename from docs/mini-apps/featured-guidelines/design-guidelines.mdx rename to docs/apps/featured-guidelines/design-guidelines.mdx diff --git a/docs/mini-apps/featured-guidelines/notification-guidelines.mdx b/docs/apps/featured-guidelines/notification-guidelines.mdx similarity index 100% rename from docs/mini-apps/featured-guidelines/notification-guidelines.mdx rename to docs/apps/featured-guidelines/notification-guidelines.mdx diff --git a/docs/mini-apps/featured-guidelines/overview.mdx b/docs/apps/featured-guidelines/overview.mdx similarity index 100% rename from docs/mini-apps/featured-guidelines/overview.mdx rename to docs/apps/featured-guidelines/overview.mdx diff --git a/docs/mini-apps/featured-guidelines/product-guidelines.mdx b/docs/apps/featured-guidelines/product-guidelines.mdx similarity index 100% rename from docs/mini-apps/featured-guidelines/product-guidelines.mdx rename to docs/apps/featured-guidelines/product-guidelines.mdx diff --git a/docs/mini-apps/featured-guidelines/technical-guidelines.mdx b/docs/apps/featured-guidelines/technical-guidelines.mdx similarity index 100% rename from docs/mini-apps/featured-guidelines/technical-guidelines.mdx rename to docs/apps/featured-guidelines/technical-guidelines.mdx diff --git a/docs/mini-apps/growth/build-viral-mini-apps.mdx b/docs/apps/growth/build-viral-apps.mdx similarity index 100% rename from docs/mini-apps/growth/build-viral-mini-apps.mdx rename to docs/apps/growth/build-viral-apps.mdx diff --git a/docs/mini-apps/growth/optimize-onboarding.mdx b/docs/apps/growth/optimize-onboarding.mdx similarity index 100% rename from docs/mini-apps/growth/optimize-onboarding.mdx rename to docs/apps/growth/optimize-onboarding.mdx diff --git a/docs/mini-apps/growth/rewards.mdx b/docs/apps/growth/rewards.mdx similarity index 61% rename from docs/mini-apps/growth/rewards.mdx rename to docs/apps/growth/rewards.mdx index e3d031581..ab08ab298 100644 --- a/docs/mini-apps/growth/rewards.mdx +++ b/docs/apps/growth/rewards.mdx @@ -9,8 +9,8 @@ description: Earn financial incentives for building high-quality Apps that driv ## How Rewards Work - - Submit your Mini App to be verified on [Base.dev](https://www.base.dev/). This process validates your ownership of the mini app by adding Base builder address in the manifest. + + Submit your App to be verified on [Base.dev](https://www.base.dev/). This process validates your ownership of the app by adding Base builder address. @@ -20,8 +20,6 @@ description: Earn financial incentives for building high-quality Apps that driv - - Learn how to prepare and submit your Mini App for the verification process. - + diff --git a/docs/mini-apps/introduction/overview.mdx b/docs/apps/introduction/overview.mdx similarity index 100% rename from docs/mini-apps/introduction/overview.mdx rename to docs/apps/introduction/overview.mdx diff --git a/docs/mini-apps/llms-full.txt b/docs/apps/llms-full.txt similarity index 71% rename from docs/mini-apps/llms-full.txt rename to docs/apps/llms-full.txt index a522587b8..1a9f7b432 100644 --- a/docs/mini-apps/llms-full.txt +++ b/docs/apps/llms-full.txt @@ -1,11 +1,11 @@ -# https://docs.base.org/mini-apps/llms-full.txt +# https://docs.base.org/apps/llms-full.txt -## Mini Apps — Deep Guide for LLMs +## Apps — deep guide for LLMs > The Base App now treats all apps as standard web apps. Migrate from Farcaster-specific SDKs to wagmi + SIWE, register on Base.dev, and earn rewards for driving onchain activity. ### What you can do here -- Migrate an existing Farcaster mini app to a standard web app compatible with the Base App +- Migrate an existing Farcaster-embedded app to a standard web app compatible with the Base App - Register your app on Base.dev for search, discovery, and rewards eligibility - Replace deprecated Farcaster SDK methods with standard web equivalents (wagmi, viem, SIWE) - Earn financial rewards for building apps that drive user engagement and onchain transactions @@ -13,15 +13,15 @@ ## Navigation (with brief descriptions) ### Quickstart -- [Migrate to a Standard Web App](https://docs.base.org/mini-apps/quickstart/migrate-to-standard-web-app.md) — Step-by-step migration guide: replace Farcaster SDK, update auth and wallet logic, register on Base.dev +- [Migrate to a Standard Web App](https://docs.base.org/apps/quickstart/migrate-to-standard-web-app.md) — Step-by-step migration guide: replace Farcaster SDK, update auth and wallet logic, register on Base.dev ### Growth -- [Rewards](https://docs.base.org/mini-apps/growth/rewards.md) — Verification programs, competitions, and partner opportunities for earning rewards +- [Rewards](https://docs.base.org/apps/growth/rewards.md) — Verification programs, competitions, and partner opportunities for earning rewards ## Key Concepts (excerpts) -Source: `https://docs.base.org/mini-apps/quickstart/migrate-to-standard-web-app.md` +Source: `https://docs.base.org/apps/quickstart/migrate-to-standard-web-app.md` After April 9, 2026, the Base App treats all apps as standard web apps regardless of Farcaster manifests. Key changes: @@ -34,10 +34,10 @@ After April 9, 2026, the Base App treats all apps as standard web apps regardles | Search and discovery via Farcaster | Base.dev app metadata + builder codes | Migration options: -- **AI agent migration** — Install the Migration Skill: `npx skills add base/skills`, then ask your agent to migrate your Farcaster mini app to a standard web app +- **AI agent migration** — Install the Migration Skill: `npx skills add base/skills`, then ask your agent to migrate your Farcaster-embedded app to a standard web app - **Manual migration** — Follow the step-by-step guide to replace SDK methods, update auth, and register on Base.dev -Source: `https://docs.base.org/mini-apps/growth/rewards.md` +Source: `https://docs.base.org/apps/growth/rewards.md` Base.dev rewards developers who build apps that deliver real value and drive meaningful onchain activity: 1. Submit your app for verification on Base.dev — validates ownership by adding a Base builder address in the manifest diff --git a/docs/apps/llms.txt b/docs/apps/llms.txt new file mode 100644 index 000000000..53c10eba2 --- /dev/null +++ b/docs/apps/llms.txt @@ -0,0 +1,11 @@ +# https://docs.base.org/apps/llms.txt + +## Apps documentation + +> Build apps that run in the Base App as standard web apps — no Farcaster SDK required. Register on Base.dev, use wagmi + SIWE for auth, and earn rewards for driving onchain activity. + +## Quickstart +- [Migrate to a Standard Web App](https://docs.base.org/apps/quickstart/migrate-to-standard-web-app.md) — Replace deprecated Farcaster SDK methods and register your app on Base.dev + +## Growth +- [Rewards](https://docs.base.org/apps/growth/rewards.md) — Earn financial incentives for building apps that drive user engagement and onchain transactions diff --git a/docs/mini-apps/quality-and-publishing/overview.mdx b/docs/apps/quality-and-publishing/overview.mdx similarity index 100% rename from docs/mini-apps/quality-and-publishing/overview.mdx rename to docs/apps/quality-and-publishing/overview.mdx diff --git a/docs/mini-apps/quality-and-publishing/quality-bar.mdx b/docs/apps/quality-and-publishing/quality-bar.mdx similarity index 100% rename from docs/mini-apps/quality-and-publishing/quality-bar.mdx rename to docs/apps/quality-and-publishing/quality-bar.mdx diff --git a/docs/mini-apps/quality-and-publishing/submission-guidelines.mdx b/docs/apps/quality-and-publishing/submission-guidelines.mdx similarity index 100% rename from docs/mini-apps/quality-and-publishing/submission-guidelines.mdx rename to docs/apps/quality-and-publishing/submission-guidelines.mdx diff --git a/docs/mini-apps/quickstart/build-checklist.mdx b/docs/apps/quickstart/build-checklist.mdx similarity index 100% rename from docs/mini-apps/quickstart/build-checklist.mdx rename to docs/apps/quickstart/build-checklist.mdx diff --git a/docs/mini-apps/quickstart/building-for-the-base-app.mdx b/docs/apps/quickstart/building-for-the-base-app.mdx similarity index 100% rename from docs/mini-apps/quickstart/building-for-the-base-app.mdx rename to docs/apps/quickstart/building-for-the-base-app.mdx diff --git a/docs/mini-apps/quickstart/create-new-miniapp.mdx b/docs/apps/quickstart/create-new-app.mdx similarity index 100% rename from docs/mini-apps/quickstart/create-new-miniapp.mdx rename to docs/apps/quickstart/create-new-app.mdx diff --git a/docs/mini-apps/quickstart/migrate-existing-apps.mdx b/docs/apps/quickstart/migrate-existing-apps.mdx similarity index 100% rename from docs/mini-apps/quickstart/migrate-existing-apps.mdx rename to docs/apps/quickstart/migrate-existing-apps.mdx diff --git a/docs/mini-apps/quickstart/migrate-to-standard-web-app.mdx b/docs/apps/quickstart/migrate-to-standard-web-app.mdx similarity index 95% rename from docs/mini-apps/quickstart/migrate-to-standard-web-app.mdx rename to docs/apps/quickstart/migrate-to-standard-web-app.mdx index 0c8e5ca68..f5e49fc5f 100644 --- a/docs/mini-apps/quickstart/migrate-to-standard-web-app.mdx +++ b/docs/apps/quickstart/migrate-to-standard-web-app.mdx @@ -1,6 +1,6 @@ --- title: "Migrate to a Standard Web App" -description: "Migrate your Farcaster mini app to work in the Base App. Covers replacing deprecated SDK methods, and registering on Base.dev." +description: "Migrate your Farcaster mini-app to work in the Base App. Covers replacing deprecated SDK methods, and registering on Base.dev." tag: "NEW" --- @@ -9,7 +9,7 @@ After April 9, 2026, the Base App treats all apps as standard web apps regardles -**Using an AI coding agent?** Install the [Migration Skill](https://github.com/base/skills) to let your agent handle this migration automatically. Run `npx skills add base/skills` and ask your agent to migrate your Farcaster mini app to a standard web app. +**Using an AI coding agent?** Install the [Migration Skill](https://github.com/base/skills) to let your agent handle this migration automatically. Run `npx skills add base/skills` and ask your agent to migrate your Farcaster app to a standard web app. ## What's changing @@ -29,9 +29,9 @@ The Base App is moving from the Farcaster mini-app spec to a single model: **sta ## Choose your migration path - + -**Let your agent handle this.** Install the [Migration Skill](https://github.com/base/skills) with `npx skills add base/skills` and ask your agent to migrate your Farcaster mini app to a standard web app. The skill maps deprecated SDK methods, replaces auth and wallet logic, and wires up the Base App path automatically. +**Let your agent handle this.** Install the [Migration Skill](https://github.com/base/skills) with `npx skills add base/skills` and ask your agent to migrate your Farcaster app to a standard web app. The skill maps deprecated SDK methods, replaces auth and wallet logic, and wires up the Base App path automatically. Your app uses the Farcaster SDK. The migration replaces Farcaster-specific auth, identity, and actions with standard web equivalents. @@ -228,7 +228,7 @@ The following Farcaster mini-app SDK methods are not invoked by the Base App aft | `swapToken` | Construct swap transactions with wagmi, viem, or your preferred onchain library. | | `requestCameraAndMicrophoneAccess` | No replacement | | `close` | No replacement | -| `addMiniApp` | the Base App handles mini app installation automatically. No SDK needed. | +| `addMiniApp` | the Base App handles app installation automatically. No SDK needed. | | `viewCast` | Not needed in the Base App | | `composeCast` | Not needed in the Base App | | `ready` | Not needed. Your app is ready to display when it loads. | diff --git a/docs/mini-apps/quickstart/template.mdx b/docs/apps/quickstart/template.mdx similarity index 100% rename from docs/mini-apps/quickstart/template.mdx rename to docs/apps/quickstart/template.mdx diff --git a/docs/mini-apps/resources/design-resources.mdx b/docs/apps/resources/design-resources.mdx similarity index 100% rename from docs/mini-apps/resources/design-resources.mdx rename to docs/apps/resources/design-resources.mdx diff --git a/docs/mini-apps/resources/templates.mdx b/docs/apps/resources/templates.mdx similarity index 100% rename from docs/mini-apps/resources/templates.mdx rename to docs/apps/resources/templates.mdx diff --git a/docs/mini-apps/technical-guides/accept-payments.mdx b/docs/apps/technical-guides/accept-payments.mdx similarity index 100% rename from docs/mini-apps/technical-guides/accept-payments.mdx rename to docs/apps/technical-guides/accept-payments.mdx diff --git a/docs/apps/technical-guides/base-notifications.mdx b/docs/apps/technical-guides/base-notifications.mdx new file mode 100644 index 000000000..1c699e501 --- /dev/null +++ b/docs/apps/technical-guides/base-notifications.mdx @@ -0,0 +1,199 @@ +--- +title: "Notifications" +description: "Send in-app notifications to your app's users through the Base Dashboard REST API." +--- + + + Notifications are delivered through the **Base App** only. Users who interact with your app on other platforms will not receive notifications through this API. + + +The Notifications API lets you send in-app notifications to users who have pinned your app and opted in to notifications. Two REST endpoints handle the full workflow: fetch your audience's wallet addresses, then send targeted or broadcast messages. + +## Prerequisites + +- A project on [Base Dashboard](https://dashboard.base.org) with your app URL registered +- An API key generated from **Settings > API Key** in your Base Dashboard project + +## Quick start + +Both endpoints require your API key in the `x-api-key` header. + + + The notification endpoints share a rate limit of **10 requests per minute per IP**. Requests to either endpoint count toward the same limit. Exceeding it returns a `429 Too Many Requests` response. + + +Fetch the wallet addresses of users who have opted in to notifications for your app: + +```bash title="Get users with notifications enabled" +curl "https://dashboard.base.org/api/v1/notifications/app/users?app_url=¬ification_enabled=true" \ + -H "x-api-key: " +``` + +```json title="Response" +{ + "success": true, + "users": [ + { "address": "0xA11ce00000000000000000000000000000000000", "notificationsEnabled": true }, + { "address": "0xB0B0000000000000000000000000000000000000", "notificationsEnabled": true } + ] +} +``` + +Send a notification to one or more of those addresses. The `target_path` sets the route within your app that opens when the user taps the notification: + +```bash title="Send a notification" +curl -X POST "https://dashboard.base.org/api/v1/notifications/send" \ + -H "x-api-key: " \ + -H "Content-Type: application/json" \ + -d '{ + "app_url": "", + "wallet_addresses": [""], + "title": "", + "message": "<message>", + "target_path": "<target-path>" + }' +``` + +```json title="Response" +{ + "success": true, + "results": [ + { "walletAddress": "0xA11ce00000000000000000000000000000000000", "sent": true } + ], + "sentCount": 1, + "failedCount": 0 +} +``` + +## API reference + +### GET /v1/notifications/app/users + +Returns users who have pinned your app, with optional filtering by notification opt-in status. Results are paginated. + +```http +GET https://dashboard.base.org/api/v1/notifications/app/users +``` + +#### Query parameters + +<ParamField query="app_url" type="string" required> + Your app URL as registered on the Base Dashboard. +</ParamField> + +<ParamField query="notification_enabled" type="boolean"> + Set to `true` to return only users who have enabled notifications for your app. +</ParamField> + +<ParamField query="cursor" type="string"> + Pagination cursor returned from a previous response. Omit for the first page. +</ParamField> + +<ParamField query="limit" type="integer"> + Maximum users per page. Capped at 100. +</ParamField> + +#### Response + +<ResponseField name="success" type="boolean"> + Whether the request succeeded. +</ResponseField> + +<ResponseField name="users" type="array"> + Users who have pinned your app. +</ResponseField> + +<ResponseField name="users[].address" type="string"> + The user's wallet address. +</ResponseField> + +<ResponseField name="users[].notificationsEnabled" type="boolean"> + Whether the user has enabled notifications for your app. +</ResponseField> + +<ResponseField name="nextCursor" type="string"> + Cursor for the next page. Absent when no more results exist. +</ResponseField> + + + +--- + +### POST /v1/notifications/send + +Sends an in-app notification to one or more wallet addresses. + +```http +POST https://dashboard.base.org/api/v1/notifications/send +``` + +#### Request body + +<ParamField body="app_url" type="string" required> + Your app URL as registered on the Base Dashboard. +</ParamField> + +<ParamField body="wallet_addresses" type="string[]" required> + Wallet addresses to notify. Minimum 1, maximum 1,000 per request. +</ParamField> + +<ParamField body="title" type="string" required> + Notification title. Maximum 30 characters. +</ParamField> + +<ParamField body="message" type="string" required> + Notification body text. Maximum 200 characters. +</ParamField> + +<ParamField body="target_path" type="string"> + Path to open when the user taps the notification, such as `/rewards`. Must start with `/` if provided. Maximum 500 characters. Omit to open your app at its root URL. +</ParamField> + +#### Response + +<ResponseField name="success" type="boolean"> + `true` only when every address in the request delivered successfully. +</ResponseField> + +<ResponseField name="results" type="array"> + Per-address delivery status. +</ResponseField> + +<ResponseField name="results[].walletAddress" type="string"> + The targeted wallet address. +</ResponseField> + +<ResponseField name="results[].sent" type="boolean"> + Whether delivery succeeded for this address. +</ResponseField> + +<ResponseField name="results[].failureReason" type="string"> + Present when `sent` is `false`. Possible values: `user has not saved this app`, `user has notifications disabled`. +</ResponseField> + +<ResponseField name="sentCount" type="number"> + Total notifications delivered successfully. +</ResponseField> + +<ResponseField name="failedCount" type="number"> + Total notifications that failed to deliver. +</ResponseField> + + +## Errors + +Both endpoints return the following errors: + +| Status | Code | Cause | +|--------|------|-------| +| 400 | `Bad Request` | Possible causes:<ul><li>`app_url` is missing</li><li>`title` is missing or exceeds 30 characters</li><li>`message` is missing or exceeds 200 characters</li><li>`wallet_addresses` is missing or exceeds 1,000 addresses</li><li>`target_path` exceeds 500 characters or does not start with `/`</li></ul> | +| 401 | `Unauthorized` | Missing or invalid API key. | +| 403 | `Forbidden` | The `app_url` does not belong to your project, or your project is not whitelisted for notifications. | +| 404 | `Not Found` | The project associated with your API key does not exist. | +| 503 | `Service Unavailable` | The notification service is temporarily unavailable. Retry the request. Send endpoint only. | + +## Batching and deduplication + +Each request accepts up to 1,000 addresses. For larger audiences, split your address list across multiple requests. + +Duplicate addresses within a single request are deduplicated automatically. Identical notifications — same app URL, wallet address, title, message, and target path — sent within a 24-hour window are also deduplicated and return a success response without sending a duplicate push. diff --git a/docs/mini-apps/technical-guides/building-chat-agents.mdx b/docs/apps/technical-guides/building-chat-agents.mdx similarity index 100% rename from docs/mini-apps/technical-guides/building-chat-agents.mdx rename to docs/apps/technical-guides/building-chat-agents.mdx diff --git a/docs/mini-apps/technical-guides/neynar-notifications.mdx b/docs/apps/technical-guides/neynar-notifications.mdx similarity index 100% rename from docs/mini-apps/technical-guides/neynar-notifications.mdx rename to docs/apps/technical-guides/neynar-notifications.mdx diff --git a/docs/mini-apps/technical-guides/sharing-and-social-graph.mdx b/docs/apps/technical-guides/sharing-and-social-graph.mdx similarity index 100% rename from docs/mini-apps/technical-guides/sharing-and-social-graph.mdx rename to docs/apps/technical-guides/sharing-and-social-graph.mdx diff --git a/docs/mini-apps/technical-guides/sign-manifest.mdx b/docs/apps/technical-guides/sign-manifest.mdx similarity index 100% rename from docs/mini-apps/technical-guides/sign-manifest.mdx rename to docs/apps/technical-guides/sign-manifest.mdx diff --git a/docs/mini-apps/troubleshooting/base-app-compatibility.mdx b/docs/apps/troubleshooting/base-app-compatibility.mdx similarity index 100% rename from docs/mini-apps/troubleshooting/base-app-compatibility.mdx rename to docs/apps/troubleshooting/base-app-compatibility.mdx diff --git a/docs/mini-apps/troubleshooting/common-issues.mdx b/docs/apps/troubleshooting/common-issues.mdx similarity index 100% rename from docs/mini-apps/troubleshooting/common-issues.mdx rename to docs/apps/troubleshooting/common-issues.mdx diff --git a/docs/mini-apps/troubleshooting/error-handling.mdx b/docs/apps/troubleshooting/error-handling.mdx similarity index 100% rename from docs/mini-apps/troubleshooting/error-handling.mdx rename to docs/apps/troubleshooting/error-handling.mdx diff --git a/docs/mini-apps/troubleshooting/how-search-works.mdx b/docs/apps/troubleshooting/how-search-works.mdx similarity index 100% rename from docs/mini-apps/troubleshooting/how-search-works.mdx rename to docs/apps/troubleshooting/how-search-works.mdx diff --git a/docs/mini-apps/troubleshooting/testing.mdx b/docs/apps/troubleshooting/testing.mdx similarity index 100% rename from docs/mini-apps/troubleshooting/testing.mdx rename to docs/apps/troubleshooting/testing.mdx diff --git a/docs/base-account/guides/verify-social-accounts.mdx b/docs/base-account/guides/verify-social-accounts.mdx index f435ed670..861a1eb46 100644 --- a/docs/base-account/guides/verify-social-accounts.mdx +++ b/docs/base-account/guides/verify-social-accounts.mdx @@ -160,7 +160,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { ┌─────────────┐ │ │ 1. User connects wallet │ Your │ - │ Mini App │ + │ App │ │ (Frontend) │ └──────┬──────┘ │ @@ -176,7 +176,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { │ ▼ ┌──────────────┐ - │ Mini App │ • Validates trait requirements + │ App │ • Validates trait requirements │ Backend │ • Verifies signature with Base Verify API │ (Your API) │ └──────┬───────┘ @@ -192,12 +192,12 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { │ 404 Not Found ▼ - 5. Redirect to Base Verify Mini App + 5. Redirect to Base Verify App │ ▼ ┌──────────────────────┐ │ Base Verify │ 6. User completes OAuth - │ Mini App │ (X, Coinbase, Instagram, TikTok) + │ App │ (X, Coinbase, Instagram, TikTok) │ verify.base.dev │ 7. Base Verify stores verification └──────────┬───────────┘ │ @@ -205,7 +205,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { ▼ ┌─────────────┐ │ Your │ 9. Check again (step 4) - │ Mini App │ → Now returns 200 or 400 + │ App │ → Now returns 200 or 400 └─────────────┘ ``` @@ -213,7 +213,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { - Generate SIWE messages with trait requirements - Handle user wallet connection -- Redirect to the Base Verify Mini App when verification is not found +- Redirect to the Base Verify App when verification is not found - Store the returned verification token to prevent reuse - Keep your secret key secure on the backend @@ -230,7 +230,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { | Code | Meaning | Action | | :--- | :--- | :--- | | **200 OK** | Wallet has verified the provider account AND meets all trait requirements. Returns a unique token. | Grant access, store the token. | -| **404 Not Found** | Wallet has never verified this provider. | Redirect user to the Base Verify Mini App. | +| **404 Not Found** | Wallet has never verified this provider. | Redirect user to the Base Verify App. | | **400 Bad Request** (`verification_traits_not_satisfied`) | Wallet has verified the provider, but doesn't meet the trait requirements. | Show user they don't meet requirements. Do **not** redirect. | --- @@ -247,7 +247,7 @@ async function claimAirdrop(verificationToken: string, walletAddress: string) { Provide the Base Verify team: -1. Your **Mini App domain** +1. Your **App domain** 2. Your **redirect URI** — where users return after verification (e.g., `https://yourapp.com`) <Warning> @@ -416,9 +416,9 @@ Your backend **must** validate that the trait requirements in the SIWE message m <Step title="Redirect to Base Verify (frontend)"> -If you receive a 404 response, redirect the user to the Base Verify Mini App to complete OAuth: +If you receive a 404 response, redirect the user to the Base Verify App to complete OAuth: -```typescript Open the Base Verify Mini App highlight={3-6,9} +```typescript Open the Base Verify App highlight={3-6,9} function redirectToVerifyMiniApp(provider: string) { const params = new URLSearchParams({ redirect_uri: config.appUrl, @@ -432,7 +432,7 @@ function redirectToVerifyMiniApp(provider: string) { } ``` -After verification, the user returns to your `redirect_uri` with `?success=true`. Run the check again (step 3) and it now returns 200 with a token. If you're building for the Base app, see the [Mini apps overview](/mini-apps/introduction/overview) for broader app structure and lifecycle guidance. +After verification, the user returns to your `redirect_uri` with `?success=true`. Run the check again (step 3) and it now returns 200 with a token. If you're building for the Base app, see the [Apps overview](/apps/introduction/overview) for broader app structure and lifecycle guidance. </Step> </Steps> @@ -441,7 +441,7 @@ After verification, the user returns to your `redirect_uri` with `?success=true` | Response | What to do | | :--- | :--- | -| **404** | User hasn't verified. Redirect to the Base Verify Mini App. | +| **404** | User hasn't verified. Redirect to the Base Verify App. | | **400** (`verification_traits_not_satisfied`) | User has account but doesn't meet requirements. Show a message — don't redirect and don't retry. | | **200** | Store the token and grant access. | @@ -512,7 +512,7 @@ curl -X POST https://verify.base.dev/v1/base_verify_token \ } ``` -Redirect the user to the Base Verify Mini App to complete verification. +Redirect the user to the Base Verify App to complete verification. **400 Bad Request — traits not satisfied:** @@ -536,7 +536,7 @@ The user has the provider account but doesn't meet trait requirements. Do not re Check that your secret key is correct and included in the Authorization header. -### Mini App redirect +### App redirect To redirect users to Base Verify for verification: @@ -836,14 +836,14 @@ if (!validation.valid) { Base Verify validates provider accounts through [OAuth](https://oauth.net/2/): -1. User initiates OAuth in the Base Verify Mini App +1. User initiates OAuth in the Base Verify App 2. Provider (X, Instagram, etc.) authenticates the user 3. Provider returns an OAuth token to Base Verify 4. Base Verify fetches account data using the OAuth token 5. Base Verify stores the verification linked to the user's wallet 6. OAuth token is encrypted and stored securely -Your app never handles OAuth tokens or redirects — this is all handled within the Base Verify Mini App. +Your app never handles OAuth tokens or redirects — this is all handled within the Base Verify App. ### Data storage diff --git a/docs/base-account/improve-ux/spend-permissions.mdx b/docs/base-account/improve-ux/spend-permissions.mdx index 26044cc4c..5afa7a69c 100644 --- a/docs/base-account/improve-ux/spend-permissions.mdx +++ b/docs/base-account/improve-ux/spend-permissions.mdx @@ -12,7 +12,7 @@ After the user signs the permission, the `spender` can initiate transfers within Read more about the Spend Permission Manager contract and supported chains on [GitHub](https://github.com/coinbase/spend-permissions). <Callout type="info"> - Spend Permissions for Base App Mini Apps are coming soon and will be supported in a future update. + Spend Permissions for Base App Apps are coming soon and will be supported in a future update. </Callout> <Note> diff --git a/docs/base-chain/builder-codes/app-developers.mdx b/docs/base-chain/builder-codes/app-developers.mdx index 2d5b55d24..d75206b5a 100644 --- a/docs/base-chain/builder-codes/app-developers.mdx +++ b/docs/base-chain/builder-codes/app-developers.mdx @@ -6,7 +6,7 @@ description: "Integrate Builder Codes into your app using Wagmi or Viem to attri ## Automatic Attribution on Base -Once your app is registered on [base.dev](http://base.dev/), the Base App will auto-append your Builder Code to transactions its users make in your app (e.g. via your mini app, or the Base App's browser). This powers your onchain analytics in [base.dev](http://base.dev/) and qualifies you for potential future rewards. +Once your app is registered on [base.dev](http://base.dev/), the Base App will auto-append your Builder Code to transactions its users make in your app (e.g. via your app, or the Base App's browser). This powers your onchain analytics in [base.dev](http://base.dev/) and qualifies you for potential future rewards. ## Integrating Outside the Base App diff --git a/docs/changes.md b/docs/changes.md new file mode 100644 index 000000000..b9b9970e8 --- /dev/null +++ b/docs/changes.md @@ -0,0 +1,46 @@ +# Changes: Mini Apps → Apps (docs) + +## Summary + +- **Mintlify tab**: `"Mini Apps"` → `"Apps"` in [`docs.json`](docs.json). +- **Content path**: `docs/mini-apps/` → `docs/apps/`; published URLs are now `/apps/...`. +- **Slugs renamed**: + - `quickstart/create-new-miniapp` → `quickstart/create-new-app` + - `growth/build-viral-mini-apps` → `growth/build-viral-apps` +- **Redirects**: + - All redirect **destinations** updated to `/apps/...` (and new slugs). + - All redirect **sources** that pointed at the old docs tree use the **`/mini-apps/...`** prefix again (legacy inbound URLs). + - **Wildcard** (last in the `redirects` array): `/mini-apps/:slug*` → `/apps/:slug*`. + - **Explicit** (before wildcard): `/mini-apps/quickstart/create-new-miniapp` → `/apps/quickstart/create-new-app`, `/mini-apps/growth/build-viral-mini-apps` → `/apps/growth/build-viral-apps`. +- **Copy (non-hidden pages only)**: Pages **without** `hidden: true` keep refreshed wording and links. **`hidden: true` MDX** was **restored from `HEAD`** (`docs/mini-apps/...` at last commit) so we do not maintain editorial or link updates there; [`docs.json`](docs.json) redirects still map `/mini-apps/...` → `/apps/...` for visitors. +- **Preserved in non-hidden edits where applicable**: `fc:miniapp`, `miniapps.farcaster.xyz`, `addMiniApp`, `useMiniKit`, API values like `open_miniapp`, and **GitHub** paths under `base/demos` that still use a `mini-apps/` directory segment. + +## Follow-up fixes (redirects & public pages) + +These are **config and visible docs only** (not hidden MDX): + +| Issue | Resolution | +|--------|------------| +| Destinations pointed at **`/apps/overview`** (no page) | Now **`/apps/quickstart/create-new-app`** (matches prior `/mini-apps/overview` behavior). | +| **`/mini-apps/features/links`** → missing `technical-guides/links` | Destination is **`/apps/core-concepts/navigation`**. | +| **`/mini-apps/growth/data-driven-growth`** → missing `technical-guides/data-driven-growth` | Destination is **`https://base.dev`** (same as the `technical-guides/data-driven-growth` redirect). | +| **`/apps/features/manifest`** (base-app minikit redirects) | **`/apps/core-concepts/manifest`**. | +| **`/mini-apps/quickstart/new-apps/features`** → missing `features/overview` | **`/apps/featured-guidelines/overview`**. | + +Cross-links updated in **non-hidden** docs only, e.g. [`get-started/learning-resources.mdx`](get-started/learning-resources.mdx), [`base-account/guides/verify-social-accounts.mdx`](base-account/guides/verify-social-accounts.mdx), [`base-chain/builder-codes/app-developers.mdx`](base-chain/builder-codes/app-developers.mdx), [`base-account/improve-ux/spend-permissions.mdx`](base-account/improve-ux/spend-permissions.mdx). + +## Files touched + +- [`docs/docs.json`](docs.json) — navigation, redirects, wildcard. +- [`docs/.mintignore`](.mintignore) — paths under `/apps/...`. +- [`docs/apps/**`](apps/) — **Visible** pages (e.g. `quickstart/migrate-to-standard-web-app`, `growth/rewards`, `technical-guides/base-notifications`) plus `llms.txt` / `llms-full.txt`. +- [`docs/llms.txt`](llms.txt), [`docs/llms-full.txt`](llms-full.txt). +- [`claude.md`](../claude.md) — repo structure diagram. +- [`scripts/generate-agents-md.js`](../scripts/generate-agents-md.js) — comments. +- [`docs/agents.md`](agents.md) — regenerated. + +## Verification + +1. **`node scripts/lint-mdx.js`** — Run after edits. +2. **Spot-check**: `/apps/quickstart/migrate-to-standard-web-app`, `/apps/quickstart/create-new-app`, `/apps/growth/rewards`. +3. **Legacy URLs**: `/mini-apps/...` → `/apps/...` via redirects; hidden pages may still contain `/mini-apps/` in **source** links (unchanged); those URLs redirect when hit. diff --git a/docs/docs.json b/docs/docs.json index 9b8b57f53..c7a02f009 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -567,19 +567,25 @@ ] }, { - "tab": "Mini Apps", + "tab": "Apps", "groups": [ { "group": "Quickstart", "pages": [ - "mini-apps/quickstart/migrate-to-standard-web-app", + "apps/quickstart/migrate-to-standard-web-app", "get-started/build-app" ] }, { "group": "Growth", "pages": [ - "mini-apps/growth/rewards" + "apps/growth/rewards" + ] + }, + { + "group": "Notifications", + "pages": [ + "apps/technical-guides/base-notifications" ] } ] @@ -706,31 +712,27 @@ }, { "source": "/mini-apps/core-concepts/*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/resources/*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/featured-guidelines/*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/troubleshooting/*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/introduction/*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" - }, - { - "source": "/mini-apps/growth/build-viral-mini-apps", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/growth/optimize-onboarding", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/technical-guides/dynamic-embeds", @@ -906,51 +908,51 @@ }, { "source": "/onchainkit/latest/components/minikit/overview", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/provider-and-initialization", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useMiniKit", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useOpenUrl", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useClose", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/usePrimaryButton", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useViewProfile", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useComposeCast", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useViewCast", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useAuthenticate", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useAddFrame", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/latest/components/minikit/hooks/useNotification", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/onchainkit/identity/identity", @@ -1102,15 +1104,15 @@ }, { "source": "/onchainkit/checkout/checkout", - "destination": "/mini-apps/technical-guides/accept-payments" + "destination": "/apps/technical-guides/accept-payments" }, { "source": "/onchainkit/checkout/types", - "destination": "/mini-apps/technical-guides/accept-payments" + "destination": "/apps/technical-guides/accept-payments" }, { "source": "/onchainkit/latest/components/checkout/checkout", - "destination": "/mini-apps/technical-guides/accept-payments" + "destination": "/apps/technical-guides/accept-payments" }, { "source": "/onchainkit/wallet/wallet", @@ -1598,55 +1600,55 @@ }, { "source": "/base-app/agents/chat-agents", - "destination": "/mini-apps/technical-guides/building-chat-agents" + "destination": "/apps/technical-guides/building-chat-agents" }, { "source": "/base-app/agents/getting-started", - "destination": "/mini-apps/technical-guides/building-chat-agents#getting-started" + "destination": "/apps/technical-guides/building-chat-agents#getting-started" }, { "source": "/base-app/agents/building-quality-agents", - "destination": "/mini-apps/technical-guides/building-chat-agents#best-practices" + "destination": "/apps/technical-guides/building-chat-agents#best-practices" }, { "source": "/base-app/agents/getting-featured", - "destination": "/mini-apps/technical-guides/building-chat-agents#best-practices" + "destination": "/apps/technical-guides/building-chat-agents#best-practices" }, { "source": "/base-app/agents/quick-actions", - "destination": "/mini-apps/technical-guides/building-chat-agents#quick-actions" + "destination": "/apps/technical-guides/building-chat-agents#quick-actions" }, { "source": "/base-app/agents/transaction-trays", - "destination": "/mini-apps/technical-guides/building-chat-agents#transaction-trays" + "destination": "/apps/technical-guides/building-chat-agents#transaction-trays" }, { "source": "/base-app/agents/deeplinks", - "destination": "/mini-apps/technical-guides/building-chat-agents#deeplinks" + "destination": "/apps/technical-guides/building-chat-agents#deeplinks" }, { "source": "/base-app/agents/x402-agents", - "destination": "/mini-apps/technical-guides/building-chat-agents#payment-agents-x402" + "destination": "/apps/technical-guides/building-chat-agents#payment-agents-x402" }, { "source": "/base-app/agents/mini-apps-and-agents", - "destination": "/mini-apps/technical-guides/building-chat-agents#mini-app-integration" + "destination": "/apps/technical-guides/building-chat-agents#app-integration" }, { "source": "/mini-apps/technical-guides/search-discovery", - "destination": "/mini-apps/troubleshooting/how-search-works" + "destination": "/apps/troubleshooting/how-search-works" }, { "source": "/mini-apps/overview", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/mini-apps/features/wallet", - "destination": "/mini-apps/core-concepts/base-account" + "destination": "/apps/core-concepts/base-account" }, { "source": "/mini-apps/growth/data-driven-growth", - "destination": "/mini-apps/technical-guides/data-driven-growth" + "destination": "https://base.dev" }, { "source": "/mini-apps/technical-guides/data-driven-growth", @@ -1654,43 +1656,43 @@ }, { "source": "/mini-apps/features/links", - "destination": "/mini-apps/technical-guides/links" + "destination": "/apps/core-concepts/navigation" }, { "source": "/mini-apps/technical-guides/links", - "destination": "/mini-apps/core-concepts/navigation" + "destination": "/apps/core-concepts/navigation" }, { "source": "/mini-apps/features/search-and-discovery", - "destination": "/mini-apps/troubleshooting/how-search-works" + "destination": "/apps/troubleshooting/how-search-works" }, { "source": "/mini-apps/features/sharing-and-social-graph", - "destination": "/mini-apps/technical-guides/sharing-and-social-graph" + "destination": "/apps/technical-guides/sharing-and-social-graph" }, { "source": "/mini-apps/features/sign-manifest", - "destination": "/mini-apps/technical-guides/sign-manifest" + "destination": "/apps/technical-guides/sign-manifest" }, { "source": "/mini-apps/features/manifest", - "destination": "/mini-apps/core-concepts/manifest" + "destination": "/apps/core-concepts/manifest" }, { "source": "/mini-apps/features/authentication", - "destination": "/mini-apps/core-concepts/authentication" + "destination": "/apps/core-concepts/authentication" }, { "source": "/mini-apps/features/context", - "destination": "/mini-apps/core-concepts/context" + "destination": "/apps/core-concepts/context" }, { "source": "/mini-apps/features/notifications", - "destination": "/mini-apps/core-concepts/notifications" + "destination": "/apps/core-concepts/notifications" }, { "source": "/mini-apps/features/embeds-and-previews", - "destination": "/mini-apps/core-concepts/embeds-and-previews" + "destination": "/apps/core-concepts/embeds-and-previews" }, { "source": "/privacy-policy-2025", @@ -2002,27 +2004,27 @@ }, { "source": "/cookbook/growth/cast-actions", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/growth/deploy-to-vercel", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/growth/email-campaigns", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/growth/gating-and-redirects", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/growth/hyperframes", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/growth/retaining-users", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/payments/build-ecommerce-app", @@ -2034,19 +2036,19 @@ }, { "source": "/cookbook/social/convert-farcaster-frame", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/social/farcaster-nft-minting-guide", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/social/farcaster-no-code-nft-minting", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/cast-actions", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/commerce/build-an-ecommerce-app", @@ -2054,35 +2056,35 @@ }, { "source": "/cookbook/use-case-guides/create-email-campaigns", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/creator/convert-farcaster-frame-to-open-frame", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/deploy-to-vercel", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/gating-and-redirects", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/hyperframes", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/nft-minting", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/no-code-minting", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/retaining-users", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/use-case-guides/transactions", @@ -2486,7 +2488,7 @@ }, { "source": "/use-cases/decentralize-social-app", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/use-cases/defi-your-app", @@ -2514,7 +2516,7 @@ }, { "source": "/wallet-app/mini-apps", - "destination": "/base-app/introduction/mini-apps" + "destination": "/get-started/build-app" }, { "source": "/wallet-app/chat-agents", @@ -2534,11 +2536,11 @@ }, { "source": "/base-app/introduction/what-are-mini-apps", - "destination": "/mini-apps/overview" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/introduction/why-mini-apps", - "destination": "/mini-apps/overview" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/miniapps/overview", @@ -2550,119 +2552,119 @@ }, { "source": "/base-app/miniapps/existing-app-integration", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/base-app/build-with-minikit/existing-app-integration", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/base-app/miniapps/quickstart", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/build-with-minikit/quickstart", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/mini-apps/quickstart/existing-apps/:slug*", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/quickstart/migrate-existing-apps", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/mini-apps/quickstart/new-apps/:slug*", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/miniapps/mini-apps", - "destination": "/mini-apps/overview" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/build-with-minikit/mini-apps", - "destination": "/mini-apps/overview" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/base-app/miniapps/search-and-discovery", - "destination": "/mini-apps/troubleshooting/how-search-works" + "destination": "/apps/troubleshooting/how-search-works" }, { "source": "/base-app/build-with-minikit/search-and-discovery", - "destination": "/mini-apps/troubleshooting/how-search-works" + "destination": "/apps/troubleshooting/how-search-works" }, { "source": "/base-app/miniapps/sharing-your-miniapp", - "destination": "/mini-apps/technical-guides/sharing-and-social-graph" + "destination": "/apps/technical-guides/sharing-and-social-graph" }, { "source": "/base-app/build-with-minikit/sharing-your-miniapp", - "destination": "/mini-apps/technical-guides/sharing-and-social-graph" + "destination": "/apps/technical-guides/sharing-and-social-graph" }, { "source": "/base-app/miniapps/how-manifest-work", - "destination": "/mini-apps/features/manifest" + "destination": "/apps/core-concepts/manifest" }, { "source": "/base-app/build-with-minikit/how-manifest-work", - "destination": "/mini-apps/features/manifest" + "destination": "/apps/core-concepts/manifest" }, { "source": "/base-app/miniapps/thinking-social", - "destination": "/mini-apps/growth/build-viral-mini-apps" + "destination": "/apps/growth/build-viral-apps" }, { "source": "/base-app/build-with-minikit/thinking-social", - "destination": "/mini-apps/growth/build-viral-mini-apps" + "destination": "/apps/growth/build-viral-apps" }, { "source": "/base-app/miniapps/debugging", - "destination": "/mini-apps/troubleshooting/common-issues" + "destination": "/apps/troubleshooting/common-issues" }, { "source": "/base-app/build-with-minikit/debugging", - "destination": "/mini-apps/troubleshooting/common-issues" + "destination": "/apps/troubleshooting/common-issues" }, { "source": "/mini-apps/design-ux/best-practices", - "destination": "/mini-apps/featured-guidelines/design-guidelines" + "destination": "/apps/featured-guidelines/design-guidelines" }, { "source": "/mini-apps/design-ux/design-patterns", - "destination": "/mini-apps/featured-guidelines/design-guidelines" + "destination": "/apps/featured-guidelines/design-guidelines" }, { "source": "/mini-apps/design-ux/onchainkit", - "destination": "/mini-apps/featured-guidelines/design-guidelines" + "destination": "/apps/featured-guidelines/design-guidelines" }, { "source": "/mini-apps/quickstart/new-apps/features", - "destination": "/mini-apps/features/overview" + "destination": "/apps/featured-guidelines/overview" }, { "source": "/mini-apps/quickstart/new-apps/install", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/mini-apps/quickstart/new-apps/deploy", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/mini-apps/quickstart/new-apps/create-manifest", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/mini-apps/design-ux/:slug*", - "destination": "/mini-apps/featured-guidelines/design-guidelines" + "destination": "/apps/featured-guidelines/design-guidelines" }, { "source": "/mini-apps/get-featured/requirements", - "destination": "/mini-apps/featured-guidelines/overview" + "destination": "/apps/featured-guidelines/overview" }, { "source": "/mini-apps/quickstart/launch-checklist", - "destination": "/mini-apps/quickstart/build-checklist" + "destination": "/apps/quickstart/build-checklist" }, { "source": "/mini-apps/technical-reference/minikit/overview", @@ -2746,7 +2748,7 @@ }, { "source": "/cookbook/onchain-social", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/defi-your-app", @@ -2758,7 +2760,7 @@ }, { "source": "/cookbook/base-app-coins", - "destination": "/mini-apps/introduction/overview" + "destination": "/apps/introduction/overview" }, { "source": "/cookbook/testing-onchain-apps", @@ -2774,11 +2776,11 @@ }, { "source": "/cookbook/introduction-to-mini-apps", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/ai-powered-development-fundamentals", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/mastering-ai-prompt-engineering", @@ -2786,7 +2788,7 @@ }, { "source": "/cookbook/essential-documentation-resources", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/ai-assisted-documentation-reading", @@ -2794,51 +2796,51 @@ }, { "source": "/cookbook/successful-miniapps-in-tba", - "destination": "/mini-apps/featured-guidelines/overview" + "destination": "/apps/featured-guidelines/overview" }, { "source": "/cookbook/minikit/build-your-mini-app-with-prompt", - "destination": "/mini-apps/quickstart/create-new-miniapp" + "destination": "/apps/quickstart/create-new-app" }, { "source": "/cookbook/converting-customizing-mini-apps", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/cookbook/minikit/fork-and-customize", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/cookbook/minikit/install", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/cookbook/minikit/add-minikit", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/cookbook/minikit/configure-environment", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/cookbook/minikit/manifest-cli", - "destination": "/mini-apps/technical-guides/sign-manifest" + "destination": "/apps/technical-guides/sign-manifest" }, { "source": "/cookbook/minikit/create-manifest", - "destination": "/mini-apps/core-concepts/manifest" + "destination": "/apps/core-concepts/manifest" }, { "source": "/cookbook/minikit/add-frame-metadata", - "destination": "/mini-apps/core-concepts/manifest" + "destination": "/apps/core-concepts/manifest" }, { "source": "/cookbook/minikit/test-and-deploy", - "destination": "/mini-apps/quickstart/build-checklist" + "destination": "/apps/quickstart/build-checklist" }, { "source": "/mini-apps/mini-apps/quickstart/migrate-to-standard-web-app", - "destination": "/mini-apps/quickstart/migrate-to-standard-web-app" + "destination": "/apps/quickstart/migrate-to-standard-web-app" }, { "source": "/ai-agents/core-concepts/agent-frameworks", @@ -2899,6 +2901,18 @@ { "source": "/ai-agents/guides/identity-siwa", "destination": "/ai-agents/setup/agent-registration" + }, + { + "source": "/mini-apps/quickstart/create-new-miniapp", + "destination": "/apps/quickstart/create-new-app" + }, + { + "source": "/mini-apps/growth/build-viral-mini-apps", + "destination": "/apps/growth/build-viral-apps" + }, + { + "source": "/mini-apps/:slug*", + "destination": "/apps/:slug*" } ], "integrations": { diff --git a/docs/get-started/learning-resources.mdx b/docs/get-started/learning-resources.mdx index c621dad89..e2d014f01 100644 --- a/docs/get-started/learning-resources.mdx +++ b/docs/get-started/learning-resources.mdx @@ -18,6 +18,6 @@ We will be adding more learning resources to help you build on Base. Stay tuned - New educational content In the meantime, check out the following resources: -- [Base Account](/base-account/overview/what-is-base-account), [Mini Apps](/mini-apps/quickstart/create-new-miniapp), and [Base Chain](/base-chain/quickstart/why-base) for building on Base. +- [Base Account](/base-account/overview/what-is-base-account), [Apps](/apps/quickstart/create-new-app), and [Base Chain](/base-chain/quickstart/why-base) for building on Base. - [CryptoZombies](https://cryptozombies.io/) and [Solidity by Example](https://solidity-by-example.org/) for learning Solidity. - [Base Prompt Library](/get-started/prompt-library) for building with AI. \ No newline at end of file diff --git a/docs/llms-full.txt b/docs/llms-full.txt index 50e19ea69..177cb2354 100644 --- a/docs/llms-full.txt +++ b/docs/llms-full.txt @@ -6,7 +6,7 @@ ## How the docs are organized - Products have two files each: `/<product>/llms.txt` (index) and `/<product>/llms-full.txt` (expanded) -- Main sections: Get Started, Base Chain, Base Account, AI Agents, Mini Apps +- Main sections: Get Started, Base Chain, Base Account, AI Agents, Apps ## Cross-site concepts @@ -23,7 +23,7 @@ Sources: - `https://docs.base.org/base-account/guides/authenticate-users.md` - `https://docs.base.org/base-account/guides/verify-social-accounts.md` -> Auth patterns vary by product. Use SIWE (ERC‑6492 compatible) for user sign-in where smart wallets may not yet exist. In Mini Apps, defer auth until needed; prefer scoped, revocable permissions and transaction trays for intent. Supply API keys via environment variables, rotate regularly, and verify server-side signatures or webhooks. Never store user passkeys or raw private keys server-side. +> Auth patterns vary by product. Use SIWE (ERC‑6492 compatible) for user sign-in where smart wallets may not yet exist. In Apps, defer auth until needed; prefer scoped, revocable permissions and transaction trays for intent. Supply API keys via environment variables, rotate regularly, and verify server-side signatures or webhooks. Never store user passkeys or raw private keys server-side. ### Identity verification and Sybil resistance Sources: @@ -78,7 +78,7 @@ const client = createPublicClient({ chain: base, transport: http() }) - Base Account — `./base-account/llms-full.txt` - AI Agents — `./ai-agents/llms-full.txt` - Base Chain — `./base-chain/llms-full.txt` -- Mini Apps — `./mini-apps/llms-full.txt` +- Apps — `./apps/llms-full.txt` ## Related indexes - Root index: `./llms.txt` diff --git a/docs/llms.txt b/docs/llms.txt index cd10dfce5..dc5a131d2 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -8,7 +8,7 @@ - [Base Chain](./base-chain/llms.txt) — Deploy/connect, network info, tools, node ops, security - [Base Account](./base-account/llms.txt) — Passkey smart wallet, payments, social verification, spend permissions, sponsored gas, sub‑accounts - [AI Agents](./ai-agents/llms.txt) — Build onchain AI agents: wallets, payments, identity, trading, and installable skills -- [Mini Apps](./mini-apps/llms.txt) — Migrate to standard web apps on Base, register on Base.dev, earn rewards +- [Apps](./apps/llms.txt) — Migrate to standard web apps on Base, register on Base.dev, earn rewards ## Tools available for AI assistants @@ -94,8 +94,8 @@ Base is an Ethereum L2 by Coinbase. Docs for: Base Chain, Smart Wallet, OnchainK |base-chain/quickstart:base-solana-bridge,connecting-to-base,deploy-on-base,why-base |base-chain/security:avoid-malicious-flags,bug-bounty,report-vulnerability,security-council |get-started:base-mentorship-program,base-services-hub,base,block-explorers,build-app,concepts,country-leads-and-ambassadors,data-indexers,deploy-smart-contracts,docs-llms,docs-mcp,get-funded,launch-token,learning-resources,prompt-library,resources-for-ai-agents -|mini-apps/quickstart:migrate-to-standard-web-app -|mini-apps/growth:rewards +|apps/quickstart:migrate-to-standard-web-app +|apps/growth:rewards |onchainkit:migrate-from-onchainkit |root:agents,cookie-policy,privacy-policy,terms-of-service,tone_of_voice ``` diff --git a/docs/mini-apps/llms.txt b/docs/mini-apps/llms.txt deleted file mode 100644 index f80e964ad..000000000 --- a/docs/mini-apps/llms.txt +++ /dev/null @@ -1,11 +0,0 @@ -# https://docs.base.org/mini-apps/llms.txt - -## Mini Apps Documentation - -> Build apps that run in the Base App as standard web apps — no Farcaster SDK required. Register on Base.dev, use wagmi + SIWE for auth, and earn rewards for driving onchain activity. - -## Quickstart -- [Migrate to a Standard Web App](https://docs.base.org/mini-apps/quickstart/migrate-to-standard-web-app.md) — Replace deprecated Farcaster SDK methods and register your app on Base.dev - -## Growth -- [Rewards](https://docs.base.org/mini-apps/growth/rewards.md) — Earn financial incentives for building apps that drive user engagement and onchain transactions diff --git a/scripts/generate-agents-md.js b/scripts/generate-agents-md.js index 4b7ec0464..3e5b9c9a2 100755 --- a/scripts/generate-agents-md.js +++ b/scripts/generate-agents-md.js @@ -40,10 +40,10 @@ function loadMintIgnore(mintignorePath) { if (!trimmed || trimmed.startsWith('#')) continue; if (trimmed.endsWith('/*')) { - // /mini-apps/core-concepts/* → skip all files in that dir + // /apps/core-concepts/* → skip all files in that dir ignored.dirs.add(trimmed.slice(1, -2)); } else if (trimmed.startsWith('/')) { - // /mini-apps/growth/build-viral-mini-apps → skip specific file + // /apps/growth/build-viral-apps → skip specific file ignored.files.add(trimmed.slice(1)); } else { // writing.md → skip by bare filename anywhere