> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastapps.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Welcome to FastApps

> The world's first python framework for apps in ChatGPT.

## What is FastApps?

FastApps is a **zero-boilerplate framework** for building ChatGPT apps, \
powered by OpenAI's Apps SDK and FastMCP.

<Card title="Quick Start" icon="rocket" href="/quickstart/index" horizontal>
  Get your first widget running in 5 minutes!
</Card>

## Why FastApps?

Building with the raw Apps SDK requires extensive boilerplate - protocol handlers, tool registration, resource management, and build configuration. **FastApps eliminates all of that.**

<Columns cols={2}>
  <Card title="Zero Boilerplate" icon="wand-magic-sparkles">
    Just 2 files per widget - a Python tool and a React component. That's it!
  </Card>

  <Card title="Auto-Discovery" icon="magnifying-glass">
    Drop files in `server/tools/` and FastApps automatically discovers and registers them.
  </Card>

  <Card title="Type Safety" icon="shield-check">
    Full Pydantic validation on backend and TypeScript support on frontend.
  </Card>

  <Card title="Built-in Authentication" icon="lock">
    OAuth 2.0 support with Auth0, Clerk, and custom providers out of the box.
  </Card>
</Columns>

## Quick Example

### MCP Tool (Backend)

```python theme={null}
from fastapps import BaseWidget, Field, ConfigDict
from pydantic import BaseModel
from typing import Dict, Any

class MyWidgetInput(BaseModel):
    model_config = ConfigDict(populate_by_name=True)
    name: str = Field(default="World")

class MyWidgetTool(BaseWidget):
    identifier = "my-widget"
    title = "My Widget"
    input_schema = MyWidgetInput
    invoking = "Processing..."
    invoked = "Done!"
    
    async def execute(self, input_data: MyWidgetInput) -> Dict[str, Any]:
        return {"message": f"Hello, {input_data.name}!"}
```

### React Widget (Frontend)

```jsx theme={null}
import React from 'react';
import { useWidgetProps } from 'fastapps';

export default function MyWidget() {
  const props = useWidgetProps();
  return <h1>{props.message}</h1>;
}
```

That's all you need! FastApps handles everything else automatically.

## Core Features

<Columns cols={2}>
  <Card title="Widgets" icon="window" href="/widgets/index">
    Learn how to build interactive UI components with React.
  </Card>

  <Card title="Server" icon="wrench" href="/server/index">
    Create backend logic with Python and Pydantic validation.
  </Card>

  <Card title="Authentication" icon="key" href="/auth/index">
    Secure your widgets with OAuth 2.0 providers.
  </Card>
</Columns>

## What You'll Build

With FastApps, you can create:

* **Interactive dashboards** with real-time data
* **Form widgets** with validation and submission
* **Data visualizations** with charts and graphs
* **API integrations** that connect to external services
* **Authenticated widgets** with user-specific data

## Ready to Get Started?

<CardGroup cols={2}>
  <Card title="What is FastApps?" icon="circle-question" href="/what-is-fastapps/index">
    Understand the architecture and core concepts.
  </Card>

  <Card title="Quick Start" icon="bolt" href="/quickstart/index">
    Build your first widget in 5 minutes.
  </Card>

  <Card title="Introduction" icon="book-open" href="/introduction/index">
    Learn about the framework architecture.
  </Card>

  <Card title="Authentication" icon="code" href="/auth/index">
    Secure your widgets with OAuth 2.0.
  </Card>
</CardGroup>

***

> **"You should write your widget logic and UI, not MCP boilerplate."**

Need help? Join our [Discord community](https://discord.gg/x83WSGpg) or check out the [GitHub repository](https://github.com/DooiLabs/FastApps).
