Skip to content

Commit 4a2dd36

Browse files
committed
Initial project scaffold with CI, docs, and samples
Bootstraps the Valir repository: adds coding style (.editorconfig, .gitattributes), contributor docs (CONTRIBUTING, SECURITY, FUNDING), issue/PR templates, labels and labeler config, Dependabot and release-drafter configs, and multiple GitHub workflows (CI, benchmarks, release, etc.). Adds solution, projects and source modules (Valir.Abstractions, Core, Redis, AspNet, EntityFrameworkCore, brokers), sample apps, tests and benchmarks, Docker compose, docs, icons and NuGet config. Also updates README. This prepares the repository for development, CI, testing, and contribution workflows.
1 parent eee8766 commit 4a2dd36

115 files changed

Lines changed: 8474 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
root = true
2+
3+
# All files
4+
[*]
5+
indent_style = space
6+
tab_width = 4
7+
indent_size = 4
8+
dotnet_style_readonly_field = true:suggestion
9+
dotnet_style_qualification_for_field = false:silent
10+
dotnet_style_qualification_for_property = false:silent
11+
dotnet_style_qualification_for_method = false:silent
12+
dotnet_style_qualification_for_event = false:silent
13+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
14+
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
15+
dotnet_style_predefined_type_for_member_access = true:silent
16+
dotnet_code_quality_unused_parameters = all:suggestion
17+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
18+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
19+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
20+
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
21+
dotnet_style_allow_statement_immediately_after_block_experimental = true:silent
22+
dotnet_style_allow_multiple_blank_lines_experimental = true:silent
23+
dotnet_style_null_propagation = true:suggestion
24+
dotnet_style_coalesce_expression = true:suggestion
25+
dotnet_style_prefer_auto_properties = true:silent
26+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
27+
dotnet_style_object_initializer = true:suggestion
28+
dotnet_style_collection_initializer = true:suggestion
29+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
30+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
31+
dotnet_style_prefer_conditional_expression_over_return = true:silent
32+
dotnet_style_explicit_tuple_names = true:suggestion
33+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
34+
dotnet_style_prefer_simplified_interpolation = true:suggestion
35+
dotnet_style_prefer_compound_assignment = true:suggestion
36+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
37+
dotnet_style_namespace_match_folder = true:suggestion
38+
end_of_line = crlf
39+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
40+
41+
# Xml files
42+
[*.xml]
43+
indent_size = 2
44+
45+
[*.cs]
46+
#### Adlandırma stilleri ####
47+
48+
# Adlandırma kuralları
49+
50+
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
51+
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
52+
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
53+
54+
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
55+
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
56+
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
57+
58+
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
59+
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
60+
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
61+
62+
# Sembol belirtimleri
63+
64+
dotnet_naming_symbols.interface.applicable_kinds = interface
65+
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
66+
dotnet_naming_symbols.interface.required_modifiers =
67+
68+
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
69+
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
70+
dotnet_naming_symbols.types.required_modifiers =
71+
72+
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
73+
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
74+
dotnet_naming_symbols.non_field_members.required_modifiers =
75+
76+
# Adlandırma stilleri
77+
78+
dotnet_naming_style.begins_with_i.required_prefix = I
79+
dotnet_naming_style.begins_with_i.required_suffix =
80+
dotnet_naming_style.begins_with_i.word_separator =
81+
dotnet_naming_style.begins_with_i.capitalization = pascal_case
82+
83+
dotnet_naming_style.pascal_case.required_prefix =
84+
dotnet_naming_style.pascal_case.required_suffix =
85+
dotnet_naming_style.pascal_case.word_separator =
86+
dotnet_naming_style.pascal_case.capitalization = pascal_case
87+
88+
dotnet_naming_style.pascal_case.required_prefix =
89+
dotnet_naming_style.pascal_case.required_suffix =
90+
dotnet_naming_style.pascal_case.word_separator =
91+
dotnet_naming_style.pascal_case.capitalization = pascal_case
92+
csharp_space_around_binary_operators = before_and_after
93+
csharp_indent_labels = one_less_than_current
94+
csharp_using_directive_placement = outside_namespace:silent
95+
csharp_style_prefer_switch_expression = true:suggestion
96+
csharp_style_prefer_pattern_matching = true:silent
97+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
98+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
99+
csharp_style_prefer_not_pattern = true:suggestion
100+
csharp_style_prefer_extended_property_pattern = true:suggestion
101+
csharp_prefer_static_local_function = true:suggestion
102+
csharp_prefer_simple_using_statement = true:suggestion
103+
csharp_prefer_braces = true:silent
104+
csharp_style_namespace_declarations = block_scoped:silent
105+
csharp_style_prefer_method_group_conversion = true:silent
106+
csharp_style_prefer_top_level_statements = true:silent
107+
csharp_style_conditional_delegate_call = true:suggestion
108+
csharp_style_var_when_type_is_apparent = false:silent
109+
csharp_style_var_for_built_in_types = false:silent
110+
csharp_style_var_elsewhere = false:silent
111+
csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent
112+
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent
113+
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent
114+
csharp_style_prefer_tuple_swap = true:suggestion
115+
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
116+
csharp_style_prefer_range_operator = true:suggestion
117+
csharp_style_prefer_index_operator = true:suggestion
118+
csharp_style_prefer_local_over_anonymous_function = true:suggestion
119+
csharp_prefer_simple_default_expression = true:suggestion
120+
csharp_style_prefer_null_check_over_type_check = true:suggestion
121+
csharp_style_throw_expression = true:suggestion
122+
csharp_style_prefer_utf8_string_literals = true:suggestion
123+
csharp_style_expression_bodied_lambdas = true:silent
124+
csharp_style_expression_bodied_accessors = true:silent
125+
csharp_style_expression_bodied_indexers = true:silent
126+
csharp_style_expression_bodied_properties = true:silent
127+
csharp_style_expression_bodied_operators = false:silent
128+
csharp_style_expression_bodied_constructors = false:silent
129+
csharp_style_expression_bodied_methods = false:silent
130+
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
131+
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
132+
csharp_style_deconstructed_variable_declaration = true:suggestion
133+
csharp_style_inlined_variable_declaration = true:suggestion
134+
csharp_style_expression_bodied_local_functions = false:silent
135+
csharp_style_prefer_readonly_struct = true:suggestion
136+
csharp_style_prefer_readonly_struct_member = true:suggestion
137+
csharp_style_prefer_primary_constructors = true:suggestion
138+
139+
[*.vb]
140+
#### Adlandırma stilleri ####
141+
142+
# Adlandırma kuralları
143+
144+
dotnet_naming_rule.interface_should_be_i_ile_başlar.severity = suggestion
145+
dotnet_naming_rule.interface_should_be_i_ile_başlar.symbols = interface
146+
dotnet_naming_rule.interface_should_be_i_ile_başlar.style = i_ile_başlar
147+
148+
dotnet_naming_rule.türler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.severity = suggestion
149+
dotnet_naming_rule.türler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.symbols = türler
150+
dotnet_naming_rule.türler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.style = baş_harfleri_büyük_olmak_üzere_bitişik
151+
152+
dotnet_naming_rule.alan_olmayan_üyeler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.severity = suggestion
153+
dotnet_naming_rule.alan_olmayan_üyeler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.symbols = alan_olmayan_üyeler
154+
dotnet_naming_rule.alan_olmayan_üyeler_should_be_baş_harfleri_büyük_olmak_üzere_bitişik.style = baş_harfleri_büyük_olmak_üzere_bitişik
155+
156+
# Sembol belirtimleri
157+
158+
dotnet_naming_symbols.interface.applicable_kinds = interface
159+
dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
160+
dotnet_naming_symbols.interface.required_modifiers =
161+
162+
dotnet_naming_symbols.türler.applicable_kinds = class, struct, interface, enum
163+
dotnet_naming_symbols.türler.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
164+
dotnet_naming_symbols.türler.required_modifiers =
165+
166+
dotnet_naming_symbols.alan_olmayan_üyeler.applicable_kinds = property, event, method
167+
dotnet_naming_symbols.alan_olmayan_üyeler.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected
168+
dotnet_naming_symbols.alan_olmayan_üyeler.required_modifiers =
169+
170+
# Adlandırma stilleri
171+
172+
dotnet_naming_style.i_ile_başlar.required_prefix = I
173+
dotnet_naming_style.i_ile_başlar.required_suffix =
174+
dotnet_naming_style.i_ile_başlar.word_separator =
175+
dotnet_naming_style.i_ile_başlar.capitalization = pascal_case
176+
177+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.required_prefix =
178+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.required_suffix =
179+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.word_separator =
180+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.capitalization = pascal_case
181+
182+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.required_prefix =
183+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.required_suffix =
184+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.word_separator =
185+
dotnet_naming_style.baş_harfleri_büyük_olmak_üzere_bitişik.capitalization = pascal_case

