# Resources

## Authors

### Brian Berns

* [AlgEff](https://github.com/brianberns/AlgEff) — Algebraic Effects library for F#

### Derek Comartin

* [Task-Based UI](https://youtu.be/DjZepWrAKzM) (YouTube)

### Einar Norðfjörð

* [The Equinox Programming Model](https://nordfjord.io/equinox/)

### James Shore

* [Testing Without Mocks](https://www.jamesshore.com/v2/projects/nullables/testing-without-mocks)

### Jérémie Chassaing

* [Functional Event Sourcing Decider](https://thinkbeforecoding.com/post/2021/12/17/functional-event-sourcing-decider)

### John Azariah

* [Tagless Final in F#](https://johnazariah.github.io/2025/12/12/tagless-final-01-froggy-tree-house.html) (series, 2025)
* [Intent vs Process](https://johnazariah.github.io/2026/03/05/01-your-clean-architecture-has-a-dirty-secret.html) (series, 2026) — Clean Architecture, Free Monad and Tagless Final in C# and F#
* [Choosing Both Sides of the Coin](https://johnazariah.github.io/2026/03/19/choosing-both-sides-of-the-coin.html) (2026) — Parallelism via `Both` in Free Monad

### Jordan Marr

* [Unit Testing Fable & .NET](https://jordanmarr.github.io/fsharp/unit-testing-fable-dotnet/)

### Mark Seemann

* [Pure DI](https://blog.ploeh.dk/2014/06/10/pure-di/)

### Michaël Azerhad

* [LinkedIn profile](https://www.linkedin.com/in/michael-azerhad/)

### Milan Jovanović

* [Screaming Architecture](https://www.milanjovanovic.tech/blog/screaming-architecture)
* [Vertical Slice Architecture Is Easier Than You Think](https://www.milanjovanovic.tech/blog/vertical-slice-architecture-is-easier-than-you-think)
* [What Is a Modular Monolith?](https://www.milanjovanovic.tech/blog/what-is-a-modular-monolith)
* [Why Clean Architecture Is Great For Complex Projects](https://www.milanjovanovic.tech/blog/why-clean-architecture-is-great-for-complex-projects)

### Nick Palladinos

* [Eff](https://github.com/palladin/Eff) — Algebraic Effects library for F#

### Paul Blasucci

* [FaultReport: a Theoretical Alternative to Result](https://paul.blasuc.ci/posts/fault-report.html)
* [You Really Wanna Put a Union There? You Sure?](https://paul.blasuc.ci/posts/really-scu.html)

### Romain Deneau

* [Commitji](https://github.com/rdeneau/commitji) — Conventional commits with emojis
* [F# Computation Expressions](https://dev.to/rdeneau/f-computation-expressions-4ge6) (series, 2025)
* [F# Training](https://rdeneau.gitbook.io/fsharp-training/) — Free e-book

### Roman Dzoukr

* [Feliz.DaisyUI](https://dzoukr.github.io/Feliz.DaisyUI/#/)
* [SAFEr.Template](https://github.com/Dzoukr/SAFEr.Template)

### Roman Liman (atsapura)

* [Fighting complexity in software development](https://github.com/atsapura/CardManagement/blob/master/article/Fighting.Complexity.md#business-logic)

### Scott Wlaschin

* [Domain Modeling Made Functional](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/) (📖 book)
* [Computation Expressions](https://fsharpforfunandprofit.com/series/computation-expressions/) (series, 2013)
* [Dependency Injection](https://fsharpforfunandprofit.com/posts/dependencies-4/) (series)
* [Designing with types: Single case union types](https://fsharpforfunandprofit.com/posts/designing-with-types-single-case-dus/)
* [Map and Bind and Apply, Oh my!](https://fsharpforfunandprofit.com/series/map-and-bind-and-apply-oh-my/) (series, 2015)

### Sergey Tihon

* [F# Advent Calendar in English 2025](https://sergeytihon.com/2025/11/03/f-advent-calendar-in-english-2025/)
* [F# Weekly](https://sergeytihon.com/fsharp-weekly/)

### Thomas Pierrain

* [Outside-In Diamond TDD](https://tpierrain.blogspot.com/2021/03/outside-in-diamond-tdd-1-style-made.html)

### Vladimir Shchur (Lanayx)

* [Dependency injection in F# — The missing manual](https://medium.com/@lanayx/dependency-injection-in-f-the-missing-manual-d376e9cafd0f)

### Zaid Ajaj

* [The Elmish Book](https://zaid-ajaj.github.io/the-elmish-book/) (free e-book)
* [Fable.Remoting](https://zaid-ajaj.github.io/Fable.Remoting/#/)
* [Feliz](https://zaid-ajaj.github.io/Feliz/)
* [Feliz.Router](https://github.com/Zaid-Ajaj/Feliz.Router) (GitHub)

## F# Libraries & Frameworks

* [Elmish](https://elmish.github.io/elmish/) — The Elm Architecture for F#
* [Fable](https://fable.io) — F# to JavaScript transpiler
* [Fantomas](https://fsprojects.github.io/fantomas/) — F# code formatter ([configuration reference](https://fsprojects.github.io/fantomas/docs/end-users/Configuration.html))
* [Feliz](https://fable-hub.github.io/Feliz/) — React DSL for Fable
  * [Feliz.Router](https://fable-hub.github.io/Feliz/ecosystem/Components/Feliz.Router)
  * [Feliz.UseElmish](https://fable-hub.github.io/Feliz/ecosystem/Hooks/Feliz.UseElmish)
* [FsCheck](https://fscheck.github.io/FsCheck/) — Property-based testing
* [FSharp.UMX](https://github.com/fsprojects/FSharp.UMX) — Units of Measure extension for primitive types
* [Giraffe](https://giraffe.wiki) — F# web framework for ASP.NET Core
* [SAFE.Utils](https://github.com/SAFE-Stack/SAFE.Utils)
* [Unquote](https://github.com/SwensenSoftware/unquote) — F# test assertions

## .NET Libraries & Tools

* [ASP.NET Core](https://www.asp.net/core/overview/aspnet-vnext)
* [Stryker](https://stryker-mutator.io) — Mutation testing ([.NET documentation](https://learn.microsoft.com/en-us/dotnet/core/testing/mutation-testing))
* [TUnit](https://tunit.dev/docs/writing-tests/data-driven-overview) — Data-driven testing
* [Verify](https://github.com/VerifyTests/Verify) — Approval/Snapshot testing

## Web Libraries & Tools

* [DaisyUI](https://daisyui.com) — Tailwind CSS component library
* [Playwright](https://playwright.dev/) — E2E testing
* [React](https://react.dev)
* [Tailwind CSS](https://tailwindcss.com)
* [Vite.js](https://vite.dev) — Build tool

## Specifications & Standards

* [Conventional Commits](https://www.conventionalcommits.org/)
* [Gitmoji](https://gitmoji.dev/)
* [Semantic Release](https://semantic-release.gitbook.io/)
* [Semantic Versioning (SemVer)](https://semver.org/)

## Reference Sites

* [Elm Architecture](https://guide.elm-lang.org/architecture/)
* [Microsoft F# style guide](https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting)
* [The OCaml system release 5.4](https://ocaml.org/manual/5.4/index.html)
  * [Effect Handlers](https://ocaml.org/manual/5.4/effects.html)
  * [Polymorphic Variants](https://ocaml.org/manual/5.4/polyvariant.html)
* [Refactoring Guru](https://refactoring.guru) — Design patterns & code smells
  * [Adapter pattern](https://refactoring.guru/design-patterns/adapter)
  * [Abstract Factory](https://refactoring.guru/design-patterns/abstract-factory)
  * [Builder](https://refactoring.guru/design-patterns/builder)
  * [Primitive Obsession](https://refactoring.guru/fr/smells/primitive-obsession)

## Public APIs

* [FakeStore API](https://fakestoreapi.com/) — Mock e-commerce API
* [Open Library API](https://openlibrary.org/dev/) — Books API

💡 These APIs were found via [Public APIs](https://github.com/public-apis/public-apis), a collective list of free APIs for development and testing.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rdeneau.gitbook.io/safe-clean-architecture/appendices/resources.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
