Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

FrenchExDev: A .NET & PowerShell Development Ecosystem

La Grande Vague - Hokusaï
La Grande Vague - Hokusaï

Personal monorepo for developer tools, libraries, and infrastructure — 25+ top-level projects, 8 CLI binary wrappers, 2 JSON schema bundles, 3 DSL frameworks, and a philosophy that if the compiler can catch it, it should.

Overview

FrenchExDev is a monorepo built around one conviction: type safety scales better than conventions. Where most .NET ecosystems lean on runtime reflection, string templates, and hope, FrenchExDev pushes decisions to compile time through Roslyn source generators, sealed records, and explicit error types.

The ecosystem targets .NET 10 and PowerShell 7+, spanning functional error handling, CLI binary automation, document processing, AI-powered search, static analysis, and development infrastructure.

FrenchExDev/
├── Net/FrenchExDev/          .NET libraries, source generators, CLI tools
├── PoSh/FrenchExDev/         PowerShell modules & developer shell
├── Skills/                   Claude Code skill definitions
└── Doc/                      Cross-cutting documentation & assets

Part I: .NET Libraries

Result, Builder, BinaryWrapper, Wrapper.Versioning, FiniteStateMachine, and the four DSL frameworks (Dsl, Ddd, Requirements, Diem). The composable foundation everything else is built on.

Part II: CLI Binary Wrappers

Eight production BinaryWrapper consumers — Podman (58 versions), Docker Compose (57 versions), Vagrant, Packer, Podman Compose, GitLab CLI, Docker, and Git (134 versions, build-from-source) — each with its own help-format parser.

Part III: JSON Schema Bundles

The alternate wrapping strategy: download official JSON schemas, merge versions, source-generate typed C# models. DockerCompose.Bundle (32 spec versions) and Traefik.Bundle (static + dynamic).

Part IV: Infrastructure

The VM and image-building stack: Vos VM orchestration framework, Vos.Alpine variants, and the Packer.Alpine provisioning helpers that produce golden VM images.

Part V: Applications

End-user .NET tools built on the libraries: Doc2Pdf (document conversion), DockAi (AI document search), QualityGate (Roslyn static analysis), HttpClient (testing seam), and Alpine.Version (CDN discovery).

Part VI: PowerShell Modules

30+ PowerShell 7 modules organized by domain — developer shell, source control & CI, container & orchestration, VM & image building, Vos integration, infrastructure services, .NET tooling, and AI productivity.

Part VII: Development Practices & Research

Central package management, the interactive NuGet updater, documentation standards, quality gates, and the IEC 61499 experimental sandbox.

.NET Projects at a Glance

Project Description GitHub
Result Composable Result<T> / Result<T, TError> types — Map, Bind, Recover — replacing exceptions with explicit error values source
Builder Source-generator-powered async object construction with fluent API, validation, and circular reference detection source
BinaryWrapper Framework for generating type-safe C# APIs from CLI --help output via Roslyn, with multi-version support source
FiniteStateMachine Production-grade async FSM — three tiers (Dynamic/Typed/Rich), guards, hierarchical states, parallel regions, source-generated source
Wrapper.Versioning Generic design pipeline for downloading, transforming, and saving versioned items from GitHub/GitLab APIs source
Dsl M3 meta-metamodeling framework — 5 self-describing primitives for building any DSL source
Ddd Attribute-based DDD DSL built on Dsl — [AggregateRoot], [Entity], [ValueObject], [Command], [DomainEvent], [Invariant] source
Requirements Type-safe feature tracking DSL — requirements as abstract classes, ACs as abstract methods, compile-time traceability source
Diem Content Management Framework — 4 sub-DSLs (Content, Admin, Pages, Workflow) generating full-stack Blazor apps source
Vagrant Typed wrapper for HashiCorp Vagrant (2.4.3–2.4.9) with custom parser, event hierarchies, and result collectors source
Packer Typed wrapper for HashiCorp Packer — build, validate, init, fmt, inspect, plugins source
Podman Typed wrapper for Podman (58 versions, 180+ commands, 18 groups) — the largest BinaryWrapper consumer source
Podman Compose Typed wrapper for Podman Compose (Python CLI, argparse format, 6 versions) source
Docker Compose Typed wrapper for Docker Compose V2 (57 versions, 37 commands, channel-based scraping) source
GitLab.Cli Typed wrapper for glab GitLab CLI — BinaryWrapper consumer with custom Cobra parser source
Docker Typed wrapper for Docker CLI (in progress) source
Git Typed wrapper for Git CLI (134 versions, 422 generated files, ~150 commands) — build-from-source scraping source
DockerCompose.Bundle Strongly-typed Docker Compose configuration from 32 schema versions — source-generated models and builders source
Traefik.Bundle Strongly-typed Traefik reverse proxy configuration from official JSON schemas — static + dynamic config, YAML round-trip source
Vos VM orchestration framework — up/halt/destroy/provision/snapshot across backends with configuration merging and group execution source
Vos.Alpine Alpine-specific VirtualBox configuration defaults for Vos — SATA SSD, nested virtualization, NIC promiscuous mode source
Vos.Alpine.DockerHost Docker-host machine type for Vos — combines Alpine base with Docker provisioning and shared folders source
Packer.Alpine Alpine Linux provisioning helpers for Packer — answer file generation, base setup, SSH keys, Alpine scripting source
Packer.Alpine.DockerHost Docker provisioning plugin for Alpine Packer builds — installs Docker, docker-compose, openrc services source
Doc2Pdf Document converter (DOCX, XLSX, PPTX, RTF, TXT to PDF) — library + CLI tool source
DockAi AI-powered document indexing & search — Lucene.Net, multi-LLM (Claude, OpenAI, Ollama), Blazor viewer source
QualityGate Static analysis & quality metrics — Roslyn semantic analysis, complexity, coupling, mutation, CI/CD gates source
HttpClient HTTP abstraction + testing fakes — IHttpClient interface, FakeHttpClient, fluent response builders source
Alpine.Version Alpine Linux version discovery — CDN querier, version comparison, architecture/flavor filtering, checksums source

Design Philosophy

Type safety over conventions. If the compiler can enforce it, it should. Source generators replace runtime reflection. Sealed records replace mutable classes. Explicit Result types replace thrown exceptions.

Composability over frameworks. Small, focused libraries with clear interfaces that compose through pipelines — Map, Bind, Recover for error handling; IOutputParserIResultCollector for process output; middleware chains for scraping pipelines.

Developer experience is a feature. IntelliSense for 200 CLI flags. Tab completion in PowerShell. Interactive package updates with live tables. If the tooling isn't pleasant to use, it won't get used.

Anything-as-code. Infrastructure, quality gates, documentation templates, development environments — if it can be versioned and automated, it is.


FrenchExDev is a personal initiative. Built with .NET 10, Roslyn source generators, PowerShell 7, and the conviction that the best abstractions are the ones the compiler understands.

⬇ Download