## Building and Designing Stripe Apps

This section provides comprehensive documentation on developing and designing applications within the Stripe ecosystem. It covers the entire lifecycle of a Stripe App, from initial setup and authentication to UI development, distribution, and best practices.

### Core Concepts and Getting Started

*   **Stripe Apps Overview** (`/stripe-apps`): An introduction to Stripe Apps, explaining their purpose, capabilities, and how they extend Stripe's platform.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): A beginner's guide to building your first Stripe App, including setting up the Stripe CLI and creating a basic "Hello, world!" app.
*   **How Stripe Apps Work** (`/stripe-apps/how-stripe-apps-work`): Explains the fundamental architecture of Stripe Apps, including frontend and backend components and different app types (backend, frontend, full-stack).
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Illustrates various scenarios where Stripe Apps can be beneficial, categorized by app type.

### Development and Integration

*   **API Authentication Methods** (`/stripe-apps/api-authentication`): Details the different ways your app can authenticate with the Stripe API, including Platform keys, OAuth 2.0, and Restricted API Keys.
    *   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`): A deep dive into implementing OAuth 2.0 for secure authentication.
    *   **Restricted API Key Authentication** (`/stripe-apps/api-authentication/rak`): Explains how to use Restricted API Keys (RAKs) for more granular access control.
*   **Server-Side Logic** (`/stripe-apps/build-backend`): Guides you on adding backend code to your Stripe App for secure integrations, webhook handling, and long-running processes.
*   **Build a UI** (`/stripe-apps/build-ui`): Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
    *   **How UI Extensions Work** (`/stripe-apps/how-ui-extensions-work`): Understand the architecture and limitations of UI extensions.
    *   **Component Hierarchy Constraints** (`/stripe-apps/component-hierarchy-constraints`): Details the rules governing how UI components can be composed.
    *   **Next Generation UI Components** (`/stripe-apps/next-ui-components`): Explore the latest UI components for enhanced user experiences.
*   **UI Components Reference** (`/stripe-apps/components`): A comprehensive catalog of all available UI components for building your app's interface, including:
    *   Layout and Structural Components: `Box`, `Inline`, `Divider`, `FocusView`, `ContextView`, `FullPageView`, `FullPageTabs`, `OverviewPage`, `SettingsView`, `SignInView`, `OnboardingView`.
    *   Input Controls: `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `Radio`, `Select`, `TextArea`, `TextField`, `Switch`.
    *   Data Display and Visualization: `Accordion`, `Badge`, `Banner`, `BarChart`, `Chip`, `DataTable`, `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`, `Icon`, `Img`, `LineChart`, `Link`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Spinner`, `Table`, `Tabs`, `TaskList`, `Toast`, `Tooltip`.
    *   Specialized Components: `FormFieldGroup`, `SearchField`.
*   **App Settings Page** (`/stripe-apps/app-settings`): Learn how to create a dedicated settings page for users to configure your app.
*   **Store Secret Credentials and Tokens** (`/stripe-apps/store-secrets`): Securely persist sensitive data like API keys and tokens using the Secret Store API.
*   **Handle Different Modes** (`/stripe-apps/handling-modes`): Adapt your app to work seamlessly in both live and sandbox environments.
*   **Enable Sandbox Support** (`/stripe-apps/enable-sandbox-support`): Configure your app for installation in Stripe's testing environments.
*   **Enable Local Network Access** (`/stripe-apps/enable-local-network-access`): Understand and configure local network access for app previewing.
*   **Add Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Implement PKCE OAuth workflows for secure authorization.
*   **Post-Install Actions** (`/stripe-apps/post-install-actions`): Guide users through necessary configurations after they install your app.
*   **Deep Links** (`/stripe-apps/deep-links`): Create deep links to navigate users directly to specific pages within your Stripe App.
*   **Install Links** (`/stripe-apps/install-links`): Allow users to install your app directly from your website or other external platforms.

### Testing, Distribution, and Migration

*   **Test Your App Externally** (`/stripe-apps/test-app`): Set up and distribute test versions of your app before public release.
*   **UI Testing** (`/stripe-apps/ui-testing`): Learn how to test your app's user interface using provided utilities and helpers.
*   **UI Extension Developer Tools** (`/stripe-apps/ui-extension-developer-tools`): Utilize bundled tools for type checking, linting, and testing your UI extension code.
*   **Upgrade Stripe's UI Extension SDK** (`/stripe-apps/upgrade-stripes-ui-extension-sdk`): Guidance on upgrading your app to the latest versions of the UI extension SDK.
*   **Distribution Options** (`/stripe-apps/distribution-options`): Explore the different ways to share your Stripe Apps with users, including public and private distribution.
*   **Upload and Install Your Stripe App** (`/stripe-apps/upload-install-app`): Steps to upload and install your app for team members or for testing.
*   **Publish Your App to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Learn the process of getting your app approved and listed on the Stripe App Marketplace.
*   **Stripe Apps Quality Requirements** (`/stripe-apps/review-requirements`): Understand the quality standards your app must meet for app review.
*   **Migrate an Extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Information on why and how to migrate legacy extensions to the modern Stripe Apps platform.
    *   **Migrate a Plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Guidance on choosing the right migration path.
    *   **Migrate a Plugin to an OAuth 2.0 App** (`/stripe-apps/plugins/oauth`): Specific steps for migrating to OAuth 2.0 authentication.
    *   **Migrate a Plugin to a RAK App** (`/stripe-apps/plugins/rak`): Specific steps for migrating to Restricted API Key authentication.

### Design and Best Practices

*   **Design Your App** (`/stripe-apps/design`): Get started with design tools, guidelines, and philosophy for creating user-friendly Stripe Apps.
*   **Style Your App** (`/stripe-apps/style`): Learn how to style UI components using Stripe's design tokens for visual consistency.
*   **Design Patterns for Stripe Apps** (`/stripe-apps/patterns`): Explore recommended design patterns to expedite development and ensure a consistent user experience. This includes patterns for:
    *   **Full Page Apps** (`/stripe-apps/patterns/full-page-apps`)
    *   **Action Buttons** (`/stripe-apps/patterns/action-buttons`)
    *   **Onboarding Flow** (`/stripe-apps/patterns/onboarding-experience`)
    *   **Additional Context** (`/stripe-apps/patterns/additional-context`)
    *   **Back Link** (`/stripe-apps/patterns/back-link`)
    *   **Communicating State** (`/stripe-apps/patterns/communicating-state`)
    *   **Demo Content** (`/stripe-apps/patterns/demo`)
    *   **Empty State** (`/stripe-apps/patterns/empty-state`)
    *   **Filter Controls** (`/stripe-apps/patterns/filter-controls`)
    *   **Lists** (`/stripe-apps/patterns/lists`)
    *   **Loading** (`/stripe-apps/patterns/loading`)
    *   **Progress Stepping** (`/stripe-apps/patterns/progress-stepping`)
    *   **Redirects** (`/stripe-apps/patterns/redirects`)
    *   **Settings Sign In** (`/stripe-apps/patterns/settings-signin`)
    *   **Sign In Template** (`/stripe-apps/patterns/sign-in`)
    *   **Sign Out** (`/stripe-apps/patterns/sign-out`)
    *   **Waiting Screens** (`/stripe-apps/patterns/waiting-screens`)
*   **Viewports Reference** (`/stripe-apps/reference/viewports`): Understand the different viewports available for rendering your app's UI within the Stripe Dashboard.
*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): Detailed documentation for the `stripe-app.json` manifest file, outlining all fields and their descriptions.
*   **Permissions Reference** (`/stripe-apps/reference/permissions`): A guide to available events and their required permissions for your app.
*   **Extension SDK API Reference** (`/stripe-apps/reference/extensions-sdk-api`): Documentation for the Extension SDK API, including context props and utility functions.
*   **Sample Apps** (`/stripe-apps/sample-apps`): Explore working examples of Stripe Apps to use as a starting point for your own development.

### Legacy Information

*   **Legacy Extensions** (`/building-extensions`): Information about the deprecated extensions integration pattern, with guidance on migrating to Stripe Apps.