Sashiko

Modular .NET Architecture

An open-source ecosystem of small, focused .NET libraries for clean composition, embedded data, validation, generation, and system-oriented tooling.

Created and maintained by Alexandru Luca.

What is Sashiko?

Sashiko is an open-source ecosystem of modular .NET libraries built to make development faster, cleaner, and more enjoyable. Its packages are small, precise building blocks that stand on their own and fit into larger systems for data-rich applications, simulations, and creative software projects.

Modular by design

Each package solves a clear problem and can be adopted on its own.

Lightweight by default

Runtime dependencies stay intentional so the libraries remain easy to introduce gradually.

Deterministic data

Embedded datasets and package behavior are maintained through validation and tests.

Composable over time

The ecosystem is designed to support larger systems without forcing one monolithic dependency.

Why Sashiko exists

Sashiko separates reusable software foundations from application-specific logic. The current focus is to keep the existing packages clean, documented, tested, and easy to release while growing the ecosystem one carefully designed package at a time.

Packages

Released

Sashiko.Core

Core utilities for the Sashiko ecosystem. Provides deterministic randomization, text normalization, unit conversions, shared abstractions, and foundational helpers for higher-level Sashiko packages.

dotnet add package Sashiko.Core
Released

Sashiko.Registries

JSON-based registry loading utilities for the Sashiko ecosystem. Provides trusted (embedded) and validated (external) loading paths, schema validation integration, option-aware JSON parsing, and domain-specific error semantics through RegistryLoadException.

dotnet add package Sashiko.Registries
Released

Sashiko.Validation

Structural validation engine for the Sashiko ecosystem. Provides hierarchical schema extraction, structural comparison, and format-agnostic validation for configuration files and runtime inputs.

dotnet add package Sashiko.Validation
Released

Sashiko.Languages

Strongly-typed ISO 639-3/2/1 language registry for the Sashiko ecosystem. Provides a complete embedded dataset derived from SIL International's ISO 639-3 tables, with lookup utilities and a stable, immutable registry model.

dotnet add package Sashiko.Languages
Released

Sashiko.Names

Culturally aware person name generator for the Sashiko ecosystem. Provides embedded, curated name pools and language-specific generation rules for realistic structured person names without runtime external data sources.

dotnet add package Sashiko.Names
Prerelease

Sashiko.SystemMonitor

Cross-platform system snapshot library for .NET. Provides operating system, CPU, GPU, memory, disk, thermal, and power metrics through a lightweight unified API.

dotnet add package Sashiko.SystemMonitor --prerelease

This list is refreshed from NuGet at build time. Public package documentation lives inside each package folder and on NuGet.

View packages on NuGet

Install

dotnet add package Sashiko.Core
dotnet add package Sashiko.Registries
dotnet add package Sashiko.Validation

Install only the package you need. Each library is versioned and published independently so applications can adopt the ecosystem gradually.

Quick examples

Generate a person name

using Sashiko.Names.Api;
using Sashiko.Names.Model.Enums;

var service = new NameService();
var name = service.Generate(Sex.Female, LanguageId.Fra);

Console.WriteLine(name.FullName);

Lookup a language

using Sashiko.Languages.Api;

var service = new LanguageService();
var language = service.GetIso3("eng");

Console.WriteLine(language.Name);

Open-source by design

Sashiko is developed openly on GitHub. The repository contains source code, package documentation, issues, releases, branding guidance, and project evolution.