dotnet-geo-management/CLAUDE.md

59 lines
1.8 KiB
Markdown

# 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