.gitattributes

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
###############################################################################
2+
# Set default behavior to automatically normalize line endings.
3+
###############################################################################
4+
* text=auto
5+
6+
###############################################################################
7+
# Set default behavior for command prompt diff.
8+
#
9+
# This is need for earlier builds of msysgit that does not have it on by
10+
# default for csharp files.
11+
# Note: This is only used by command line
12+
###############################################################################
13+
#*.cs diff=csharp
14+
15+
###############################################################################
16+
# Set the merge driver for project and solution files
17+
#
18+
# Merging from the command prompt will add diff markers to the files if there
19+
# are conflicts (Merging from VS is not affected by the settings below, in VS
20+
# the diff markers are never inserted). Diff markers may cause the following
21+
# file extensions to fail to load in VS. An alternative would be to treat
22+
# these files as binary and thus will always conflict and require user
23+
# intervention with every merge. To do so, just uncomment the entries below
24+
###############################################################################
25+
#*.sln merge=binary
26+
#*.slnx merge=binary
27+
#*.csproj merge=binary
28+
#*.vbproj merge=binary
29+
#*.vcxproj merge=binary
30+
#*.vcproj merge=binary
31+
#*.dbproj merge=binary
32+
#*.fsproj merge=binary
33+
#*.lsproj merge=binary
34+
#*.wixproj merge=binary
35+
#*.modelproj merge=binary
36+
#*.sqlproj merge=binary
37+
#*.wwaproj merge=binary
38+
39+
###############################################################################
40+
# behavior for image files
41+
#
42+
# image files are treated as binary by default.
43+
###############################################################################
44+
#*.jpg binary
45+
#*.png binary
46+
#*.gif binary
47+
48+
###############################################################################
49+
# diff behavior for common document formats
50+
#
51+
# Convert binary document formats to text before diffing them. This feature
52+
# is only available from the command line. Turn it on by uncommenting the
53+
# entries below.
54+
###############################################################################
55+
#*.doc diff=astextplain
56+
#*.DOC diff=astextplain
57+
#*.docx diff=astextplain
58+
#*.DOCX diff=astextplain
59+
#*.dot diff=astextplain
60+
#*.DOT diff=astextplain
61+
#*.pdf diff=astextplain
62+
#*.PDF diff=astextplain
63+
#*.rtf diff=astextplain
64+
#*.RTF diff=astextplain

