--- _layout: landing --- # CapyKit Documentation CapyKit is a small .NET utility library for the code you end up writing repeatedly: collection helpers, string and enum extensions, JSON serialization, gzip compression, password hashing, random token generation, simple key validation, distance calculations, and lightweight event reporting. The library targets .NET 8 and keeps its public surface intentionally direct. Most features are static helpers or extension methods, so consuming projects can adopt one piece at a time without taking on a framework or application model. ## Start Here - [Introduction](introduction.md) explains what CapyKit includes and how the namespaces are organized. - [Getting Started](getting-started.md) shows installation, imports, and common usage examples. - [API Reference](api/CapyKit.yml) contains the generated DocFX reference for every public type and member. ## Common Tasks ### Work with strings and collections Use `CapyKit.Extensions` for small quality-of-life helpers such as null fallback values, pagination, inverted filtering, left outer joins, enum display names, and property copying. ```csharp using CapyKit.Extensions; var displayName = user.Name.IfNullOrWhiteSpace("Guest"); var page = users.Page(pageNumber: 2, pageSize: 25); ``` ### Serialize, compress, and restore values Use `CapyKit.Helpers.SerializationHelper` and `CapyKit.Helpers.CompressionHelper` when you need straightforward JSON serialization or gzip compression around serializable values. ```csharp using CapyKit.Helpers; var payload = SerializationHelper.SerializeToString(order); var compressed = CompressionHelper.CompressToString(order); var restored = CompressionHelper.Decompress(compressed); ``` ### Hash passwords and generate tokens Use `SecurityHelper` for PBKDF2 password hashes, salts, and random values backed by .NET cryptographic random number generation. ```csharp using CapyKit; using CapyKit.Helpers; Password password = SecurityHelper.Pbkdf2("correct horse battery staple"); bool matches = SecurityHelper.CompareHashedPassword( password, "correct horse battery staple", password.Salt, Password.Pbkdf2Algorithm); ``` ### Listen to CapyKit events CapyKit reports warnings and errors through `CapyEventReporter` instead of choosing a logging framework for you. Subscribe at the level your application cares about and route events into your own logging pipeline. ```csharp using CapyKit; CapyEventReporter.Subscribe( e => logger.LogWarning("{Method}: {Message}", e.MethodName, e.Message), EventLevel.Warning); ``` ## Build The Docs Locally The documentation is generated with DocFX from the Markdown files in this folder and the XML comments in the `CapyKit` project. ```bash dotnet tool restore dotnet docfx Docs/docfx.json --serve ``` DocFX writes the generated site to `Docs/_site`.