Skip to content

feat: add SeaweedFS hosting and client integrations#1349

Open
Stertz wants to merge 6 commits into
CommunityToolkit:mainfrom
Stertz:feature/add-seaweedfs-component
Open

feat: add SeaweedFS hosting and client integrations#1349
Stertz wants to merge 6 commits into
CommunityToolkit:mainfrom
Stertz:feature/add-seaweedfs-component

Conversation

@Stertz

@Stertz Stertz commented May 22, 2026

Copy link
Copy Markdown

Closes #1336

Overview of changes

This PR introduces the SeaweedFS integration for the Aspire Community Toolkit, providing a highly performant and scalable object/file storage alternative.

As discussed in the linked issue, it includes:

  1. Hosting Integration (CommunityToolkit.Aspire.Hosting.SeaweedFS): A robust AppHost resource builder that configures the SeaweedFS cluster, exposing both the S3 Gateway and the Native Filer endpoints dynamically, along with data volume persistence support.
  2. Client Integration (CommunityToolkit.Aspire.SeaweedFS.Client): Extensions to seamlessly inject the standard AWSSDK.S3 client and a strongly-typed SeaweedFSFilerClient using Aspire's service discovery, complete with independent health checks.
  3. Tests: Full suite of Unit tests, Component Conformance tests, and E2E Functional tests (using Docker/Testcontainers) for both APIs.
  4. Example App: A working Aspire application demonstrating how to consume the integration.

All details and motivations are outlined in the linked issue.

PR Checklist

  • Created a feature/dev branch in your fork (vs. submitting directly from a commit on main)
  • Based off latest main branch of toolkit
  • PR doesn't include merge commits (always rebase on top of our main, if needed)
  • New integration
    • Docs are written
    • Added description of major feature to project description for NuGet package (4000 total character limit, so don't push entire description over that)
  • Tests for the changes have been added (for bug fixes / features) (if applicable)
  • Contains NO breaking changes
  • Every new API (including internal ones) has full XML docs
  • Code follows all style conventions

@github-actions

github-actions Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1349

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1349"


filerGroup.MapPost("/upload", async ([FromQuery] string fileName, [FromBody] string content, SeaweedFSFilerClient filerClient) =>
{
var stringContent = new StringContent(content);

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple of nits on the namespaces and project files

Comment thread examples/seaweedfs/SeaweedFS.ApiService/SeaweedFS.ApiService.csproj Outdated
Comment thread examples/seaweedfs/SeaweedFS.ServiceDefaults/SeaweedFS.ServiceDefaults.csproj Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSContainerResource.cs Outdated
Comment thread src/CommunityToolkit.Aspire.SeaweedFS.Client/SeaweedFSClientSettings.cs Outdated
@Stertz Stertz force-pushed the feature/add-seaweedfs-component branch from f3ea5af to b680e26 Compare May 26, 2026 14:18
@Stertz

Stertz commented May 26, 2026

Copy link
Copy Markdown
Author

Done!

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With 13.4, we don't need to have as much verbosity in the AspireExport attributes, so I've put in the cleanup on that.

We'll also need a TypeScript apphost created and a test against it (there's several examples in the repo).

Comment thread examples/seaweedfs/SeaweedFS.AppHost/SeaweedFS.AppHost.csproj Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
@Stertz Stertz force-pushed the feature/add-seaweedfs-component branch from 43b3548 to bd355c3 Compare May 29, 2026 20:47
@Stertz Stertz requested a review from aaronpowell June 2, 2026 02:16
@Stertz

Stertz commented Jun 2, 2026

Copy link
Copy Markdown
Author

Done!

@github-actions github-actions Bot added the Stale label Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: Add SeaweedFS Integration (Hosting & Client) as an alternative to MinIO

3 participants