Getting Started
+This guide shows the common setup and first-use patterns for consuming CapyKit from a .NET 8 project.
+Install
+Add CapyKit to your project from NuGet:
+dotnet add package CapyKit
+
+If you are working from a local checkout instead, reference the project directly:
+dotnet add reference ../CapyKit/CapyKit.csproj
+
+Add Namespaces
+Most APIs live in one of three namespaces:
+using CapyKit;
+using CapyKit.Extensions;
+using CapyKit.Helpers;
+
+Use CapyKit for core types such as Password, Pool<T>, and CapyEventReporter. Use CapyKit.Extensions for extension methods. Use CapyKit.Helpers for serialization, compression, security, keys, language, and calculation helpers.
Work With Strings
+using CapyKit.Extensions;
+
+string? suppliedName = "";
+string name = suppliedName.IfNullOrWhiteSpace("Guest");
+
+IfNullOrEmpty and IfNullOrWhiteSpace return the original value when it is usable and return your replacement value when it is not.
Page And Filter Collections
+using CapyKit.Extensions;
+
+var activeUsers = users.Filter(user => user.Disabled);
+var secondPage = activeUsers.Page(pageNumber: 2, pageSize: 25);
+int pageCount = activeUsers.PageCount(pageSize: 25);
+
+Filter removes items that match the predicate. Page uses natural page numbering, so the first page is 1.
Serialize And Compress Data
+using CapyKit.Helpers;
+
+var json = SerializationHelper.SerializeToString(order);
+var copy = SerializationHelper.Deserialize<Order>(json);
+
+var compressed = CompressionHelper.CompressToString(order);
+var restored = CompressionHelper.Decompress<Order>(compressed);
+
+Serialization uses System.Text.Json. Compression stores the serialized JSON payload using gzip; CompressToString returns a Base64 representation for easier storage or transport.
Hash And Verify Passwords
+using CapyKit;
+using CapyKit.Helpers;
+
+Password storedPassword = SecurityHelper.Pbkdf2("correct horse battery staple");
+
+bool passwordMatches = SecurityHelper.CompareHashedPassword(
+ storedPassword,
+ "correct horse battery staple",
+ storedPassword.Salt,
+ Password.Pbkdf2Algorithm);
+
+SecurityHelper.Pbkdf2 creates a Password with a random salt. Store the hash, salt, and algorithm information required by your application, then compare future password attempts using the same salt and algorithm.
Generate Random Values
+using CapyKit.Helpers;
+
+string token = SecurityHelper.GetRandomString(32);
+string password = SecurityHelper.GetRandomPassword(
+ 20,
+ ValidCharacterCollection.Lowercase,
+ ValidCharacterCollection.Uppercase,
+ ValidCharacterCollection.Numbers,
+ ValidCharacterCollection.Special);
+
+Random string and password generation use .NET cryptographic random number generation.
+Create And Validate Keys
+using System.Text;
+using CapyKit.Helpers;
+
+var keyHelper = new KeyHelper();
+keyHelper.SetMasterKeyAccessor(() => Encoding.UTF8.GetBytes("replace-with-your-master-key"));
+keyHelper.SetSaltSizeAccessor(() => 8);
+keyHelper.SetNumPartsAccessor(() => 4);
+
+string key = keyHelper.GenerateKey();
+bool valid = keyHelper.ValidateKey(key);
+
+KeyHelper uses an application-provided master key to sign generated key material. Keep the master key secret and stable for keys that must remain valid over time.
Subscribe To CapyKit Events
+using CapyKit;
+
+CapyEventReporter.Subscribe(
+ e => Console.WriteLine($"[{e.Level}] {e.MethodName}: {e.Message}"),
+ EventLevel.Warning);
+
+CapyKit does not require a logging framework. Subscribe to events and forward them to whatever logging or telemetry system your application already uses.
+Browse The API
+For the full list of namespaces, types, overloads, and member signatures, open the generated API Reference.