# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview **Svrnty.GeoManagement** is a .NET 8 library providing abstractions for geocoding and address management services. The solution follows a provider pattern to allow different geocoding service implementations. ## Solution Structure The solution contains two projects: - **Svrnty.GeoManagement.Abstractions**: Core abstractions and models for geocoding operations - **Svrnty.GeoManagement.Tests**: xUnit test project ## Key Architecture Patterns ### Provider Pattern The library uses the `IGeoManagementProvider` interface to abstract geocoding services. Implementations should provide: - Forward geocoding (address to coordinates) - Reverse geocoding (coordinates to address) - Address normalization ### Address Model The `Address` record in `Svrnty.GeoManagement.Abstractions/Models/Address.cs` is the central data structure. It: - Implements `IAddress` interface - Includes optional `GeoPoint` location data - Provides formatted address output via `GetFormattedAddress()` method with three format types (Full, Compact, MultiLine) - Has an `IsNormalized` flag to track address validation status ## Common Commands ### Build ```bash dotnet build ``` ### Run Tests ```bash dotnet test ``` ### Run Specific Test ```bash dotnet test --filter "FullyQualifiedName~TestNamespace.TestClass.TestMethod" ``` ### Restore Dependencies ```bash dotnet restore ``` ## Development Notes - Target framework: .NET 8 - Nullable reference types are enabled - The Abstractions project is designed to be provider-agnostic - don't add provider-specific dependencies - When implementing `IGeoManagementProvider`, all methods support `CancellationToken` for async operations