Skip to content

Repository files navigation

MAGS-Stack

CI

Genbrugelig .NET 10 + Aspire skabelon til MAGS-projekter med:

  • Blazor Web App (Interactive Auto — Server + WebAssembly)
  • Web API med EF Core og PostgreSQL
  • xUnit-tests (unit + integration)
  • Aspire AppHost til lokal udvikling
  • Docker Compose til Dokploy (Traefik-mønster som UptimeDaddy)

Struktur

MAGS-Stack/
├── src/
│ ├── MAGS.Stack.AppHost/ # Aspire orchestrator
│ ├── MAGS.Stack.ServiceDefaults/
│ ├── MAGS.Stack.Api/ # Web API + PostgreSQL
│ ├── MAGS.Stack.Web/ # Blazor host
│ └── MAGS.Stack.Web.Client/ # Blazor WASM (Interactive Auto)
├── tests/
│ └── MAGS.Stack.Tests/
├── docker-compose.yml # Dokploy / prod
├── docker-compose.local.yml # Lokale host-porte
└── .env.example

Forudsætninger

Lokal udvikling (Aspire)

# Fra repo-roden
aspire run

Starter PostgreSQL, API og Blazor-web med Aspire Dashboard og service discovery. API-kald fra web bruger https+http://api automatisk.

Alternativt fra AppHost-projektet:

dotnet run --project src/MAGS.Stack.AppHost

Lokal udvikling (Docker Compose)

cp .env.example .env
docker compose -f docker-compose.yml -f docker-compose.local.yml up --build
ServiceURL
Webhttp://localhost:5173
APIhttp://localhost:8080
Postgreslocalhost:35432

Dokploy-deploy (prod)

Routing-kæde (som UptimeDaddy):

  1. Cloudflare wildcard *.mercantec.tech → tunnel
  2. Tunnel ingress → http://localhost:80
  3. Traefik (Dokploy) → Host(<domæne>) → container
cp .env.example .env
# Udfyld POSTGRES_PASSWORD, FRONTEND_DOMAIN, API_DOMAIN, CORS_ALLOWED_ORIGINS
docker compose up -d --build

Kræver at dokploy-network findes på hosten. Kun magsstack-web og magsstack-api eksponeres via Traefik; Postgres er kun på det interne netværk.

Tests

dotnet test MAGS.Stack.sln

CI

GitHub Actions kører ved push/PR til main:

JobIndhold
build-and-testdotnet restore, build (Release), test
docker-compose-validateValiderer docker-compose.yml + docker-compose.local.yml

Workflow: .github/workflows/ci.yml. Dependabot holder NuGet- og Actions-afhængigheder opdateret.

Nyt projekt fra skabelonen

  1. Fork eller kopiér dette repo
  2. Omdøb MAGS.StackMitProjekt i solution, projektmapper og namespaces
  3. Opdater domæner i .env (FRONTEND_DOMAIN, API_DOMAIN)
  4. Tilpas demo-entities og controllers i API

Miljøvariabler

VariabelBeskrivelse
POSTGRES_PASSWORDDB-kodeord (kun ved første volume-oprettelse)
FRONTEND_DOMAINTraefik Host for Blazor
API_DOMAINTraefik Host for API
CORS_ALLOWED_ORIGINSKommasepareret liste af tilladte Origins
API_INTERNAL_URLIntern API-URL for web-containeren (http://magsstack-api:8080)

Se .env.example for detaljer og advarsler om PostgreSQL-volume.

Hybrid Docker-strategi

  • Aspire (aspire run) — lokal inner-loop med dashboard og automatisk Postgres
  • Håndskrevet Compose — prod/Dokploy med Traefik-labels og dokploy-network (UptimeDaddy-mønster)

aspire publish bruges ikke til prod i denne skabelon; Compose vedligeholdes manuelt.

AI / Cursor

StiFormål
.ai/Arkitektur- og udviklingsguide til AI-assistenter
.cursor/rules/mags-stack.mdcCursor-projektregel (alwaysApply) — hvordan man udvikler på stacken

About

.NET Stack for projects built by MAGS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages