"Aspire only makes sense if your whole stack is .NET."
I believed that too, until I wired up the open-source fullstackhero .net 10 starter kit a few months ago.
Now one command brings up a stack that is mostly not .NET, and all of it comes from a single AppHost.
Here is what spins up together:
A .NET 10 API.
Two React apps, an admin console and a dashboard, both TypeScript.
A small .NET console app that runs the database migrations and then exits.
Postgres, Redis, and MinIO for file storage, all as containers.
And a tiny shell script that creates the storage bucket before anything else is allowed to start.
The AppHost itself is a C# project, and that is the part that trips people up. They see C# and assume everything it runs has to be C# too. It doesn't.
For the React apps I just point Aspire at the folders and tell it to run them with npm. It handles the install and the dev server for me, no second terminal, no remembering which directory.
The API gets its Postgres, Redis, and storage details handed to it as environment variables, so there are no connection strings pasted into config by hand.
The migration app is set to wait for Postgres, run, and finish before the API is even allowed to boot, so the API never starts against a database that isn't ready.
The part that actually changed my day: all of it reports into one dashboard. One place for logs. One place for traces.
The same health checks for the React apps, the API, and the containers. I stopped juggling five terminals and a Docker window.
So yes, the AppHost is .NET. What it orchestrates is React, Postgres, Redis, object storage, and a shell script.
Different languages, different runtimes, one command, one dashboard.
If you skipped Aspire because your stack isn't pure .NET, that was never the requirement.