ZaminX.BuildingBlocks.CrossCutting.Pulse 10.0.0-beta.1

This is a prerelease version of ZaminX.BuildingBlocks.CrossCutting.Pulse.
dotnet add package ZaminX.BuildingBlocks.CrossCutting.Pulse --version 10.0.0-beta.1
                    
NuGet\Install-Package ZaminX.BuildingBlocks.CrossCutting.Pulse -Version 10.0.0-beta.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZaminX.BuildingBlocks.CrossCutting.Pulse" Version="10.0.0-beta.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZaminX.BuildingBlocks.CrossCutting.Pulse" Version="10.0.0-beta.1" />
                    
Directory.Packages.props
<PackageReference Include="ZaminX.BuildingBlocks.CrossCutting.Pulse" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZaminX.BuildingBlocks.CrossCutting.Pulse --version 10.0.0-beta.1
                    
#r "nuget: ZaminX.BuildingBlocks.CrossCutting.Pulse, 10.0.0-beta.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ZaminX.BuildingBlocks.CrossCutting.Pulse@10.0.0-beta.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZaminX.BuildingBlocks.CrossCutting.Pulse&version=10.0.0-beta.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ZaminX.BuildingBlocks.CrossCutting.Pulse&version=10.0.0-beta.1&prerelease
                    
Install as a Cake Tool

Pulse

Pulse یک CrossCutting capability در ZaminX است که مجموعه‌ای از utilityهای سبک، سریع و پرکاربرد را برای استفاده در کل پروژه فراهم می‌کند.

این capability با تمرکز بر سادگی، حداقل abstraction و بیشترین کاربرد عملی طراحی شده است.


🎯 هدف

Pulse برای حل این نیازها طراحی شده است:

  • کار با تاریخ و زمان (خصوصاً تقویم شمسی)
  • جلوگیری از تکرار validationهای ساده
  • ارائه extension methodهای کاربردی
  • حذف نیاز به helperهای پراکنده در پروژه‌ها

📦 Scope

Pulse فقط شامل این موارد است:

1. DateTime (Persian-first)

ابزارهای کامل برای کار با تاریخ شمسی:

  • تبدیل و فرمت تاریخ شمسی
  • کار با PersianCalendar
  • متدهای کمکی برای نمایش friendly
  • پشتیبانی از فرهنگ فارسی

کلاس‌های اصلی:

  • FriendlyPersianDateUtils
  • PersianDateTimeUtils
  • PersianCulture
  • PersianNumbersUtils
  • TimeConstants
  • UnicodeConstants

2. Guards

پیاده‌سازی سبک برای guard clauseها:

Guard.Against.Null(input);
Guard.Against.NullOrEmpty(input);

3. Extensions

Extension methodهای منتخب:

  • StringExtensions
  • StringValidatorExtensions
  • EnumExtensions

❌ خارج از scope

موارد زیر عمداً در Pulse وجود ندارند:

  • Service Locator (ZaminServices)
  • Resource / Translator system
  • Dependency Injection helpers
  • abstractionهای غیرضروری

🧠 فلسفه طراحی

Pulse بر اساس این اصول طراحی شده است:

سادگی

APIها باید ساده، قابل فهم و بدون رفتار پنهان باشند.

عدم over-engineering

هیچ abstraction یا pattern اضافه‌ای بدون نیاز واقعی اضافه نشده است.

Persian-first

پشتیبانی کامل از تاریخ و فرهنگ فارسی یک هدف اصلی است.

قابل استفاده فوری

کدها باید بدون setup پیچیده قابل استفاده باشند.


🚀 نحوه استفاده

تاریخ شمسی

var now = DateTime.Now;
var friendly = FriendlyPersianDateUtils.ToFriendlyDate(now);

Guard

Guard.Against.Null(user, nameof(user));

Extension

var isValid = email.IsValidEmail();

📁 ساختار پروژه

Pulse/
 └── src/
     └── ZaminX.BuildingBlocks.CrossCutting.Pulse/
         ├── DateTime/
         ├── Globalization/
         ├── Guards/
         └── Extensions/

🧩 جایگاه در معماری

Pulse بخشی از:

BuildingBlocks → CrossCutting

است و در تمام لایه‌های application قابل استفاده می‌باشد.


⚠️ نکات

  • این capability intentionally ساده نگه داشته شده است
  • برای use-caseهای پیچیده‌تر، capability جدا طراحی خواهد شد
  • هیچ dependency خارجی ندارد

📄 لایسنس

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0-beta.1 104 4/13/2026