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

Stéphane ERARD

Pragmatic Full-Stack Software Architect

I turn ideas into products.

I'm a self-taught architect and hands-on developer with 20+ years of experience building B2B and B2C products. I work across C#, .NET, TypeScript and PHP, from application architecture to the tools that help a team deliver.

Nice, France · French & English · Available for full-time remote work

Selected Work

BIM&CO · 2020–2025 · Product engineering

Faster indexing, testable systems

Core Feature indexing ~2 days → 20 min V4/XML → V5/JSON & async processing

Problem. Slow indexing and a core feature that needed to evolve.

Contribution. Refactored the implementation, rebuilt it around asynchronous processing, and scaled it with workers and queues.

Result. Faster indexing and around 800 existing tests restored to a runnable suite.

C# · .NET · Workers · Kubernetes · Testing

Qwant · 2015–2017 · Developer infrastructure

Scalable Software Factory

Qwapp · Infrastructure as code Platform engineering & automation VMs · PowerDNS · GitLab · Jenkins build agents

Problem. Repeated setup and configuration across projects and environments.

Contribution. Designed and built Qwapp for VM provisioning and configuration, with Docker Compose orchestration of shared engineering services.

Result. Reproducible environments and shared tooling for development, testing and delivery.

Vagrant · Docker Compose · Puppet · PowerDNS · GitLab · Jenkins

FrenchExDev · Ecosystem in development

Diem CMF .NET Lab

Anything-as-Code · Applications & infrastructure C# → Typed models → HomeLab Existing building blocks · Integration in development

Problem. Infrastructure tools, configuration formats and project environments each need their own integration.

Contribution. Building reusable wrappers and Bundles, using C# as the language for describing machines, services and configuration.

Result. Typed APIs and configuration models, working toward a reproducible HomeLab described and controlled from a C# project.

C# · Roslyn · Packer · Vagrant · Docker Compose · Traefik

Requirements-as-Code · Used in this site

Connect intent to verification

Requirement → Feature → Acceptance criterion Test → Evidence New intent · Recovery from existing code under exploration

Problem. Requirements, implementation and tests can drift apart.

Contribution. Built typed models and tooling to inspect their links, execute verification and report the evidence.

I’m also experimenting with recovering candidate requirements from existing code and tests, using AI-assisted analysis and human review to clarify behavior, identify gaps and guide refactoring.

Result. A TypeScript implementation used here, alongside a C# implementation with its own documented scope.

TypeScript · C# · Roslyn · Coverage · Mutation testing

serard.dev · Live project

A publishing system you can explore

Markdown + metadata Build → HTML Search · Navigation · Interactive diagrams

Problem. Make a growing body of experience, projects and writing easy to navigate.

Contribution. Built a Markdown publishing pipeline, static rendering and browser interactions, supported by automated checks.

Result. The site you're using: searchable content, keyboard navigation, themes and explorable diagrams.

TypeScript · HTML/CSS · Markdown · Mermaid

How I Work

The thread running through my work is reducing the distance between what we intend, what we implement, and what we can verify.

  • Understand the need. Clarify the problem, constraints and observable acceptance criteria; revise them as we learn.
  • Build for change. Choose useful abstractions, clear boundaries and reusable modules. Automate recurring work when it earns its place.
  • Verify the result. Use tests, coverage, mutation testing and review for the questions each can answer. Keep decisions and execution evidence alongside the code.

Anything-as-Code is the common thread: I turn recurring concepts and constraints into typed, versioned models that tools can inspect, compose and verify. Requirements-as-Code applies this to software intent. Diem extends the approach to applications and their development environment, working toward a reproducible HomeLab described and controlled from C#.

In AI-assisted work, AI proposes, tooling checks, people decide. Business intent and acceptance remain human decisions; generated code and tests receive the same review as other contributions.

Explore my AI-assisted engineering workflow →

Get in Touch

Stéphane Erard

I'm looking for a full-time remote role where I can contribute hands-on to product development, architecture and the way a team delivers software. I work in French and English and am based in Nice, France.

Email me · Call +33 643 617 931

⬇ Download