## Stripe Apps Documentation

This documentation set provides comprehensive guidance on developing, building, and managing applications within the Stripe ecosystem using Stripe Apps. It covers everything from initial setup and API authentication to UI development, distribution, and design patterns.

### Core Concepts and Getting Started

*   **Stripe Apps Overview** (`/stripe-apps`): An introduction to Stripe Apps, explaining what they are, their capabilities, and how to get started.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): A step-by-step guide to building your first Stripe App, including setting up the Stripe CLI.
*   **How Stripe Apps Work** (`/stripe-apps/how-stripe-apps-work`): Explains the fundamental architecture and components of Stripe Apps.
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Outlines typical scenarios and examples of what can be built with Stripe Apps.

### Building Your App

*   **Build an App** (Implicitly covered across many pages, e.g., `/stripe-apps/create-app`): General guidance on the app development process.
*   **Build a UI** (`/stripe-apps/build-ui`): Instructions on creating custom user interfaces within the Stripe Dashboard using React and the UI Extensions SDK.
*   **How UI Extensions Work** (`/stripe-apps/how-ui-extensions-work`): Details on the UI extension system and how to extend the Stripe Dashboard.
*   **Add Server-Side Logic** (`/stripe-apps/build-backend`): Guidance on integrating self-hosted backend services for more complex app functionality.
*   **UI Components** (`/stripe-apps/components`): A reference to the various UI components available for building user interfaces.
    *   **Accordion** (`/stripe-apps/components/accordion`)
    *   **Badge** (`/stripe-apps/components/badge`)
    *   **Banner** (`/stripe-apps/components/banner`)
    *   **BarChart** (`/stripe-apps/components/barchart`)
    *   **Box** (`/stripe-apps/components/box`)
    *   **Button** (`/stripe-apps/components/button`)
    *   **ButtonGroup** (`/stripe-apps/components/buttongroup`)
    *   **Checkbox** (`/stripe-apps/components/checkbox`)
    *   **Chip** (`/stripe-apps/components/chip`)
    *   **ContextView** (`/stripe-apps/components/contextview`)
    *   **DataTable** (`/stripe-apps/components/datatable`)
    *   **DateField** (`/stripe-apps/components/datefield`)
    *   **DetailPageModule** (`/stripe-apps/components/detailpagemodule`)
    *   **DetailPagePropertyList** (`/stripe-apps/components/detailpagepropertylist`)
    *   **DetailPageTable** (`/stripe-apps/components/detailpagetable`)
    *   **Divider** (`/stripe-apps/components/divider`)
    *   **FocusView** (`/stripe-apps/components/focusview`)
    *   **FormFieldGroup** (`/stripe-apps/components/formfieldgroup`)
    *   **FullPageTabs** (`/stripe-apps/components/fullpagetabs`)
    *   **FullPageView** (`/stripe-apps/components/fullpageview`)
    *   **Icon** (`/stripe-apps/components/icon`)
    *   **Img** (`/stripe-apps/components/img`)
    *   **Inline** (`/stripe-apps/components/inline`)
    *   **LineChart** (`/stripe-apps/components/linechart`)
    *   **Link** (`/stripe-apps/components/link`)
    *   **List** (`/stripe-apps/components/list`)
    *   **Menu** (`/stripe-apps/components/menu`)
    *   **OnboardingView** (`/stripe-apps/components/onboardingview`)
    *   **OverviewPage** (`/stripe-apps/components/overviewpage`)
    *   **PropertyList** (`/stripe-apps/components/propertylist`)
    *   **Radio** (`/stripe-apps/components/radio`)
    *   **SearchField** (`/stripe-apps/components/searchfield`)
    *   **Select** (`/stripe-apps/components/select`)
    *   **SettingsView** (`/stripe-apps/components/settingsview`)
    *   **SignInView** (`/stripe-apps/components/signinview`)
    *   **Sparkline** (`/stripe-apps/components/sparkline`)
    *   **Spinner** (`/stripe-apps/components/spinner`)
    *   **Switch** (`/stripe-apps/components/switch`)
    *   **Table** (`/stripe-apps/components/table`)
    *   **Tabs** (`/stripe-apps/components/tabs`)
    *   **TaskList** (`/stripe-apps/components/tasklist`)
    *   **TextArea** (`/stripe-apps/components/textarea`)
    *   **TextField** (`/stripe-apps/components/textfield`)
    *   **Toast** (`/stripe-apps/components/toast`)
    *   **Tooltip** (`/stripe-apps/components/tooltip`)
