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
- Modeling the domain
- Designing use cases and application core
- Describing the UI as an “adapter” to the application
- Creating infrastructure to support use cases
- Composing the application using hooks
- Composing the application without hooks
- Dealing with cross-cutting concerns
- Extending functionality with a new feature
- Decoupling features using events
- Overview and preliminary conclusions
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.
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! 👋
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.
Alex Bespoyasov, software engineer at 0+X, web developer since 2010.