Skip to content

Commit 36840a1

Browse files
authored
docs: standardize README following org template (#87)
1 parent ef3bc36 commit 36840a1

File tree

1 file changed

+109
-33
lines changed

1 file changed

+109
-33
lines changed

README.md

Lines changed: 109 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,26 @@ A Model-View-Update (MVU) pattern implementation for Blazor.
1616

1717
---
1818

19-
## 📝 Table of Contents
20-
21-
* [Introduction](#-introduction)
22-
* [Motivation](#-motivation)
23-
* [Features](#-features)
24-
* [Roadmap](#️-roadmap)
25-
* [Installation](#-installation)
26-
* [Usage](#-usage)
27-
* [Running the Tests](#-running-the-tests)
28-
* [Contributing](#-contributing)
29-
* [License](#-license)
30-
* [Contact](#-contact)
31-
* [Acknowledgements](#-acknowledgements)
32-
* [Contributors](#-contributors)
33-
34-
## 📖 Introduction
19+
## Table of Contents
20+
21+
* [Introduction](#introduction)
22+
* [The Problem](#the-problem)
23+
* [The Solution](#the-solution)
24+
* [Features](#features)
25+
* [Tech Stack](#tech-stack)
26+
* [Roadmap](#roadmap)
27+
* [Installation](#installation)
28+
* [Usage](#usage)
29+
* [Architecture](#architecture)
30+
* [Project Structure](#project-structure)
31+
* [Running the Tests](#running-the-tests)
32+
* [Stats](#stats)
33+
* [Contributing](#contributing)
34+
* [License](#license)
35+
* [Contact](#contact)
36+
* [Acknowledgements](#acknowledgements)
37+
38+
## Introduction
3539

3640
**BlazorMVU** is a library that implements the Model-View-Update (MVU) pattern for Blazor. It provides a structured way to organize your Blazor components and manage their state, making your code more understandable and easier to maintain.
3741

@@ -40,19 +44,19 @@ A Model-View-Update (MVU) pattern implementation for Blazor.
4044
Demo: This Blazor project is deployed on [GitHub Pages](https://atypical-consulting.github.io/BlazorMVU/)
4145

4246

43-
## 💡 Motivation
47+
## The Problem
4448

4549
The Elm architecture, or Model-View-Update (MVU), is a simple yet powerful pattern for structuring applications. It has gained popularity due to its simplicity, maintainability, and robustness. However, despite its advantages, the Elm architecture has not been widely adopted in the Blazor community.
4650

47-
Blazor, as a framework, is flexible and allows for various design patterns to be implemented, including MVU. However, there hasn't been a straightforward way to implement the Elm architecture in Blazor - until now.
51+
Blazor, as a framework, is flexible and allows for various design patterns to be implemented, including MVU. However, there hasn't been a straightforward way to implement the Elm architecture in Blazor — leaving developers to manage complex component state with ad-hoc patterns that are hard to test and reason about.
4852

49-
The motivation behind BlazorMvu is to bring the benefits of the Elm architecture to the Blazor community. By providing a library that implements the MVU pattern, we aim to make it easier for developers to structure their Blazor applications in a way that is easy to understand, maintain, and test.
53+
## The Solution
5054

51-
We believe that the Elm architecture can greatly improve the developer experience when building Blazor applications. By reducing the complexity associated with state management and UI updates, developers can focus more on the business logic of their applications, leading to more robust and reliable software.
55+
**BlazorMVU** brings the benefits of the Elm architecture to the Blazor community. By providing a library that implements the MVU pattern, we make it easier for developers to structure their Blazor applications in a way that is easy to understand, maintain, and test.
5256

53-
We hope that BlazorMvu will serve as a valuable tool for the Blazor community and contribute to the growth and maturity of Blazor as a framework for building web applications.
57+
By reducing the complexity associated with state management and UI updates, developers can focus more on the business logic of their applications, leading to more robust and reliable software.
5458

55-
## 📌 Features
59+
## Features
5660

5761
### Core Features
5862
* **MVU Pattern Implementation** - Full Model-View-Update architecture for Blazor
@@ -89,7 +93,17 @@ We hope that BlazorMvu will serve as a valuable tool for the Blazor community an
8993
* Unit tests using BUnit and xUnit v3
9094
* Shouldly assertions
9195

92-
## 🗺️ Roadmap
96+
## Tech Stack
97+
98+
| Layer | Technology |
99+
|-------|-----------|
100+
| Runtime | .NET 9.0 (SDK 10.0) |
101+
| UI Framework | Blazor (Razor Components) |
102+
| Language | C# 12 |
103+
| Testing | xUnit v3 + bUnit + Shouldly |
104+
| Build | Nuke Build |
105+
106+
## Roadmap
93107

94108
BlazorMVU is actively maintained and targeting **.NET 10** (already running on SDK 10.0.x). Upcoming improvements:
95109

@@ -99,13 +113,13 @@ BlazorMVU is actively maintained and targeting **.NET 10** (already running on S
99113
- **Blazor United** — Full support for Blazor Web App (SSR + interactive) hybrid rendering modes
100114
- **Performance Benchmarks** — BenchmarkDotNet suite comparing MVU vs standard Blazor component patterns
101115

102-
> 💡 **Want to contribute?** Pick any roadmap item and open a PR. See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
116+
> **Want to contribute?** Pick any roadmap item and open a PR. See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
103117
104118
## Stats
105119

106120
![Alt](https://repobeats.axiom.co/api/embed/26eb4f8ccaa87d22a857066599225c9f542a4070.svg "Repobeats analytics image")
107121

108-
## 📥 Installation
122+
## Installation
109123

110124
Clone the repository and build the project:
111125

@@ -115,7 +129,7 @@ cd BlazorMvu
115129
dotnet build
116130
```
117131

118-
## 📚 Usage
132+
## Usage
119133

120134
### Basic Usage
121135

@@ -247,33 +261,95 @@ Debugger?.GoForward();
247261
RestoreFromDebugger();
248262
```
249263

250-
## 🚀 Running the Tests
264+
## Architecture
265+
266+
The MVU (Model-View-Update) pattern creates a unidirectional data flow:
267+
268+
```
269+
┌─────────────────────────────────────┐
270+
│ │
271+
▼ │
272+
┌───────────┐ │
273+
│ Model │ (immutable state) │
274+
└─────┬─────┘ │
275+
│ │
276+
▼ │
277+
┌───────────┐ │
278+
│ View │ (Blazor Razor component) │
279+
└─────┬─────┘ │
280+
│ user interaction │
281+
▼ │
282+
┌───────────┐ │
283+
│ Message │ (discriminated union) │
284+
└─────┬─────┘ │
285+
│ │
286+
▼ │
287+
┌───────────┐ ┌───────────┐ │
288+
│ Update │────▶│ Cmd │─── side ───┘
289+
│ (pure fn) │ │ (effects) │ effects
290+
└───────────┘ └───────────┘ return Msg
291+
```
292+
293+
- **Model** -- An immutable record representing component state
294+
- **View** -- A Blazor Razor component that renders the model
295+
- **Message** -- A discriminated union (abstract record) describing what happened
296+
- **Update** -- A pure function: `(Msg, Model) -> (Model, Cmd<Msg>)`
297+
- **Cmd** -- Declarative side effects (async, delay, batch) that produce new messages
298+
299+
### Project Structure
300+
301+
```
302+
BlazorMVU/
303+
├── src/
304+
│ ├── BlazorMVU.Core/ # Library: base components, commands, subscriptions
305+
│ │ ├── Cmd.cs # Command types (OfTask, OfMsg, Batch, Delay)
306+
│ │ ├── Sub.cs # Subscription types (Timer, Timeout, Custom)
307+
│ │ ├── Middleware.cs # Dispatch pipeline interceptors
308+
│ │ ├── MvuComponent.cs # Base component classes
309+
│ │ ├── MvuResult.cs # Functional result type
310+
│ │ ├── StatePersistence.cs # localStorage/sessionStorage integration
311+
│ │ └── TimeTravel.cs # Time-travel debugging support
312+
│ ├── BlazorMVU.Demo/ # Demo Blazor WebAssembly app
313+
│ │ ├── Components/ # Example MVU components (Counter, Todo, etc.)
314+
│ │ ├── Pages/ # Demo pages
315+
│ │ └── wwwroot/ # Static assets
316+
│ └── BlazorMVU.Tests/ # Unit tests (xUnit v3 + bUnit)
317+
├── build/ # Nuke build scripts
318+
├── assets/ # Documentation images
319+
└── BlazorMVU.sln # Solution file
320+
```
321+
322+
## Running the Tests
251323

252324
Tests are located in the `BlazorMvu.Tests project`. You can run them using the .NET Core CLI:
253325

254326
```bash
255327
dotnet test
256328
```
257329

258-
## 🤝 Contributing
330+
## Contributing
259331

260332
Contributions are welcome! Please read the [CONTRIBUTION GUIDELINES](https://github.com/Atypical-Consulting/BlazorMVU/blob/main/CONTRIBUTING.md) first.
261333

262-
## 📜 License
334+
## License
263335

264336
This project is licensed under the terms of the MIT license. If you use this library in your project, please consider adding a link to this repository in your project's README.
265337

266338
This project is maintained by [Atypical Consulting](https://www.atypical.consulting/). If you need help with this project, please contact us from this repository by opening an issue.
267339

268-
## 📬 Contact
340+
## Contact
269341

270342
You can contact us by opening an issue on this repository.
271343

272-
## 🙌 Acknowledgements
344+
## Acknowledgements
273345

274346
* [All Contributors](../../contributors)
275347
* [Atypical Consulting](https://www.atypical.consulting/)
276348

277-
## ✨ Contributors
349+
## Contributors
350+
351+
[![Contributors](https://contrib.rocks/image?repo=Atypical-Consulting/BlazorMVU)](https://github.com/Atypical-Consulting/BlazorMVU/graphs/contributors)
352+
353+
---
278354

279-
[![Contributors](https://contrib.rocks/image?repo=Atypical-Consulting/BlazorMVU)](http://contrib.rocks)
355+
Built with care by [Atypical Consulting](https://atypical.garry-ai.cloud) — opinionated, production-grade open source.

0 commit comments

Comments
 (0)