# UmamiBuilderExtensions Methods

- Package: [CommunityToolkit.Aspire.Hosting.Umami](/reference/api/csharp/communitytoolkit.aspire.hosting.umami.md)
- Type: [UmamiBuilderExtensions](/reference/api/csharp/communitytoolkit.aspire.hosting.umami/umamibuilderextensions.md)
- Kind: `Methods`
- Members: `2`

Provides extension methods for adding Umami resources to the application model.

## AddUmami(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, int?)

- Name: `AddUmami(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, int?)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<UmamiResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/53d936baa6985dffa2b8fab6c513cd56ddd21c7c/src/CommunityToolkit.Aspire.Hosting.Umami/UmamiBuilderExtensions.cs#L49-L65)

Adds a Umami resource to the application model. A container is used for local development. The default image is and the tag is .

```csharp
public static class UmamiBuilderExtensions
{
    public static IResourceBuilder<UmamiResource> AddUmami(
        this IDistributedApplicationBuilder builder,
        string name,
        IResourceBuilder<ParameterResource>? secret = null,
        int? port = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.
- `secret` (`IResourceBuilder<ParameterResource>`) `optional`
  The parameter used to provide the app secret for the Umami resource.
- `port` (`int?`) `optional`
  The host port for the Umami app.

## Returns

`IResourceBuilder<UmamiResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

Add a Umami container to the application model and reference it in a .NET project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var db = builder.AddPostgres("postgres")
  .AddDatabase("db");
var umami = builder.AddUmami("umami")
  .WithPostgreSQL(db);

builder.Build().Run();
```

## WithPostgreSQL(IResourceBuilder<UmamiResource>, IResourceBuilder<PostgresDatabaseResource>)

- Name: `WithPostgreSQL(IResourceBuilder<UmamiResource>, IResourceBuilder<PostgresDatabaseResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<UmamiResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/53d936baa6985dffa2b8fab6c513cd56ddd21c7c/src/CommunityToolkit.Aspire.Hosting.Umami/UmamiBuilderExtensions.cs#L79-L105)

References a `ApplicationModel.PostgresDatabaseResource` as the storage backend for the [UmamiResource](/reference/api/csharp/communitytoolkit.aspire.hosting.umami/umamiresource.md).

```csharp
public static class UmamiBuilderExtensions
{
    public static IResourceBuilder<UmamiResource> WithPostgreSQL(
        this IResourceBuilder<UmamiResource> builder,
        IResourceBuilder<PostgresDatabaseResource> database)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<UmamiResource>`)
  The Umami resource builder.
- `database` (`IResourceBuilder<PostgresDatabaseResource>`)
  The PostgreSQL database resource builder.

## Returns

`IResourceBuilder<UmamiResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.
