## Building and Managing Stripe Apps

This documentation suite guides you through the entire lifecycle of developing and managing Stripe Apps. Stripe Apps allow you to extend Stripe's functionality by embedding custom user interfaces directly within the Stripe Dashboard or by orchestrating the Stripe API for various backend tasks.

### Getting Started with Stripe Apps

*   **Overview of Stripe Apps** (`/stripe-apps`): Understand the core concepts of Stripe Apps, including their capabilities, types of apps you can build (backend, frontend, full-stack), and how to get started.
*   **Creating Your First App** (`/stripe-apps/create-app`): A step-by-step guide to building a basic "Hello, world!" app, including setting up the Stripe CLI and creating a UI extension.
*   **How Stripe Apps Work** (`/stripe-apps/how-stripe-apps-work`): Delve deeper into the architecture of Stripe Apps, including their frontend and backend components.
*   **Common Use Cases** (`/stripe-apps/common-use-cases`): Explore examples of what you can build with Stripe Apps, such as syncing data or customizing the UI.

### Developing Your Stripe App

*   **Building a User Interface** (`/stripe-apps/build-ui`): Learn how to create custom UIs within the Stripe Dashboard using TypeScript, React, and Stripe's UI Extensions SDK.
*   **UI Components** (`/stripe-apps/components`): A comprehensive reference of all available UI components for building your app's interface, including:
    *   Layout and structural components: `Box`, `Inline`, `Divider`, `FullPageView`, `OverviewPage`
    *   Input controls: `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `Radio`, `Select`, `Switch`, `TextArea`, `TextField`
    *   Information display: `Accordion`, `Badge`, `Banner`, `Chip`, `Icon`, `Img`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Spinner`, `Table`, `Tabs`, `TaskList`, `Toast`, `Tooltip`
    *   Navigation and views: `ContextView`, `FocusView`, `Link`, `OnboardingView`, `SettingsView`, `SignInView`
    *   Data visualization: `BarChart`, `LineChart`
    *   Specialized components: `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`, `FormFieldGroup`, `FullPageTabs`, `SearchField`
*   **Adding Server-Side Logic** (`/stripe-apps/build-backend`): Implement backend code for validating user actions, processing data, and integrating with third-party systems.
*   **API Authentication Methods** (`/stripe-apps/api-authentication`): Understand how to authenticate your app with the Stripe API using Platform keys, OAuth 2.0, or Restricted API Keys.
    *   **OAuth 2.0** (`/stripe-apps/api-authentication/oauth`)
    *   **Restricted API Key** (`/stripe-apps/api-authentication/rak`)
*   **Authorization Flows** (`/stripe-apps/pkce-oauth-flow`): Implement secure OAuth flows, including PKCE.
*   **Storing Secrets** (`/stripe-apps/store-secrets`): Securely store sensitive data like API credentials and tokens using the Secret Store API.
*   **Handling Different Modes** (`/stripe-apps/handling-modes`): Adapt your app to work seamlessly in both live and sandbox environments.
*   **Enabling Sandbox Support** (`/stripe-apps/enable-sandbox-support`): Configure your app to be installable in Stripe's testing environments.
*   **Enabling Local Network Access** (`/stripe-apps/enable-local-network-access`): Configure your browser to allow local network access for app previewing.
*   **App Settings Page** (`/stripe-apps/app-settings`): Create a dedicated page for users to configure their app settings within the Stripe Dashboard.
*   **Deep Links** (`/stripe-apps/deep-links`): Create deep links to navigate users directly to specific pages within your Stripe app.
*   **Post-Install Actions** (`/stripe-apps/post-install-actions`): Guide users through any necessary configurations after they install your app.
*   **UI Extension Developer Tools** (`/stripe-apps/ui-extension-developer-tools`): Utilize bundled tools for type checking, linting, and testing your UI extensions.
*   **UI Testing** (`/stripe-apps/ui-testing`): Learn how to write unit tests for your app's user interface.
*   **Styling Your App** (`/stripe-apps/style`): Apply consistent styling to your app using Stripe's design tokens and components.
*   **Designing Your App** (`/stripe-apps/design`): Access design guidelines, tools, and philosophy for creating a user-friendly Stripe App.
*   **Viewports Reference** (`/stripe-apps/reference/viewports`): Understand the different locations within the Stripe Dashboard where your app's UI can be rendered.
*   **Route Descriptors** (`/stripe-apps/route-descriptors`): Implement soft, context-preserving navigation within the Dashboard.

### App Distribution and Management

