## Stripe Apps Development

This documentation set provides a comprehensive guide to developing, building, 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** (`/stripe-apps`): Introduces Stripe Apps, their capabilities, and how they extend Stripe's functionality.
*   **Getting Started with Stripe Apps** (`/stripe-apps/create-app`): Guides users through building a basic "Hello, world!" 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`): Demonstrates various scenarios for building Stripe Apps, categorized by app type (back-end, front-end, full-stack).

### Building Your Stripe App

*   **Building a UI** (`/stripe-apps/build-ui`): Details how to create custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extensions SDK.
*   **UI Extensions** (`/stripe-apps/how-ui-extensions-work`): Explains the system for rendering custom UIs within Stripe.
*   **UI Components** (`/stripe-apps/components`): A reference to all available UI components for building your app's interface, with individual pages for each component (e.g., `/stripe-apps/components/accordion`, `/stripe-apps/components/button`).
*   **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 to compose UI components.
*   **Add Server-Side Logic** (`/stripe-apps/build-backend`): Instructions on integrating a self-hosted backend for processing user actions, webhooks, and long-running tasks.
*   **App Settings Page** (`/stripe-apps/app-settings`): How to create a page for users to configure app settings.

### Authentication and Authorization

*   **API Authentication Methods** (`/stripe-apps/api-authentication`): An 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 (RAKs).
*   **Add Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Implementing OAuth flows, including PKCE.
*   **Store Secret Credentials and Tokens** (`/stripe-apps/store-secrets`): Securely storing sensitive data using the Secret Store API.

### Testing and Development

*   **Enable Sandbox Support** (`/stripe-apps/enable-sandbox-support`): How to enable your app for testing in Stripe's sandbox environment.
*   **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.
*   **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`): Utilizing bundled tools for type checking, linting, and testing.

### Distribution and Deployment

*   **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 upload and install your app for team members.
*   **How to Publish an App to the Stripe App Marketplace** (`/stripe-apps/publish-app`): Guide to publishing your app publicly.
*   **Stripe Apps Quality Requirements** (`/stripe-apps/review-requirements`): Understanding the criteria for app review.
*   **Test Your App Externally** (`/stripe-apps/test-app`): Setting up external tests for your app before publication.
*   **Manage Your App's Versions and Releases** (`/stripe-apps/versions-and-releases`): Strategies for versioning and releasing updates.
*   **Using Install Links** (`/stripe-apps/install-links`): Allowing users to install apps outside the App Marketplace.
*   **Add Deep Links** (`/stripe-apps/deep-links`): Creating deep links to navigate users within your app.
*   **Enable Post-Install Actions and Configurations** (`/stripe-apps/post-install-actions`): Supporting configurations after app installation.

### Migration and Legacy Information

*   **Migrate an Extension to Stripe Apps** (`/stripe-apps/migrate-extension`): Information on migrating from legacy extensions to Stripe Apps.
*   **Migrate a Plugin to Stripe Apps or Stripe Connect** (`/stripe-apps/plugins/decide-migration`): Deciding on the best 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`): Historical reference for deprecated extension patterns.

### Design and Best Practices

*   **Design Your App** (`/stripe-apps/design`): Guidelines and philosophy for designing Stripe Apps.
*   **Style Your App** (`/stripe-apps/style`): How to style UI components using design tokens.
*   **Design Patterns for Stripe Apps** (`/stripe-apps/patterns`): Recommended patterns for consistent and scalable app design. This includes specific patterns for:
    *   Action Buttons (`/stripe-apps/patterns/action-buttons`)
    *   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`)
    *   Full Page Apps (`/stripe-apps/patterns/full-page-apps`)
    *   Lists (`/stripe-apps/patterns/lists`)
    *   Loading (`/stripe-apps/patterns/loading`)
    *   Onboarding (`/stripe-apps/patterns/onboarding-experience`)
    *   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`)
*   **App Analytics** (`/stripe-apps/analytics`): Accessing data to understand app performance.

### Reference

*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): Detailed documentation for the `stripe-app.json` file.
*   **Stripe Apps CLI Reference** (`/stripe-apps/reference/cli`): Commands and usage for the Stripe Apps CLI.
*   **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.

### Sample Apps

*   **Sample Apps** (`/stripe-apps/sample-apps`): Links to example applications on GitHub.
*   **Back-end App Example** (`/stripe-apps/back-end-app-example`): A guide to building a back-end-only app.
*   **Front-end App Example** (`/stripe-apps/front-end-app-example`): A guide to building a front-end app with a UI.
*   **Full-stack App Example** (`/stripe-apps/full-stack-app-example`): A guide to building an app with both UI and back-end functionality.