design koogle -> GoodWood

This commit is contained in:
beo3000 2026-01-11 14:39:50 +01:00
parent c6e89ecdb6
commit 799474e9b9
28 changed files with 104 additions and 27 deletions

View File

@ -8,7 +8,7 @@ The development guidelines to consider are descibed in [docs/development_guideli
Blazor Server app (.NET 9.0) with Clean Architecture: Domain, Application, Infrastructure, Web layers. Uses ASP.NET Core Identity with dual DbContext pattern (AppDbContext for domain, AppIdentityDbContext for auth), MudBlazor UI, and Fluxor state management. Blazor Server app (.NET 9.0) with Clean Architecture: Domain, Application, Infrastructure, Web layers. Uses ASP.NET Core Identity with dual DbContext pattern (AppDbContext for domain, AppIdentityDbContext for auth), MudBlazor UI, and Fluxor state management.
The name for the App is KOOGLE. Koogle is an app for club management. The name for the App is GOODWOOD. GoodWood is an app for club management.
### Functional ### Functional
- Club management - Club management

View File

@ -26,6 +26,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{63E5B7FE-3
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
docs\build.md = docs\build.md docs\build.md = docs\build.md
CLAUDE.md = CLAUDE.md CLAUDE.md = CLAUDE.md
design.md = design.md
..\..\..\..\Users\d-chrka\Downloads\Moodboard.png = ..\..\..\..\Users\d-chrka\Downloads\Moodboard.png
todos.md = todos.md todos.md = todos.md
EndProjectSection EndProjectSection
EndProject EndProject

0
design.md Normal file
View File

View File

@ -8,7 +8,7 @@
@code { @code {
// Default theme - configurable for future theme selection // Default theme - configurable for future theme selection
private MudTheme _theme = CustomThemes.DefaultTheme; private MudTheme _theme = CustomThemes.GoodwoodTheme;
} }
<main> <main>

View File

@ -22,7 +22,7 @@
<MudLayout> <MudLayout>
<MudAppBar Elevation="1" Dense="true" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudAppBar Elevation="1" Dense="true" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="ToggleDrawer" /> <MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="ToggleDrawer" />
<MudText Typo="Typo.h6">KOOGLE</MudText> <MudText Typo="Typo.h6">KOOGLE</MudText>
<MudSpacer/> <MudSpacer/>
@ -100,7 +100,7 @@
} }
// Default theme - can be changed per user in future // Default theme - can be changed per user in future
private MudTheme _theme = CustomThemes.DefaultTheme; private MudTheme _theme = CustomThemes.GoodwoodTheme;
private void ClearAuthError() private void ClearAuthError()
{ {

View File

@ -8,7 +8,7 @@
<MudSnackbarProvider /> <MudSnackbarProvider />
<MudLayout> <MudLayout>
<MudAppBar Elevation="1" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%);"> <MudAppBar Elevation="1" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%);">
@* Mobile Menu Button (unter lg: 1280px) - LINKS *@ @* Mobile Menu Button (unter lg: 1280px) - LINKS *@
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Class="mobile-only" OnClick="ToggleDrawer" /> <MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Class="mobile-only" OnClick="ToggleDrawer" />
@ -23,8 +23,8 @@
<AuthorizeView> <AuthorizeView>
<Authorized> <Authorized>
<MudButton Href="/dashboard" Variant="Variant.Filled" Color="Color.Success" StartIcon="@Icons.Material.Filled.Dashboard"> <MudButton Href="/dashboard" Variant="Variant.Filled" Color="Color.Secondary" StartIcon="@Icons.Material.Filled.Dashboard">
Dashboard &Uuml;bersicht
</MudButton> </MudButton>
</Authorized> </Authorized>
<NotAuthorized> <NotAuthorized>
@ -40,7 +40,7 @@
@* Logo - RECHTS *@ @* Logo - RECHTS *@
<MudLink Href="/" Class="d-flex align-center" Style="text-decoration: none;"> <MudLink Href="/" Class="d-flex align-center" Style="text-decoration: none;">
<MudPaper Class="pa-0 rounded-lg" Style="background: #2d5a4d;" Elevation="2"> <MudPaper Class="pa-0 rounded-lg" Style="background: #2d5a4d;" Elevation="2">
<MudImage Src="logo6_bg.png" Alt="KOOGLE" Height="32" /> <MudImage Src="gw_app_icon2.png" Alt="KOOGLE" Height="32" />
</MudPaper> </MudPaper>
</MudLink> </MudLink>
</MudAppBar> </MudAppBar>
@ -93,7 +93,7 @@
</MudLayout> </MudLayout>
@code { @code {
private MudTheme _theme = CustomThemes.DefaultTheme; private MudTheme _theme = CustomThemes.GoodwoodTheme;
private bool _drawerOpen; private bool _drawerOpen;
private void ToggleDrawer() => _drawerOpen = !_drawerOpen; private void ToggleDrawer() => _drawerOpen = !_drawerOpen;

View File

@ -6,7 +6,7 @@
<MudContainer MaxWidth="MaxWidth.Large" Class="py-8"> <MudContainer MaxWidth="MaxWidth.Large" Class="py-8">
@* Hero Section *@ @* Hero Section *@
<MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Von der Totenkiste zum Cloud-System</MudText> <MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Von der Totenkiste zum Cloud-System</MudText>
<MudText Typo="Typo.h6" Style="opacity: 0.9;">Unsere Story</MudText> <MudText Typo="Typo.h6" Style="opacity: 0.9;">Unsere Story</MudText>
</MudPaper> </MudPaper>

View File

@ -6,7 +6,7 @@
<MudContainer MaxWidth="MaxWidth.Large" Class="py-8"> <MudContainer MaxWidth="MaxWidth.Large" Class="py-8">
@* Hero Section *@ @* Hero Section *@
<MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Blog</MudText> <MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Blog</MudText>
<MudText Typo="Typo.h6" Style="opacity: 0.9;">Neuigkeiten rund um KOOGLE</MudText> <MudText Typo="Typo.h6" Style="opacity: 0.9;">Neuigkeiten rund um KOOGLE</MudText>
</MudPaper> </MudPaper>
@ -30,7 +30,7 @@
</MudPaper> </MudPaper>
@* Newsletter Teaser *@ @* Newsletter Teaser *@
<MudPaper Class="pa-6 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-6 rounded-lg" Style="background:linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h6" Align="Align.Center" Class="font-weight-bold mb-2"> <MudText Typo="Typo.h6" Align="Align.Center" Class="font-weight-bold mb-2">
Bleib auf dem Laufenden! Bleib auf dem Laufenden!
</MudText> </MudText>

View File

@ -8,7 +8,7 @@
<MudContainer MaxWidth="MaxWidth.Large" Class="py-0"> <MudContainer MaxWidth="MaxWidth.Large" Class="py-0">
<MudImage src="logo6_bg.png" alt="KOOGLE Logo" Height="80" />
@* Hero Section *@ @* Hero Section *@
<div class="hero-section mb-8 rounded-lg"> <div class="hero-section mb-8 rounded-lg">
<div class="hero-overlay"> <div class="hero-overlay">
@ -17,7 +17,8 @@
<MudItem xs="12" md="8"> <MudItem xs="12" md="8">
<MudStack Spacing="4"> <MudStack Spacing="4">
<MudStack Spacing="3" Class="hero-stack"> <MudStack Spacing="3" Class="hero-stack">
<MudText Typo="Typo.h3" Class="hero-title" Style="color: white;">KOOGLE - Die smarte Lösung für Kegelclubs</MudText> <MudImage src="logo7.png" alt="GoodWood Logo" Height="120" />
<MudText Typo="Typo.h3" Class="hero-title" Style="color: white;">GOODWOOD - Die smarte Lösung für Kegelclubs</MudText>
</MudStack> </MudStack>
<MudText Typo="Typo.h6" Style="color: white; opacity: 0.9;"> <MudText Typo="Typo.h6" Style="color: white; opacity: 0.9;">
Mehr Zeit fürs Kegeln, weniger für den Papierkram. Mehr Zeit fürs Kegeln, weniger für den Papierkram.
@ -29,7 +30,7 @@
<AuthorizeView> <AuthorizeView>
<Authorized> <Authorized>
<MudButton Variant="Variant.Filled" Color="Color.Success" StartIcon="@Icons.Material.Filled.Dashboard" Href="/dashboard"> <MudButton Variant="Variant.Filled" Color="Color.Secondary" StartIcon="@Icons.Material.Filled.Dashboard" Href="/dashboard">
zur Anwendung zur Anwendung
</MudButton> </MudButton>
</Authorized> </Authorized>
@ -62,7 +63,7 @@
@* Features Section *@ @* Features Section *@
<div id="features"> <div id="features">
<MudText Typo="Typo.h5" Class="mb-4 font-weight-bold" Color="Color.Primary"> <MudText Typo="Typo.h5" Class="mb-4 font-weight-bold" Color="Color.Primary">
Deine Vorteile mit KOOGLE Deine Vorteile mit GoodWood
</MudText> </MudText>
@ -234,14 +235,14 @@
<MudStack Row AlignItems="AlignItems.Center" Spacing="2"> <MudStack Row AlignItems="AlignItems.Center" Spacing="2">
<MudIcon Icon="@Icons.Material.Filled.Circle" Color="Color.Success" Size="Size.Small" /> <MudIcon Icon="@Icons.Material.Filled.Circle" Color="Color.Success" Size="Size.Small" />
<MudText> <MudText>
Schon über <strong>1</strong> Kegelclubs vertrauen auf KOOGLE. ;-) Schon über <strong>1</strong> Kegelclubs vertrauen auf GoodWood. ;-)
</MudText> </MudText>
</MudStack> </MudStack>
</MudPaper> </MudPaper>
@* Footer Slogan *@ @* Footer Slogan *@
<MudPaper Class="pa-6 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-6 rounded-lg" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h5" Align="Align.Center" Class="font-weight-bold"> <MudText Typo="Typo.h5" Align="Align.Center" Class="font-weight-bold">
"Weniger Verwaltung, mehr Kegeln!" "Weniger Verwaltung, mehr Kegeln!"
</MudText> </MudText>
@ -271,12 +272,22 @@
position: relative; position: relative;
} }
.hero-overlay { /* .hero-overlay {
background: linear-gradient(135deg, rgba(26, 54, 93, 0.92) 0%, rgba(45, 90, 77, 0.75) 100%); background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%);
min-height: 400px; min-height: 400px;
display: flex; display: flex;
align-items: center; align-items: center;
border-radius: inherit; border-radius: inherit;
} */
.hero-overlay {
/* Wir nutzen RGBA, um die Farben des Moodboards mit Transparenz zu mischen */
/* 0.85 bedeutet 85% Deckkraft - das Bild schimmert dezent durch */
background: linear-gradient(135deg, rgba(27, 48, 34, 0.85) 0%, rgba(74, 93, 78, 0.7) 100%);
min-height: 400px;
display: flex;
align-items: center;
border-radius: inherit;
width: 100%; /* Sicherstellen, dass es die volle Breite einnimmt */
} }
.hero-overlay .mud-typography { .hero-overlay .mud-typography {

View File

@ -6,7 +6,7 @@
<MudContainer MaxWidth="MaxWidth.Large" Class="py-8"> <MudContainer MaxWidth="MaxWidth.Large" Class="py-8">
@* Hero Section *@ @* Hero Section *@
<MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-8 mb-8 rounded-lg" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Preise</MudText> <MudText Typo="Typo.h4" Class="font-weight-bold mb-2">Preise</MudText>
<MudText Typo="Typo.h6" Style="opacity: 0.9;">Faire Konditionen für alle Kegelvereine</MudText> <MudText Typo="Typo.h6" Style="opacity: 0.9;">Faire Konditionen für alle Kegelvereine</MudText>
</MudPaper> </MudPaper>
@ -40,7 +40,7 @@
</MudPaper> </MudPaper>
@* CTA *@ @* CTA *@
<MudPaper Class="pa-6 rounded-lg" Style="background: linear-gradient(135deg, #1a365d 0%, #2d5a4d 100%); color: white;"> <MudPaper Class="pa-6 rounded-lg" Style="background: linear-gradient(135deg, #1B3022 0%, #4A5D4E 100%); color: white;">
<MudText Typo="Typo.h6" Align="Align.Center" Class="font-weight-bold mb-4"> <MudText Typo="Typo.h6" Align="Align.Center" Class="font-weight-bold mb-4">
Worauf wartest du noch? Worauf wartest du noch?
</MudText> </MudText>

View File

@ -42,6 +42,70 @@ namespace Koogle.Web.Services
// } // }
}; };
public static readonly MudTheme GoodwoodTheme = new()
{
PaletteLight = new PaletteLight()
{
// Hintergrund & Oberflächen (Moodboard: Soft Sand #F5F2ED)
Background = "#F5F2ED",
Surface = "#FFFFFF",
AppbarBackground = "#1B3022", // Deep Forest Green für Kontrast
AppbarText = "#F5F2ED",
// Markenfarben
Primary = "#1B3022", // Deep Forest Green
PrimaryContrastText = "#F5F2ED",
Secondary = "#B66D35", // Burnt Ochre / Wood
SecondaryContrastText = "#FFFFFF",
Tertiary = "#4A5D4E", // Ein weicheres Waldgrün für Akzente
// Status & Feedback
Info = "#4A708B",
Success = "#6B8E23", // Olive-Grün passend zum Naturthema
Warning = "#D2691E",
Error = "#8B0000",
// Texte & Linien
TextPrimary = "#1A1A1A",
TextSecondary = "#4A5D4E",
Divider = "rgba(27, 48, 34, 0.12)",
LinesDefault = "rgba(27, 48, 34, 0.2)",
DrawerBackground = "#F5F2ED",
DrawerText = "#1B3022",
DrawerIcon = "#1B3022",
},
PaletteDark = new PaletteDark()
{
// Dark Mode Umkehrung für professionelle Software
Background = "#121A14", // Extrem dunkles Grün/Schwarz
Surface = "#1B3022",
Primary = "#F5F2ED", // Im Darkmode wird Sand zur Kontrastfarbe
Secondary = "#B66D35",
AppbarBackground = "#0D1811",
TextPrimary = "#F5F2ED",
TextSecondary = "rgba(245, 242, 237, 0.7)",
DrawerBackground = "#0D1811",
},
LayoutProperties = new LayoutProperties()
{
DefaultBorderRadius = "6px", // Etwas weicher als Standard, aber modern flach
AppbarHeight = "64px",
},
Typography = new Typography()
{
Default = new DefaultTypography
{
FontFamily = new[] { "Inter", "Roboto", "Helvetica", "Arial", "sans-serif" },
FontSize = ".875rem",
FontWeight = "400"
},
H1 = new H1Typography { FontWeight = "700", FontSize = "3.5rem", LetterSpacing = "-.02em" },
H2 = new H2Typography { FontWeight = "600", FontSize = "2.5rem", LetterSpacing = "-.01em" },
Button = new ButtonTypography { FontWeight = "600", TextTransform = "none" } // "none" wirkt moderner als All-Caps
}
};
public static readonly MudTheme SandstoneTheme = new() public static readonly MudTheme SandstoneTheme = new()
{ {
PaletteLight = new PaletteLight() PaletteLight = new PaletteLight()

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 865 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 793 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

View File

@ -1,11 +1,11 @@
{ {
"name": "KOOGLE", "name": "GOODWOOD",
"short_name": "KOOGLE", "short_name": "GOODWOOD",
"description": "Koogle Club Management App", "description": "GoodWood Kegel & Vereinsverwaltung",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#2c3e50", "background_color": "#F5F2ED",
"theme_color": "#2c3e50", "theme_color": "#F5F2ED",
"icons": [ "icons": [
{ {
"src": "/icons/icon-192x192.png", "src": "/icons/icon-192x192.png",