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 + +