-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCREDITS
More file actions
115 lines (81 loc) · 3.91 KB
/
CREDITS
File metadata and controls
115 lines (81 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Credits
=======
Fox.ChainKit and Fox.ChainKit.ResultKit are original works created and maintained
by Károly Akácz.
Author
------
Károly Akácz
GitHub: @akikari (https://github.com/akikari)
Project: https://github.com/akikari/Fox.ChainKit
Project Philosophy
------------------
Fox.ChainKit embodies a set of core design principles that guide its development:
Zero Reflection
The library achieves predictable performance by using factory-based handler
resolution instead of reflection. All handlers are explicitly registered,
making the chain composition clear and discoverable.
Type Safety First
Leveraging C#'s strong type system and modern language features (nullable
reference types, generic constraints), Fox.ChainKit provides compile-time
safety wherever possible, reducing the surface area for runtime errors.
DI-First Design
Built from the ground up for dependency injection, the library integrates
seamlessly with modern .NET applications. Handlers receive dependencies
through constructor injection, promoting testability and loose coupling.
Minimal Dependencies
The library deliberately depends only on core Microsoft.Extensions packages
(DependencyInjection.Abstractions). This decision ensures long-term stability,
reduces dependency conflicts, and maintains a minimal attack surface.
Developer Experience
Clear error messages, IntelliSense-friendly APIs, and comprehensive XML
documentation are first-class concerns. The fluent builder API makes chain
construction intuitive and discoverable.
Architectural Decisions
------------------------
Fox.ChainKit (Core Library)
The core library provides a lightweight abstraction over Microsoft.Extensions.Options
with three main components:
1. Validation Rules - Composable, chainable validation primitives (NotNull,
InRange, FileExists, etc.)
2. Builder Pattern - ConfigValidationBuilder provides a fluent API for constructing
validation pipelines
3. Startup Integration - ValidateOnStartup() hooks into ASP.NET Core's startup
lifecycle for fail-fast behavior
The architecture deliberately avoids complex abstractions, favoring simple,
testable components that compose well.
Fox.ConfigKit.ResultKit (Integration Package)
This package bridges Fox.ConfigKit with Fox.ResultKit's Result pattern, enabling
functional-style configuration validation for applications already using Railway
Oriented Programming.
Key design choice: The integration is opt-in and packaged separately to avoid
forcing the Result pattern on users who prefer exception-based error handling.
Inspirations
------------
This project draws inspiration from:
- Microsoft.Extensions.Options - The foundation for .NET configuration patterns
- Railway Oriented Programming (Scott Wlaschin) - Fail-fast error handling principles
- FluentValidation - Fluent API design patterns (though Fox.ConfigKit is purpose-built
for startup validation, not runtime validation)
- Domain-Driven Design - Explicit validation of invariants and fail-fast philosophy
Acknowledgments
---------------
Special thanks to the .NET open-source community for:
- Microsoft.Extensions.Options - Providing the IOptions abstraction
- Fox.ResultKit - Enabling functional composition with the Result pattern
- All contributors, testers, and users who help improve this library
Contributing
------------
Fox.ConfigKit welcomes contributions that align with its design philosophy:
- Lightweight, focused features
- No new dependencies
- Comprehensive tests
- Clear documentation
See CONTRIBUTING.md for details.
License
-------
Fox.ConfigKit is licensed under the MIT License.
Copyright (c) 2026 Károly Akácz
This is a permissive license that allows you to use, modify, and distribute this
software freely, including in commercial applications. The only requirement is to
include the copyright notice and license text in your distributions.
See LICENSE.txt for the full license text.