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

# Presentum Documentation

> A declarative Flutter engine for building dynamic, conditional UI at scale

<Frame>
  <img className="block dark:hidden rounded-xl" src="https://mintcdn.com/presentum/csDzFBoCJo6ZSdiT/images/hero-light.png?fit=max&auto=format&n=csDzFBoCJo6ZSdiT&q=85&s=1274cd2bd7c8bbca4564e5abb402318c" alt="Presentum - Declarative presentation engine for Flutter" width="2064" height="1104" data-path="images/hero-light.png" />

  <img className="hidden dark:block rounded-xl" src="https://mintcdn.com/presentum/csDzFBoCJo6ZSdiT/images/hero-dark.png?fit=max&auto=format&n=csDzFBoCJo6ZSdiT&q=85&s=39ed4e90c7c1b528c035e00f97a002bb" alt="Presentum - Declarative presentation engine for Flutter" width="2064" height="1104" data-path="images/hero-dark.png" />
</Frame>

## Build dynamic UI at scale

Presentum is a declarative Flutter engine that helps you manage campaigns, app updates, special offers, tips, and notifications with clean, testable, type-safe code.

Show the right message to the right user at the right time, with impression limits, cooldowns, A/B testing, and analytics - all handled automatically.

<CardGroup cols={2}>
  <Card title="Declarative by design" icon="code">
    Describe presentations as data. No imperative show/hide logic.
  </Card>

  <Card title="Type-safe" icon="shield-check">
    Generics ensure compile-time correctness. No runtime surprises.
  </Card>

  <Card title="Clean architecture" icon="layer-group">
    Business logic in guards, UI in outlets, tracking in storage.
  </Card>

  <Card title="Production ready" icon="rocket">
    Eligibility rules, A/B tests, cooldowns, impression tracking built-in.
  </Card>
</CardGroup>

## Quick example

```dart theme={null}
// 1. Define surfaces
enum AppSurface with PresentumSurface {
  homeTopBanner,
  popup;
}

// 2. Create payload
class CampaignPayload extends PresentumPayload<AppSurface, CampaignVariant> {
  final String id;
  final int priority;
  final Map<String, Object?> metadata;
  final List<PresentumOption> options;
}

// 3. Initialize
final presentum = Presentum(
  storage: MyStorage(),
  guards: [CampaignGuard()],
);

// 4. Render
PresentumOutlet(
  surface: AppSurface.homeTopBanner,
  builder: (context, item) => BannerWidget(item),
)
```

<Check>
  That's it! Presentum handles eligibility, impressions, cooldowns, and state
  automatically.
</Check>

## Get started

<CardGroup cols={3}>
  <Card title="Introduction" icon="book-open" href="/introduction">
    Learn what Presentum is and why it exists
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Build your first presentation in 5 minutes
  </Card>

  <Card title="Core concepts" icon="lightbulb" href="/core-concepts/overview">
    Deep dive into architecture
  </Card>
</CardGroup>

## What you can build

Check out the [comprehensive example application](https://github.com/itsezlife/presentum/tree/master/example) source code.

<CardGroup cols={3}>
  <Card title="Maintenance" icon="wrench" href="https://github.com/itsezlife/presentum/tree/master/example/lib/src/maintenance">
    Maintenance mode dialogs and system status notifications
  </Card>

  <Card title="App updates" icon="arrow-up" href="https://github.com/itsezlife/presentum/tree/master/example/lib/src/updates">
    Force update dialogs, optional upgrade prompts, changelog announcements
  </Card>

  <Card title="Marketing campaigns" icon="megaphone" href="https://github.com/itsezlife/presentum/tree/master/example/lib/src/campaigns">
    Special offers with discount codes, limited-time sales, seasonal campaigns,
    A/B tests
  </Card>

  <Card title="Feature toggles" icon="toggle-on" href="https://github.com/itsezlife/presentum/tree/master/example/lib/src/feature">
    User-configurable feature flags, toggleable from settings, with dependency
    chains and feature-aware widgets that adapt UI based on enabled features
  </Card>

  <Card title="User preferences" icon="sliders" href="https://github.com/itsezlife/presentum/tree/master/example/lib/src/settings">
    Settings, user preferences, and feature toggles
  </Card>
</CardGroup>

## Guides

<CardGroup cols={2}>
  <Card title="Implementing guards" icon="shield" href="/guides/implementing-guards">
    Build eligibility logic
  </Card>

  {" "}

  <Card title="Implementing storage" icon="database" href="/guides/implementing-storage">
    Persistent tracking layer
  </Card>

  {" "}

  <Card title="Building outlets" icon="tv" href="/guides/building-outlets">
    Create presentation widgets
  </Card>

  {" "}

  <Card title="State management" icon="layer-group" href="/guides/state-management">
    Integrate with your state solution
  </Card>
</CardGroup>

## Recipes

<CardGroup cols={2}>
  <Card title="Firebase Remote Config" icon="fire" href="/recipes/remote-config">
    Dynamic campaign management
  </Card>

  {" "}

  <Card title="App update dialogs" icon="arrow-up" href="/recipes/app-updates">
    Force and optional updates
  </Card>

  {" "}

  <Card title="A/B testing" icon="flask" href="/recipes/ab-testing">
    Multi-variant experiments
  </Card>

  <Card title="Analytics integration" icon="chart-line" href="/recipes/analytics">
    Track impressions and conversions
  </Card>
</CardGroup>

## Community

<CardGroup cols={2}>
  <Card title="GitHub" icon="github" href="https://github.com/itsezlife/presentum">
    Source code and issues
  </Card>

  <Card title="pub.dev" icon="box" href="https://pub.dev/packages/presentum">
    Package page and API docs
  </Card>
</CardGroup>

## Ready to start?

<Card title="Start with the quickstart guide" icon="play" href="/quickstart" horizontal>
  Build your first Presentum presentation in 5 minutes
</Card>
