Skip to content

Mercantech/MAGS-Stack

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
Service URL
Web http://localhost:5173
API http://localhost:8080
Postgres localhost: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:

Job Indhold
build-and-test dotnet restore, build (Release), test
docker-compose-validate Validerer 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

Variabel Beskrivelse
POSTGRES_PASSWORD DB-kodeord (kun ved første volume-oprettelse)
FRONTEND_DOMAIN Traefik Host for Blazor
API_DOMAIN Traefik Host for API
CORS_ALLOWED_ORIGINS Kommasepareret liste af tilladte Origins
API_INTERNAL_URL Intern 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

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

About

.NET Stack for projects built by MAGS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors