First run

One command starts everything:

dotnet run --project back/Blouppy.Aspire.AppHost

Aspire builds the solution, starts the containers, runs the migrations, then starts the services in order. Its dashboard opens in the browser and links to each of them.

What runs where

ResourceAddress
Gateway — open the application herehttps://localhost:5071
Angular dev server, behind the gatewayhttps://localhost:4201
Web APIhttps://localhost:5001
Identity hosthttps://localhost:5051
Landing pagehttps://localhost:4301
Documentation sitehttps://localhost:4401
PostgreSQLlocalhost:59808 — pgAdmin is linked from the dashboard
Redislocalhost:59812
RabbitMQ managementhttp://localhost:59811
MailPit — every e-mail sent in developmenthttp://localhost:8025

The browser only ever talks to the gateway: it serves the Angular app (proxied from the dev server), keeps the session cookie and forwards /api calls with an access token. That is why the application is opened on port 5071, not 4201.

sign-in

runs first

runs first

runs first

Browser

Gateway :5071

Angular dev server :4201

Web API :5001

Identity host :5051

Migration runner

PostgreSQL

Redis

RabbitMQ

sign-in

runs first

runs first

runs first

Browser

Gateway :5071

Angular dev server :4201

Web API :5001

Identity host :5051

Migration runner

PostgreSQL

Redis

RabbitMQ

The migration runner applies every database migration, then exits; the identity host, the API and the gateway wait for it to complete. The landing page and the documentation site depend on nothing, so they stay up even when the application does not start.

Sign in

In Development, the services seed sample data: eleven users and a support account, their organizations, workspaces and teams.

  • Open https://localhost:5071 and sign in as J0hnd0e with Password123! — every sample user has that password.
  • Or pick any account in the login page's Development sign-in panel, without a password. It is not rendered outside Development.
  • SuperAdmin is the support account, a member of every sample organization.

Register a new account and its confirmation e-mail arrives in MailPit, like the invitations.

Seeding

Seeding is idempotent — each seeder returns early when its table already has rows — so it is safe across restarts. It runs only in Development, and Seed:Enabled overrides that in either direction:

Seed__Enabled=false dotnet run --project back/Blouppy.Web   # leave a shared database alone

The billing plan catalog is not sample data: the API writes it from Billing:Catalog on every start, in every environment.

Running one piece on its own

The landing page, the documentation site and the design-system playground have no dependency on the API, so they run alone:

cd front/landing && npm run dev      # port 4300
cd front/docs && npm run dev         # port 4400
cd front/playground && npm run dev   # port 4500

The application itself needs the gateway, so run it through the AppHost.