# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview gehGassiApp is a .NET MAUI mobile application for iOS and Android that connects dog owners with dog walkers. The app enables users to find dog walkers, book walks, manage payments, and communicate via real-time messaging. ## Build Commands Build solution: ```bash dotnet build gehGassiApp/gehGassiApp.sln ``` Build specific configuration (Debug, Release, Staging, DebugStaging): ```bash dotnet build gehGassiApp/gehGassiApp.sln -c Debug ``` Build for iOS: ```bash dotnet build gehGassiApp/gehGassiApp/gehGassiApp.csproj -f net8.0-ios ``` Build for Android: ```bash dotnet build gehGassiApp/gehGassiApp/gehGassiApp.csproj -f net8.0-android ``` ## Database Migrations Migrations use EF Core with the DbConfig project as startup project: ```powershell # Add migration add-migration MigrationName -Project gehGassiApp.Data -StartupProject gehGassiApp.DbConfig # Remove last migration remove-migration -Project gehGassiApp.Data -StartupProject gehGassiApp.DbConfig # Update database update-database -Project gehGassiApp.Data -StartupProject gehGassiApp.DbConfig ``` ## Architecture ### Solution Structure The solution follows a layered architecture with these projects: - **gehGassiApp** - Main MAUI app with Views, ViewModels, Controls, and platform-specific code - **gehGassiApp.Core** - Business logic layer: services, interfaces, messaging, helpers - **gehGassiApp.Domain** - Domain models organized by feature (Dogs, Walks, Users, Payments, etc.) - **gehGassiApp.Data** - Data access layer with EF Core, SQLite local database, Repository/UnitOfWork pattern - **gehGassiApp.DbConfig** - Console app for running EF Core migrations - **gehGassi.LocalNotifications** - Cross-platform local push notification library - **gehGassi.Toolkit** - Shared utilities - **gehGassi.Dto** - Shared DTOs (external project from backend repo at `../../gehGassi_backend/gehGassi.Dto`) ### MVVM Pattern The app uses CommunityToolkit.Mvvm for MVVM implementation: - Views are XAML pages in `gehGassiApp/Views/` - ViewModels are in `gehGassiApp/ViewModels/` - Views and ViewModels are registered in `MauiProgram.cs` via DI ### Dependency Injection Services are registered as singletons in `MauiProgram.cs`. Key service interfaces are defined in `gehGassiApp.Core/Interfaces/`. ### Backend Communication - REST API communication via `ICommunicationService` - Real-time messaging via SignalR through `IAppHubService` - Backend URL: `https://backend.gehgassi.com` (production) ### Local Data - SQLite database using EF Core - Database path: `gehgassidb.db` in app local storage - Repository pattern via `IRepository` and `IUnitOfWork` ## Build Configurations | Configuration | Environment | App ID | |--------------|-------------|--------| | Debug | Local dev server | com.gehgassi.local | | DebugStaging | Staging server (debug) | com.gehgassi.local | | Staging | Staging server | com.gehgassi.local | | Release | Production | com.gehgassi.gehgassi | ## Key Dependencies - Microsoft.Maui.Controls 8.0.100 - CommunityToolkit.Maui / CommunityToolkit.Mvvm - Microsoft.EntityFrameworkCore.Sqlite 8.0.12 - Microsoft.AspNetCore.SignalR.Client 8.0.12 - TinyInsights.Maui.AppInsights (Azure Application Insights) - Plugin.InAppBilling (in-app purchases)