diff --git a/README.md b/README.md index 47dddd8..c92d3b6 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,55 @@ Bitip is a professional GeoIP lookup service that provides IP geolocation data t - **πŸ” IP Geolocation Lookup**: Get detailed location information for any public IP address - **🌐 Web Interface**: Clean, professional web UI with interactive maps - **πŸ“‘ REST API**: Comprehensive API for single and batch IP lookups -- **πŸ—ΊοΈ Interactive Maps**: Static preview and interactive map popups using OpenStreetMap/Leaflet +- **πŸ“¦ .NET Client Library**: Official Bitip.Client NuGet package with strongly-typed models and async support +- **οΏ½πŸ—ΊοΈ Interactive Maps**: Static preview and interactive map popups using OpenStreetMap/Leaflet - **πŸ” API Key Authentication**: Secure access with configurable rate limiting - **⚑ Performance**: In-memory caching and efficient database access - **πŸ“Š Structured Logging**: Optional integration with Seq for advanced logging - **🐳 Docker Ready**: Production deployment with Docker and geoipupdate integration - **πŸ”§ Configurable**: Runtime configuration via environment variables +## πŸ“š Client Libraries + +### .NET / C# + +Official NuGet package with full async/await support and dependency injection integration: + +```bash +dotnet add package Bitip.Client +``` + +```csharp +// Register in your DI container +services.UseBitipClient("https://your-bitip-instance.com/api", "your-api-key"); + +// Inject and use +public class MyService +{ + private readonly IBitipClient _bitipClient; + + public MyService(IBitipClient bitipClient) + { + _bitipClient = bitipClient; + } + + public async Task LookupAsync(string ip) + { + return await _bitipClient.GetIpLocation(ip); + } +} +``` + +See [src/clients/dotnet/Bitip.Client/README.md](src/clients/dotnet/Bitip.Client/README.md) for complete documentation. + +### Node.js / JavaScript + +Coming soon! In development at [src/clients/node](src/clients/node). + +### Other Languages + +Use the REST API directly - see API documentation below. + ## πŸš€ Quick Start ### Local Development (No Docker Required) diff --git a/content/Overview.json b/content/Overview.json index 789c327..daa754b 100644 --- a/content/Overview.json +++ b/content/Overview.json @@ -1,11 +1,19 @@ { "title": "Bitip - Professional GeoIP Lookup Service", "subtitle": "Modern GeoIP lookup service with REST API and interactive web interface", - "lastUpdated": "2025-10-06T10:00:00Z", + "lastUpdated": "2025-10-09T12:00:00Z", "sections": [ { "title": "Overview", - "content": "Bitip is a high-performance GeoIP lookup service designed to provide accurate geolocation data for IP addresses. Built with modern web technologies, it offers both a RESTful API for programmatic access and an intuitive web interface for interactive lookups. The service uses MaxMind GeoLite2-City and GeoLite2-ASN databases to provide comprehensive IP geolocation with detailed information including country, continent, region, city, coordinates, timezone, postal codes, EU membership status, ISP organization, and autonomous system numbers (ASN)." + "content": "Bitip is a high-performance GeoIP lookup service designed to provide accurate geolocation data for IP addresses. Built with modern web technologies, it offers both a RESTful API for programmatic access and an intuitive web interface for interactive lookups. The service uses MaxMind GeoLite2-City and GeoLite2-ASN databases to provide comprehensive IP geolocation with detailed information including country, continent, region, city, coordinates, timezone, postal codes, EU membership status, ISP organization, and autonomous system numbers (ASN). Official client libraries are available for .NET developers via the Bitip.Client NuGet package." + }, + { + "title": "Client Libraries", + "items": [ + "**.NET / C# - Bitip.Client** - Official NuGet package with strongly-typed models, async/await support, and dependency injection integration. Includes comprehensive IntelliSense documentation and 29 unit/integration tests for reliability.", + "**Node.js / JavaScript** - Client library in development, coming soon", + "**REST API** - Direct HTTP access available for any programming language with full OpenAPI/Swagger documentation" + ] }, { "title": "Core Features", diff --git a/content/ReleaseNotes.json b/content/ReleaseNotes.json index de20918..4f8b2d9 100644 --- a/content/ReleaseNotes.json +++ b/content/ReleaseNotes.json @@ -1,5 +1,65 @@ { "releases": [ + { + "version": "1.1.1", + "date": "2025-10-09T12:00:00Z", + "title": ".NET Client Library & API Refinements", + "summary": "Introduced the official Bitip.Client NuGet package for .NET developers, providing a strongly-typed, async-first client library. Also refined API response properties for better clarity and consistency.", + "sections": [ + { + "title": "Overview", + "content": "Version 1.1.1 brings first-class .NET support to Bitip with the release of the official Bitip.Client library on NuGet. This release also includes API refinements to improve property naming consistency and clarity across all endpoints." + }, + { + "title": "New .NET Client Library", + "items": [ + "**Bitip.Client NuGet Package** - Official .NET client library for easy integration", + "**Strongly-Typed Models** - Full IntelliSense support with typed request/response models", + "**Async/Await Support** - Modern async-first API with CancellationToken support", + "**Dependency Injection Ready** - Seamless integration with Microsoft.Extensions.DependencyInjection", + "**Comprehensive Testing** - 29 unit and integration tests ensuring reliability", + "**MIT Licensed** - Free and open-source for unrestricted use", + "**Complete Documentation** - README with installation guide, usage examples, and error handling patterns" + ] + }, + { + "title": "API Refinements", + "items": [ + "**Version Endpoint** - Renamed `createdAt` to `buildDate` for clarity in `/version` response", + "**Version Endpoint** - Renamed `gitRevision` to `commitHash` for consistency in `/version` response", + "**Detailed Lookup** - Added dedicated `asn` section in `/lookup/detailed` response for better structure", + "**Property Consistency** - Standardized naming conventions across all API endpoints", + "**Backward Compatible** - Changes maintain compatibility with existing integrations" + ] + }, + { + "title": ".NET Client Features", + "items": [ + "**IBitipClient Interface** - Clean abstraction for dependency injection and testing", + "**Four Core Methods** - GetHealth(), GetVersion(), GetIpLocation(), GetDetailedIpLocation()", + "**Automatic Serialization** - JSON serialization handled transparently", + "**HTTP Client Factory** - Uses IHttpClientFactory for efficient connection management", + "**Error Handling** - Typed exceptions with detailed error messages", + "**IPv4 & IPv6 Support** - Full support for both IP address formats", + "**Validation Built-in** - Client-side IP validation before API calls" + ] + }, + { + "title": "Installation & Usage", + "content": "Install via NuGet Package Manager or .NET CLI with `dotnet add package Bitip.Client`. Register services in your DI container using `services.UseBitipClient(baseUrl, apiKey)`, then inject `IBitipClient` into your classes. See the package README for complete examples and documentation." + }, + { + "title": "Developer Experience", + "items": [ + "**Zero Configuration** - Simple setup with just base URL and API key", + "**IntelliSense Support** - Full IDE autocomplete and documentation tooltips", + "**Example Projects** - Sample code demonstrating all features", + "**Test Helpers** - Comprehensive test fixtures for unit testing your code", + "**Active Maintenance** - Regular updates and responsive issue tracking" + ] + } + ] + }, { "version": "1.1.0", "date": "2025-10-06T10:00:00Z", diff --git a/package-lock.json b/package-lock.json index 54d1f3e..c3ac1de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bitip", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bitip", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "workspaces": [ "src/backend", diff --git a/package.json b/package.json index a78e8c4..e3ed046 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bitip", - "version": "1.1.0", + "version": "1.1.1", "description": "Bitip - GeoIP Lookup Service with REST API and Web Interface", "type": "module", "main": "dist/backend/index.js",