## Building and Managing Stripe Apps

This documentation set provides comprehensive guidance on developing, deploying, and managing applications within the Stripe ecosystem. It covers the entire lifecycle of a Stripe App, from initial setup and authentication to UI development, distribution, and ongoing maintenance.

### Core Concepts and Getting Started

*   **Stripe Apps Overview**: Understand the fundamental concepts behind Stripe Apps, including their purpose, capabilities, and how they extend Stripe's functionality.
*   **Getting Started with Stripe Apps**: Follow a step-by-step guide to build your first "Hello, world!" Stripe App, covering essential setup and CLI usage.
*   **How Stripe Apps Work**: Delve into the architecture of Stripe Apps, understanding the interplay between frontend UI extensions and backend components.
*   **Common Use Cases**: Explore various scenarios and examples of how Stripe Apps can be leveraged to solve business needs, categorized by app type (backend, frontend, full-stack).

### Development and Customization

*   **Building a UI**: Learn how to create custom user interfaces within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
*   **UI Components**: Access a comprehensive reference of available UI components, including detailed documentation and examples for each (e.g., Accordion, Button, TextField).
*   **Design Your App**: Understand Stripe's design philosophy and guidelines to create visually consistent and user-friendly applications.
*   **Style Your App**: Learn how to apply custom styling using Stripe's provided design tokens to match the Dashboard's aesthetic.
*   **Component Hierarchy Constraints**: Understand the rules and constraints that govern how UI components can be composed to ensure predictable rendering.
*   **Next Generation UI Components**: Get early access to and learn about the latest UI components being introduced in the Stripe Apps SDK.

### Authentication and Authorization

*   **API Authentication Methods**: Choose and implement the most suitable authentication method for your app, including Platform keys, OAuth 2.0, and Restricted API Keys (RAKs).
*   **OAuth 2.0**: Detailed guide on implementing OAuth 2.0 for secure user authentication and authorization.
*   **Restricted API Key Authentication**: Learn how to leverage RAKs for fine-grained access control.
*   **Add Authorization Flows**: Implement PKCE OAuth workflows to enable secure authorization directly within your Stripe App.
*   **Store Secret Credentials and Tokens**: Securely persist sensitive data like authentication credentials using the Secret Store API.

### Backend and Server-Side Logic

*   **Add Server-Side Logic**: Integrate a self-hosted backend to handle complex processing, webhooks, and long-running app logic.
*   **Back-end App Example**: A practical example demonstrating how to build a Stripe App with backend processing and no user interface.
*   **Front-end App Example**: A practical example of building a Stripe App with a user interface but no backend processing.
*   **Full-stack App Example**: A practical example combining both frontend UI and backend processing.

### Distribution and Deployment

*   **Distribution Options**: Understand the different ways to share your Stripe Apps, including public distribution via the App Marketplace and private sharing.
*   **Upload and Install Your Stripe App**: Learn the process of uploading and installing your app for team members and for testing.
*   **How to Publish an App to the Stripe App Marketplace**: A step-by-step guide to getting your app approved and listed in the public marketplace.
*   **Stripe Apps Quality Requirements**: Familiarize yourself with the qualitative requirements for app review to ensure a smooth submission process.
*   **Test Your App Externally**: Set up and distribute test versions of your app to gather feedback before public release.
*   **Manage Your App's Versions and Releases**: Understand app versioning and release management to ship updates and track changes effectively.

### Migration and Legacy Integrations

*   **Migrate an Extension to Stripe Apps**: Learn why and how to migrate from legacy extensions to the modern Stripe Apps platform.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect**: Understand your options for migrating third-party integrations that previously relied on secret API keys.
*   **Migrate a Plugin to an OAuth 2.0 App**: Specific guidance on migrating plugins to OAuth 2.0-based Stripe Apps.
*   **Migrate a Plugin to a RAK App**: Specific guidance on migrating plugins to Restricted API Key (RAK) based Stripe Apps.
*   **Legacy Extensions**: Information about the deprecated extensions integration pattern for historical reference.

### Advanced Features and Patterns

*   **Enable Local Network Access**: Configure local network access for app previewing during development.
*   **Enable Sandbox Support**: Allow users to install and evaluate your public app in Stripe's testing environments.
*   **Handle Different Modes**: Adapt your app to function correctly in both live mode and sandbox environments.
*   **Add Deep Links**: Create deep links to navigate users directly to specific sections of your Stripe App within the Dashboard.
*   **Embedded Stripe Apps Integration Guide**: Learn how to embed third-party Stripe Apps into your own platform.
*   **App Analytics**: Access and understand data on how your apps are being used and their performance.
*   **Onboarding**: Guide users through a smooth and intuitive sign-in and initial setup process for your app.
*   **Post-Install Actions**: Support additional configurations and actions that occur after a user installs your app.
*   **Using Roles in UI Extensions**: Tailor app functionality based on different user roles within the Stripe Dashboard.
*   **Design Patterns**: Follow recommended design patterns for consistent, clear, and scalable app development.
*   **UI Testing**: Utilize provided utilities and helpers to write unit tests for your app's user interface.
*   **Viewports Reference**: Understand the different areas within the Stripe Dashboard where your app's UI can be rendered.
*   **Route Descriptors**: Implement soft, context-preserving navigation within the Stripe Dashboard from your app.
*   **App Manifest Reference**: A detailed reference for all fields, types, and descriptions within your app manifest file.
*   **Stripe Apps CLI Reference**: Learn how to use the command-line interface to manage your Stripe App development.
*   **Permissions Reference**: Understand available events and their required permissions for your app.
*   **Extension SDK API Reference**: Documentation for the Extension SDK API, providing context props and utility functions for UI extensions.