# maddoscientisto.net

Blazor WebAssembly (.NET 10) static site packaged as an Nginx container and publishable to a Forgejo container registry.

## Project layout

- `src/MaddoScientisto.Web` - Blazor WebAssembly app
- `Dockerfile` - multi-stage build and Nginx runtime image
- `nginx.conf` - static hosting and SPA fallback
- `.forgejo/workflows/publish-container.yml` - Forgejo Actions workflow for build and push

## Local development

```powershell
dotnet restore
dotnet build src/MaddoScientisto.Web/MaddoScientisto.Web.csproj -c Release
dotnet run --project src/MaddoScientisto.Web/MaddoScientisto.Web.csproj
```

## Local publish check

```powershell
dotnet publish src/MaddoScientisto.Web/MaddoScientisto.Web.csproj -c Release -o .\artifacts\publish
```

Published static files are under `.\artifacts\publish\wwwroot`.

## Docker build and run

```powershell
docker build -t maddoscientisto-web:local .
docker run --rm -p 8080:80 maddoscientisto-web:local
```

Open `http://localhost:8080`.

## Forgejo registry configuration

Set these Forgejo Actions variables:

- `FORGEJO_REGISTRY` (example: `forgejo.example.com`)
- `IMAGE_NAMESPACE` (example: `maddo`)
- `IMAGE_NAME` (example: `maddoscientisto-web`)

Set these Forgejo Actions secrets:

- `FORGEJO_REGISTRY_USERNAME`
- `FORGEJO_REGISTRY_TOKEN`

## Workflow behavior

The workflow in `.forgejo/workflows/publish-container.yml` runs on pushes to `master` (and manual dispatch), builds the container image, and pushes:

- `${FORGEJO_REGISTRY}/${IMAGE_NAMESPACE}/${IMAGE_NAME}:latest`
- `${FORGEJO_REGISTRY}/${IMAGE_NAMESPACE}/${IMAGE_NAME}:sha-<12-char-commit>`
