# 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