.github/CONTRIBUTING.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Contributing to Valir
2+
3+
Thank you for your interest in contributing to Valir! This document provides guidelines and information for contributors.
4+
5+
## Code of Conduct
6+
7+
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
8+
9+
## How to Contribute
10+
11+
### Reporting Bugs
12+
13+
Before creating a bug report, please check existing issues to avoid duplicates.
14+
15+
When creating a bug report, include:
16+
- Clear, descriptive title
17+
- Steps to reproduce the issue
18+
- Expected vs actual behavior
19+
- Environment details (.NET version, OS, Redis version)
20+
- Relevant logs or error messages
21+
22+
### Suggesting Features
23+
24+
Feature requests are welcome! Please:
25+
- Check existing issues and discussions first
26+
- Describe the use case clearly
27+
- Explain why this would benefit other users
28+
29+
### Pull Requests
30+
31+
1. **Fork** the repository
32+
2. **Create a branch** from `develop` for your changes
33+
3. **Write tests** for new functionality
34+
4. **Follow coding standards** (see below)
35+
5. **Update documentation** if needed
36+
6. **Submit a PR** with a clear description
37+
38+
## Development Setup
39+
40+
```bash
41+
# Clone your fork
42+
git clone https://github.com/Taiizor/Valir.git
43+
cd Valir
44+
45+
# Restore dependencies
46+
dotnet restore
47+
48+
# Build
49+
dotnet build
50+
51+
# Run tests
52+
dotnet test
53+
```
54+
55+
## Coding Standards
56+
57+
- Use C# 14 language features appropriately
58+
- Follow Microsoft's [C# Coding Conventions](https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions)
59+
- Use file-scoped namespaces
60+
- Write XML documentation for public APIs
61+
- Keep methods focused and small
62+
- Prefer explicit types for clarity in public APIs
63+
64+
## Project Structure
65+
66+
```
67+
src/
68+
├── Valir.Abstractions/ # Core interfaces
69+
├── Valir.Core/ # Worker runtime
70+
├── Valir.Redis/ # Redis implementation
71+
├── Valir.AspNet/ # ASP.NET integration
72+
├── Valir.EntityFrameworkCore/ # Outbox pattern
73+
├── Valir.Brokers.Kafka/ # Kafka adapter
74+
├── Valir.Brokers.RabbitMQ/ # RabbitMQ adapter
75+
├── Valir.Brokers.AzureSB/ # Azure SB adapter
76+
└── Valir.Worker/ # CLI worker host
77+
78+
samples/
79+
└── Valir.Sample.WebApi/ # Example usage
80+
81+
tests/
82+
└── Valir.Tests/ # Unit & integration tests
83+
```
84+
85+
## Testing
86+
87+
- Write unit tests for new logic
88+
- Use Testcontainers for integration tests
89+
- Ensure all tests pass before submitting PR
90+
91+
```bash
92+
# Run unit tests only
93+
dotnet test --filter "FullyQualifiedName!~Integration"
94+
95+
# Run all tests (requires Docker)
96+
dotnet test
97+
```
98+
99+
## Questions?
100+
101+
Open a [Discussion](https://github.com/Taiizor/Valir/discussions) for questions or ideas.
102+
103+
Thank you for contributing! 🚀

.github/FUNDING.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# These are supported funding model platforms
2+
3+
github: # [Taiizor]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
otechie: # Replace with a single Otechie username
12+
custom: ['https://www.nuget.org/profiles/Taiizor', 'www.vegalya.com', 'www.soferity.com']

0 commit comments

Comments
 (0)