Zum Inhalt
.NET 10 · Blazor · Aspire

Geschäftsanwendungen ohne das Drumherum

Coworkee ist ein modulares Anwendungsframework: Identity, Berechtigungen, Auth-Server, Blazor-Oberfläche, Datentabellen, Themes und ein Aspire-AppHost kommen als NuGet-Pakete. Deine App enthält nur noch ihre Fachlichkeit.

MyApp

In drei Befehlen zur eigenen App

Das CLI-Tool legt die Solution an, startet den Aspire-AppHost und hilft bei Migrationen, Modulen und Updates.

  1. CLI installierenEin globales .NET-Tool. coworkee doctor prüft SDK, Docker und dotnet-ef.
    dotnet tool install -g Coworkee.Cli
  2. App anlegenSolution mit Auth-Server, API, Blazor-Client, Migrationen, Tests und AppHost auf den NuGet-Paketen.
    coworkee new Shop
  3. StartenStartet Postgres, Redis, Mailpit und alle Dienste über Aspire. Das Dashboard zeigt Logs und Traces.
    cd Shop && coworkee run
  4. Alle Befehle
Coworkee Studio Coworkee Studio Coworkee Studio Coworkee Studio

Lieber mit Oberfläche? Coworkee Studio

coworkee ui installiert und startet Coworkee Studio, die Desktop-App zum CLI (Tool-Befehl coworkee-ui). Ein Assistent führt durch Name, Logo und Theme, Anmeldung, Module und Infrastruktur und Ihre Entities, zeigt Vor- und Nachteile jeder Wahl, legt die App an und startet sie.

coworkee ui

Für KI-Assistenten

coworkee mcp startet einen MCP-Server: Claude, Copilot und andere Assistenten legen Apps, Module und Migrationen über dieselben Befehle an.

coworkee mcp

Ein Rundgang durch die Demo-App

Alles auf diesen Bildern kommt aus den Paketen. Die Demo-App bringt nur Katalog, Dokumente und Aufträge mit.

Anmeldung, die gleitet

Anmeldung, die gleitet

Der Auth-Server bringt Anmeldung, Registrierung in Schritten, Passwort vergessen und externe Logins mit. Drei Designs, umschaltbar in der Administration, in den Farben des Standard-Themes.

Mehr
Tabellen, die mitdenken

Tabellen, die mitdenken

Spalte in die Leiste ziehen und gruppieren, Facetten oben, Spaltenfilter mit Anzahlen, Summen und Durchschnitte im Fuß, gespeicherte Ansichten und Export.

Mehr
100.000 Aufträge im Browser

100.000 Aufträge im Browser

Eine Client-Entity lädt die Daten einmal und beantwortet danach jede Abfrage lokal. Vergleichen misst dieselben Abfragen auf Server und Browser.

Mehr
Themes für alle

Themes für alle

Admins pflegen Themes und den Standard, jeder Benutzer wählt in seinen Einstellungen Theme und Farbmodus.

Mehr
Formulare aus dem Modell

Formulare aus dem Modell

Einstellungen und typisierte App-Konfiguration werden mit MudEx Object Edit bearbeitet, Dialoge gleiten von der Seite herein.

Mehr

Auf einen Blick

Coworkee ist ein modulares Anwendungsframework für .NET 10. Es liefert einer Blazor- und ASP.NET-Core-Anwendung die Teile, die jede Geschäftsanwendung braucht, damit sich die App selbst um ihre Fachlichkeit kümmern kann: Module mit Abhängigkeiten, eine Request-Pipeline mit Validierung, Berechtigungen und Caching, EF Core mit Audit und Outbox, einen Auth-Server mit externem Login, eine Blazor-Oberfläche mit Datentabellen und Admin-Seiten und einen Aspire-AppHost, der alles verdrahtet.

Was drin ist

Bereich Inhalt
Module CoworkeeModule mit [DependsOn], ein Aufruf AddCoworkee<TRoot>() pro Host
Requests IDispatcher mit Commands, Queries, Result, FluentValidation, Berechtigungsprüfung, Caching, Unit of Work
Daten CoworkeeDbContext mit Mandanten, Soft Delete, Audit auf Feldebene, transaktionaler Outbox, Realtime-Änderungen
HTTP Minimal-API-Gruppen mit Problem Details, Anwendungsdienste mit generierten Endpunkten und Blazor-Clients, OData-Sets mit Facetten für jede Entity, Response-Filter
Identity Benutzer, Rollen, Gruppen, Mandanten, Berechtigungen bis auf einzelne Ressourcen, Setup-Assistent oder Seed
Anmeldung OpenIddict-Auth-Server, BFF für den Blazor-Client, Keycloak oder jeder OpenID-Connect-Anbieter als externer Login
Blazor MudBlazor-Shell mit Navigation, Admin-Seiten, Datentabelle mit Facetten, Client-Entities mit Abfragen im Browser, Themes, ersetzbaren Komponenten
Dienste Einstellungen, typisierte App-Konfiguration, Mail-Vorlagen, Hangfire-Jobs, Dateiablage, Elasticsearch, Benachrichtigungen, KI-Assistent mit MCP
Hosting AddCoworkeeApp für Aspire: Postgres (oder SQL Server, SQLite), Redis, Mailpit, Elasticsearch und Keycloak, verdrahtet anhand der Pakete jedes Dienstes

Ein erster Eindruck

Katalog-Modul
[DependsOn(typeof(CoworkeeODataModule))]
public sealed class MyAppCatalogModule : CoworkeeModule, IWebModule
{
    public override void ConfigureServices(ModuleServiceContext context)
    {
        context.Services.AddMessagingFromAssembly(typeof(MyAppCatalogModule).Assembly);
        context.Services.AddSingleton<IModelContributor, CatalogModelContributor>();
        context.Services.AddSingleton<IPermissionDefinitionContributor, CatalogPermissionDefinitions>();
        context.Services.AddODataEntity<Product>("Products", CatalogPermissions.Products.View);
    }

    public void ConfigureApplication(WebApplication app) => app.MapProductEndpoints();
}
AppHost
var app = builder.AddCoworkeeApp("myapp", options => options.UseKeycloak());

app.AddMigrations<Projects.MyApp_Migrations>();
app.AddAuthServer<Projects.MyApp_Auth>();
app.AddApi<Projects.MyApp_Api>();
app.AddWeb<Projects.MyApp_Web>();

Woher Coworkee kommt

Coworkee war zuerst mein eigenes Projekt-Template: ein Blazor-Basis-Template mit allem, was eine Business-App braucht, kopiert in jede neue App. Jede App trug dann ihre eigene Kopie von Identity, Berechtigungen, Einstellungen, Audit und Administrationsseiten, und jede Verbesserung musste von Hand nachgezogen werden. Deshalb habe ich aus dem Template diese Bibliothek gebaut: Die gemeinsamen Teile sind jetzt NuGet-Pakete, und eine App enthält nur noch ihre eigene Fachlichkeit.

Die Demo-App ist das frühere Template, neu gebaut auf den Paketen, und Sharemee, ein Digital-Asset-Management-System, ist die zweite App darauf. Die Oberfläche nutzt MudBlazor und MudBlazor.Extensions; Facetten, Response-Filter und Codegenerierung kommen aus Nextended.

Fragen, Ideen oder Lust zu helfen?

Schreib mir oder unterstütze das Projekt. Coworkee bleibt frei und quelloffen.

Kontakt Support