-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCREDITS
More file actions
109 lines (76 loc) · 3.61 KB
/
CREDITS
File metadata and controls
109 lines (76 loc) · 3.61 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
Credits
=======
Fox.ValidationKit and Fox.ValidationKit.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.ValidationKit
Project Philosophy
------------------
Fox.ValidationKit embodies a set of core design principles that guide its development:
Explicit Validation
All validation rules are explicitly declared using a fluent API, making the
validation contract clear and discoverable. There are no hidden validations
or magic conventions—what you see is what you get.
Type Safety First
Leveraging C#'s strong type system and modern language features (nullable
reference types, expression trees, generic constraints), Fox.ValidationKit provides
compile-time safety wherever possible, reducing the surface area for runtime
errors.
Zero External Dependencies
The core library has zero external dependencies, relying only on .NET BCL.
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 library is designed to be intuitive
for developers with fluent validation syntax.
Architectural Decisions
------------------------
Fox.ValidationKit (Core Library)
The core library provides a lightweight validation DSL for .NET with three main
components:
1. Validation Rules - Composable, chainable validation primitives (NotNull,
NotEmpty, GreaterThan, LessThan, Between, Matches, etc.)
2. Builder Pattern - Validator<T> provides a fluent API for constructing
validation pipelines using RuleFor() method
3. Result Types - ValidationResult contains validation status and detailed errors
The architecture deliberately avoids complex abstractions, favoring simple,
testable components that compose well.
Fox.ValidationKit.ResultKit (Integration Package)
This package bridges Fox.ValidationKit with Fox.ResultKit's Result pattern, enabling
functional-style validation for applications 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 ValidationResult.
Inspirations
------------
This project draws inspiration from:
- FluentValidation - Fluent API design patterns for validation
- Railway Oriented Programming (Scott Wlaschin) - Error handling principles
- Domain-Driven Design - Explicit validation of invariants
- Microsoft C# language features - Modern C# patterns (primary constructors,
collection expressions, GeneratedRegex)
Acknowledgments
---------------
Special thanks to the .NET open-source community for:
- .NET BCL - Providing the foundation for modern C# development
- Fox.ResultKit - Enabling functional composition with the Result pattern
- All contributors, testers, and users who help improve this library
Contributing
------------
Fox.ValidationKit welcomes contributions that align with its design philosophy:
- Lightweight, focused features
- Zero dependencies (core library)
- Comprehensive tests
- Clear documentation
See CONTRIBUTING.md for details.
License
-------
Fox.ValidationKit 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.