An open API service indexing awesome lists of open source software.

https://github.com/bespoyasov/explicit-design

Source code for the “Explicit Design” post series.
https://github.com/bespoyasov/explicit-design

architecture cohesion coupling domain-modelling explicit-architecture explicit-intents functional-architecture functional-core functional-programming inversion-of-control javascript multiparadigm react software-design type-safety typescript vertical-slices

Last synced: 2 months ago
JSON representation

Source code for the “Explicit Design” post series.

Awesome Lists containing this project

README

        

# Explicit Software Design

Source code and examples for the “Explicit Design” post series in my blog.

In this series, we're be building a fictional currency converter application. Each post focuses on one specific topic:

- [Introduction: principles and constraints](https://bespoyasov.me/blog/explicit-design-series/)
- [Modeling the domain](https://bespoyasov.me/blog/explicit-design-1/)
- [Designing use cases and application core](https://bespoyasov.me/blog/explicit-design-2/)
- [Describing the UI as an “adapter” to the application](https://bespoyasov.me/blog/explicit-design-3/)
- [Creating infrastructure to support use cases](https://bespoyasov.me/blog/explicit-design-4/)
- [Composing the application using hooks](https://bespoyasov.me/blog/explicit-design-5/)
- [Composing the application without hooks](https://bespoyasov.me/blog/explicit-design-6/)
- [Dealing with cross-cutting concerns](https://bespoyasov.me/blog/explicit-design-7/)
- [Extending functionality with a new feature](https://bespoyasov.me/blog/explicit-design-8/)
- [Decoupling features using events](https://bespoyasov.me/blog/explicit-design-9/)
- [Overview and preliminary conclusions](https://bespoyasov.me/blog/explicit-design-10/)

## Repo Structure

We're building the application step by step. Each post refers to a separate folder in the project repository, where you can see how everything is organized and play with the code.

## Future Plans

In addition, I have an idea to extend the series with a few related posts on similar topics:

- [ ] Applicability of the approach with frameworks like Next.
- [ ] A more detailed dive into functional DDD.
- [ ] Type safety and type branding.
- [ ] Code-splitting, routing, and performance with React 18.
- [ ] Error handling in a functional way.
- [ ] Use with other JS libraries like Solid or Svelte.

If you want to see another particular topic in the list, feel free to ping me in [issues](https://github.com/bespoyasov/explicit-design/issues)! 👋

## Disclaimers

> This is not a recommendation on how to write or not write code.

I am not aiming to “show the correct way of coding” because everything depends on the specific project and its goals. My goal in this project is to _try_ to apply the principles from various books in a frontend application to understand where the scope of their applicability ends, how useful they are, and whether they pay off.

Take the code examples in this series not as a direct development guide, but as a _source of ideas_ that may be useful to you.

## About Author

Alex Bespoyasov, software engineer at 0+X, web developer since 2010.

- [Follow me on Twitter](https://twitter.com/bespoyasov_)
- [Subscribe to my blog](https://bespoyasov.me/blog/)
- [Buy me a coffee](https://buymeacoffee.com/bespoyasov)