*   **Distribution Options** (`/stripe-apps/distribution-options`): Learn about the different ways to share your Stripe Apps with users, including public and private distribution.
*   **Uploading and Installing Your App** (`/stripe-apps/upload-install-app`): Make your app available to team members on your Stripe account.
*   **Publishing Your App** (`/stripe-apps/publish-app`): Guide your app through the Stripe App Marketplace submission and review process.
*   **App Review Requirements** (`/stripe-apps/review-requirements`): Understand the quality standards your app must meet for marketplace publication.
*   **Testing Your App Externally** (`/stripe-apps/test-app`): Set up and distribute test versions of your app to a limited group of users before public release.
*   **Managing Versions and Releases** (`/stripe-apps/versions-and-releases`): Learn how to manage app updates and new releases.
*   **Install Links** (`/stripe-apps/install-links`): Allow users to install your public app outside of the Stripe App Marketplace.
*   **Promoting Your App** (`/stripe-apps/promote-app`): Discover opportunities to partner with Stripe and grow your app's reach.

### Migration and Legacy Information

*   **Migrating Extensions to Stripe Apps** (`/stripe-apps/migrate-extension`): Understand why and how to migrate legacy extensions to the modern Stripe Apps platform.
*   **Migrating a Plugin** (`/stripe-apps/plugins/decide-migration`): Decide on the best migration path for your existing plugins to Stripe Apps or Stripe Connect.
    *   **Migrate to OAuth 2.0 App** (`/stripe-apps/plugins/oauth`)
    *   **Migrate to a RAK App** (`/stripe-apps/plugins/rak`)
*   **Legacy Extensions** (`/building-extensions`): Information about the deprecated extensions integration pattern for historical reference.

### Reference and Examples

*   **App Manifest Reference** (`/stripe-apps/reference/app-manifest`): A detailed guide to all fields, types, and descriptions for your app manifest file.
*   **Stripe Apps CLI Reference** (`/stripe-apps/reference/cli`): Learn how to use the command-line interface to manage your Stripe Apps.
*   **Permissions Reference** (`/stripe-apps/reference/permissions`): A list of 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 starting points for your own development.
    *   **Back-end App Example** (`/stripe-apps/back-end-app-example`)
    *   **Front-end App Example** (`/stripe-apps/front-end-app-example`)
    *   **Full-stack App Example** (`/stripe-apps/full-stack-app-example`)

### Design Patterns

*   **Design Patterns Overview** (`/stripe-apps/patterns`): Learn about recommended design patterns for building consistent and scalable Stripe Apps.
*   **Full Page Apps** (`/stripe-apps/patterns/full-page-apps`): Design complete, multi-view interfaces within the Stripe Dashboard.
*   **Action Buttons** (`/stripe-apps/patterns/action-buttons`): Best practices for placing and using action buttons.
*   **Onboarding Flow** (`/stripe-apps/patterns/onboarding-experience`): Create effortless and intuitive onboarding experiences for your users.
*   **Additional Context** (`/stripe-apps/patterns/additional-context`): Provide users with necessary information during onboarding.
*   **Back Link** (`/stripe-apps/patterns/back-link`): Implement navigation to previous pages.
*   **Communicating State** (`/stripe-apps/patterns/communicating-state`): Inform users about temporary status updates or required actions.
*   **Demo Content** (`/stripe-apps/patterns/demo`): Display concise and effective demonstrations of your app's core functionality.
*   **Empty State** (`/stripe-apps/patterns/empty-state`): Clearly indicate when no data is available to load.
*   **Filter Controls** (`/stripe-apps/patterns/filter-controls`): Use chips to allow users to filter table rows.
*   **Lists** (`/stripe-apps/patterns/lists`): Display collections of information effectively.
*   **Loading** (`/stripe-apps/patterns/loading`): Use spinners to indicate when data is being loaded.
*   **Progress Stepping** (`/stripe-apps/patterns/progress-stepping`): Guide users through multi-step tasks.
*   **Redirects** (`/stripe-apps/patterns/redirects`): Create clear and user-friendly redirects.
*   **Settings Sign In** (`/stripe-apps/patterns/settings-signin`): Onboard users through a settings page for backend-only apps.
*   **Sign In Template** (`/stripe-apps/patterns/sign-in`): Implement a secure and focused sign-in experience.
*   **Sign Out** (`/stripe-apps/patterns/sign-out`): Provide a clear way for users to sign out of your app.
*   **Waiting Screens** (`/stripe-apps/patterns/waiting-screens`): Inform users about wait times and next steps during onboarding.