# Stripe Apps Development

This documentation set provides a comprehensive guide to developing, building, and deploying applications on the Stripe platform using Stripe Apps. It covers everything from initial setup and core concepts to advanced features, UI components, and design best practices.

## Getting Started

*   **Overview:** Understand the fundamental concepts of Stripe Apps and how they extend Stripe's functionality.
*   **Create an App:** Learn the basics of app development by building a simple "Hello, world!" app.
*   **How Stripe Apps Work:** Delve into the architecture and components of Stripe Apps, including frontend and backend considerations.
*   **Sample Apps:** Explore a variety of pre-built sample applications to see practical implementations and design patterns.

## Building Your App

### Core Concepts

*   **App Manifest:** Configure your app's behavior, permissions, and integration points using the `stripe-app.json` file.
*   **API Authentication:** Choose and implement the appropriate authentication methods (Platform key, OAuth 2.0, Restricted API Key) for your app.
*   **Server-Side Logic:** Add backend functionality to your app for data processing, third-party integrations, and webhook handling.
*   **UI Extensions:** Create custom user interfaces within the Stripe Dashboard using React and Stripe's UI Extension SDK.
*   **UI Components:** Utilize a rich library of pre-built UI components to build consistent and intuitive user interfaces.
    *   **Layout and Structure:** `Box`, `Inline`, `FullPageView`, `OverviewPage`, `DetailPageModule`, `DetailPagePropertyList`, `DetailPageTable`
    *   **Input and Controls:** `Button`, `ButtonGroup`, `Checkbox`, `DateField`, `FormFieldGroup`, `Radio`, `Select`, `Switch`, `TextArea`, `TextField`
    *   **Data Display:** `Accordion`, `Badge`, `Banner`, `BarChart`, `Chip`, `Divider`, `Icon`, `Img`, `LineChart`, `Link`, `List`, `Menu`, `PropertyList`, `Sparkline`, `Spinner`, `Table`, `Tabs`, `TaskList`, `Toast`, `Tooltip`
    *   **Navigation and Flow:** `ContextView`, `FocusView`, `OnboardingView`, `SettingsView`, `SignInView`, `FullPageTabs`
*   **Design Patterns:** Follow recommended design patterns for a consistent and user-friendly experience.
    *   **Core Patterns:** `Action buttons`, `Onboarding flow`, `Additional context`, `Back link`, `Communicating state`, `Demo content`, `Empty state`, `Filter controls`, `Lists`, `Loading`, `Progress stepping`, `Redirects`, `Settings sign in`, `Sign in template`, `Sign out`, `Waiting screens`
*   **Styling:** Learn how to style your app to match Stripe's design language.

### Development Workflow

*   **Enable Local Network Access:** Configure your development environment for local testing.
*   **Enable Sandbox Support:** Test your app in Stripe's sandboxed environment.
*   **Handle Different Modes:** Adapt your app to work seamlessly in both live and sandbox environments.
*   **Developer Tools:** Utilize bundled developer tools for type checking, linting, and testing.
*   **UI Testing:** Learn how to effectively test your app's user interface.
*   **Route Descriptors:** Implement soft navigation within the Dashboard.
*   **Deep Links:** Create deep links to guide users to specific parts of your app.
*   **Install Links:** Allow users to install your app outside the Stripe App Marketplace.
*   **Post-Install Actions:** Configure actions that occur after a user installs your app.
*   **App Settings Page:** Create a dedicated page for users to configure app settings.
*   **Secret Store API:** Securely store and manage sensitive credentials and tokens.
*   **Roles in UI Extensions:** Tailor functionality based on user roles within the Dashboard.
*   **Versions and Releases:** Manage your app's versions and releases.

## Migration and Deployment

*   **Migrate Extension:** Learn how to migrate legacy extensions to Stripe Apps.
    *   **Migrate to OAuth 2.0 App:** Guide for migrating plugins to OAuth 2.0 authentication.
    *   **Migrate to RAK App:** Guide for migrating plugins to Restricted API Key authentication.
*   **Distribution Options:** Understand how to share your Stripe Apps with users.
*   **Upload and Install Your App:** Make your app available to team members or for wider distribution.
*   **Publish App to Marketplace:** Learn the process of getting your app approved for the Stripe App Marketplace.
*   **App Review Requirements:** Understand the quality and policy requirements for apps submitted to the marketplace.
*   **Test Your App Externally:** Set up and distribute test versions of your app before publication.
*   **App Analytics:** Access data to understand how your app is being used.

## Reference

*   **App Manifest Reference:** Detailed documentation for all fields in the app manifest file.
*   **Stripe Apps CLI Reference:** Commands and usage for the Stripe Apps command-line interface.
*   **Permissions Reference:** Information on available events and their required permissions.
*   **Extension SDK API Reference:** Documentation for the Extension SDK API.
*   **Viewports Reference:** A list of available viewports for Stripe Apps.
*   **UI Components Reference:** Comprehensive documentation for all UI components.