gehgassi_app/CLAUDE.md
Max Mannstein c03154672b Merge features/paymenttype-cash into net9-upgrade
- Add PaymentInfoPopup for cash payment type selection
- Adapt popup to .NET 9 IPopupService pattern
- Update BookWalkViewModel and PublicWalkResponseShowViewModel to use IPopupService
- Add cashonly.svg icon
- Extend IPublicWalkRequestService.AcceptResponseAsync with paymentType parameter
2025-12-02 13:51:15 +01:00

100 lines
3.3 KiB
Markdown

# 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<T>` 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)