From fe828683bda38b76eb7af3a772ccdd8c1c7fe75c Mon Sep 17 00:00:00 2001 From: Max Mannstein Date: Mon, 22 Sep 2025 21:52:26 +0200 Subject: [PATCH] Update German localization for button labels and add photo requirement validation in Profile views --- .github/copilot-instructions.md | 145 ++++++++++++++++++ .../gehGassiApp/Resources/Text.de.resx | 2 +- gehGassiApp/gehGassiApp/Resources/Text.resx | 2 +- .../ViewModels/ProfileViewModel.cs | 12 ++ .../ViewModels/ProfileWalkerViewModel.cs | 12 ++ .../gehGassiApp/Views/ProfileView.xaml | 11 +- .../gehGassiApp/Views/ProfileWalkerView.xaml | 11 +- 7 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..229038a --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,145 @@ +# gehGassi App - AI Coding Agent Instructions + +## Project Overview +**gehGassi** is a .NET 9 MAUI cross-platform mobile app for a dog walking marketplace connecting dog owners with dog walkers. The app features dual user types (owners and walkers), real-time messaging, walk booking, payments, ratings, and a complex business workflow. + +## Architecture & Key Patterns + +### Project Structure (Clean Architecture) +- **gehGassiApp** - Main MAUI app with Views, ViewModels, platform-specific code +- **gehGassiApp.Core** - Business logic, services, interfaces +- **gehGassiApp.Domain** - Entity models, value objects +- **gehGassiApp.Data** - Entity Framework Core, SQLite database, repository pattern +- **gehGassi.LocalNotifications** - Custom notification library +- **gehGassi.Dto** - Shared DTOs with backend (external project reference) + +### MVVM + DI Pattern +- **BaseViewModel/MenuViewModel** - Inherit from these base classes for consistent patterns +- **CommunityToolkit.Mvvm** - Uses `[ObservableProperty]` and `[RelayCommand]` attributes +- **Dependency Injection** - All services registered in `MauiProgram.cs`, constructor injection throughout +- **Page Lifecycle** - Override `InitializeAsync()` and `DisappearingAsync()` in ViewModels + +### Service Layer Architecture +All business services follow `IService` interface with standard CRUD operations: +```csharp +// Example service injection in ViewModels +public MyViewModel(IWalkService walkService, IDialogService dialogService) { } +``` + +Key service types: +- **Data Services** - Entity management (e.g., `IWalkService`, `IDogService`) +- **Integration Services** - API communication (`ICommunicationService`) +- **Platform Services** - Native features (`ILocationService`, `IDeviceInstallationService`) +- **UI Services** - User interactions (`IDialogService`, `IPopupService`) + +### Configuration Management +Environment-specific settings in `MauiProgram.cs`: +- **DEBUG** - Local development server (`192.168.0.172:8548`) +- **STAGING/DEBUGSTAGING** - Staging environment +- **RELEASE** - Production (`backend.gehgassi.com`) + +Application ID changes per environment: +- Debug/Staging: `com.gehgassi.local` +- Release: `com.gehgassi.gehgassi` + +## Critical Development Patterns + +### XAML Resources System +**ALWAYS verify resource existence before use** - the app has strict resource validation: +- **Converters**: Defined in `Resources/Converters/Converters.xaml` (30+ available) +- **Styles**: Defined in `Resources/Styles/Styles.xaml` (H5_Red, BodyCaption variants, etc.) +- **Reference**: See `gehGassiApp_Converters_And_Styles.md` for complete list + +Example of correct resource usage: +```xml + +