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.
- Host: GitHub
- URL: https://github.com/bespoyasov/explicit-design
- Owner: bespoyasov
- Created: 2023-03-31T09:57:13.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-25T14:09:28.000Z (4 months ago)
- Last Synced: 2025-03-30T12:09:06.827Z (2 months ago)
- Topics: 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
- Language: TypeScript
- Homepage:
- Size: 912 KB
- Stars: 106
- Watchers: 4
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
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)