*   **Next generation UI components** (`/stripe-apps/next-ui-components`): Information on using the latest UI components.
*   **Component hierarchy constraints** (`/stripe-apps/component-hierarchy-constraints`): Guidelines on how UI components can be composed.

### Authentication and Authorization

*   **API Authentication Methods** (`/stripe-apps/api-authentication`): Overview of available authentication strategies.
*   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`): Detailed guide on implementing OAuth 2.0 for authentication.
*   **Restricted API Key Authentication** (`/stripe-apps/api-authentication/rak`): Information on using Restricted API Keys for secure access.
*   **Add Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Implementing PKCE OAuth workflows.
*   **Store Secret Credentials and Tokens** (`/stripe-apps/store-secrets`): Securely storing sensitive data using the Secret Store API.

### Development and Testing

*   **Enable Sandbox Support** (`/stripe-apps/enable-sandbox-support`): How to enable sandbox environments for testing.
*   **Enable Local Network Access** (`/stripe-apps/enable-local-network-access`): Configuring local network access for app preview.
*   **Handle Different Modes** (`/stripe-apps/handling-modes`): Adapting your app for live mode and sandboxes.
*   **Test Your App Externally** (`/stripe-apps/test-app`): Setting up and distributing test versions of your app.
*   **UI Testing** (`/stripe-apps/ui-testing`): Utilities and helpers for testing your app's UI.
*   **UI Extension Developer Tools** (`/stripe-apps/ui-extension-developer-tools`): Tools for type checking, linting, and testing your code.
*   **Upgrade Stripe's UI Extension SDK** (`/stripe-apps/upgrade-stripes-ui-extension-sdk`): Guidance on upgrading the UI extension SDK.

### Distribution and Publishing

*   **Distribution Options** (`/stripe-apps/distribution-options`): Overview of how to share your Stripe Apps.
*   **Upload and Install Your Stripe App** (`/stripe-apps/upload-install-app`): Steps to make your app available to team members.
*   **How to Publish an App to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Guide to getting your app approved for the App Marketplace.
*   **Stripe Apps Quality Requirements** (`/stripe-apps/review-requirements`): Qualitative requirements for App Marketplace submissions.
*   **Promote Your App** (`/stripe-apps/promote-app`): Information on partnering with Stripe to grow your app.
*   **Using Install Links** (`/stripe-apps/install-links`): Allowing users to install apps outside the Stripe App Marketplace.

### Migration and Legacy

*   **Migrate an Extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Reasons and steps to migrate legacy extensions.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Deciding on your migration path for plugins.
*   **Migrate a Plugin to an OAuth 2.0 App** (`/stripe-apps/plugins/oauth`): Specific steps for migrating to OAuth 2.0.
*   **Migrate a Plugin to a RAK App** (`/stripe-apps/plugins/rak`): Specific steps for migrating to Restricted API Keys.
*   **Legacy Extensions** (`/building-extensions`): Information on deprecated extension patterns.

### App Configuration and Management

*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): Details on the app manifest file.
*   **Stripe Apps CLI Reference** (`/stripe-apps/reference/cli`): Usage of the command-line interface for managing apps.
*   **Permissions Reference** (`/stripe-apps/reference/permissions`): Available events and their required permissions.
*   **Extension SDK API Reference** (`/stripe-apps/reference/extensions-sdk-api`): Documentation for the Extension SDK.
*   **Viewports Reference** (`/stripe-apps/reference/viewports`): Available viewports for placing UI extensions.
*   **App Settings Page** (`/stripe-apps/app-settings`): Creating a page for users to configure app settings.
*   **Onboarding** (`/stripe-apps/onboarding`): Guiding users through setup after installation.
*   **Post-Install Actions** (`/stripe-apps/post-install-actions`): Configuring actions that occur after app installation.
*   **Manage Your App's Versions and Releases** (`/stripe-apps/versions-and-releases`): Managing app versions and shipping new releases.

### Design Patterns and Guidelines

*   **Design Patterns for Stripe Apps** (`/stripe-apps/patterns`): Recommended patterns for app design.
*   **Full Page Apps** (`/stripe-apps/patterns/full-page-apps`): Building custom, multi-view pages within the Dashboard.
*   **Action Buttons** (`/stripe-apps/patterns/action-buttons`): Best practices for placing action buttons.
*   **Onboarding Flow** (`/stripe-apps/patterns/onboarding-experience`): Building effective onboarding experiences.
*   **Additional Context** (`/stripe-apps/patterns/additional-context`): Providing extra information during onboarding.
*   **Back Link** (`/stripe-apps/patterns/back-link`): Implementing navigation back to previous pages.
*   **Communicating State** (`/stripe-apps/patterns/communicating-state`): Informing users about app status and actions.
*   **Demo Content** (`/stripe-apps/patterns/demo`): Tips for displaying app demonstrations.
*   **Empty State** (`/stripe-apps/patterns/empty-state`): Handling and displaying when no data is available.
*   **Filter Controls** (`/stripe-apps/patterns/filter-controls`): Using chips for filtering table rows.
*   **Lists** (`/stripe-apps/patterns/lists`): Displaying collections of information.
*   **Loading** (`/stripe-apps/patterns/loading`): Indicating when data is being loaded.
*   **Progress Stepping** (`/stripe-apps/patterns/progress-stepping`): Guiding users through multi-step tasks.
*   **Redirects** (`/stripe-apps/patterns/redirects`): Creating clear redirects for users.
*   **Settings Sign In** (`/stripe-apps/patterns/settings-signin`): Onboarding users on a settings page.
*   **Sign In Template** (`/stripe-apps/patterns/sign-in`): Using the `SignInView` component for sign-in.
*   **Sign Out** (`/stripe-apps/patterns/sign-out`): Implementing user sign-out functionality.
*   **Waiting Screens** (`/stripe-apps/patterns/waiting-screens`): Informing users about wait times and next steps.
*   **Design Your App** (`/stripe-apps/design`): General design philosophy and tools.
*   **Style Your App** (`/stripe-apps/style`): Styling UI components using design tokens.

### Embedded Apps and Integrations

*   **Embedded Stripe Apps Integration Guide** (`/stripe-apps/embedded-apps`): Using embedded components for Stripe Apps.
*   **Marketing Software Integrations** (`/stripe-apps/embedded-apps/marketing-integrations`): Integrating marketing software like Mailchimp.

### Examples and Samples

*   **Back-end App Example** (`/stripe-apps/back-end-app-example`): Example of a backend-only app.
*   **Front-end App Example** (`/stripe-apps/front-end-app-example`): Example of a frontend-only app.
*   **Full-stack App Example** (`/stripe-apps/full-stack-app-example`): Example of a full-stack app.
*   **Sample Apps** (`/stripe-apps/sample-apps`): Links to various sample apps on GitHub.

### Navigation

*   **Add Deep Links** (`/stripe-apps/deep-links`): Creating deep links to navigate users within your app.
*   **Navigate within the Dashboard using Route Descriptors** (`/stripe-apps/route-descriptors`): Implementing soft navigation to Dashboard pages.