Skip to content
@clean-reactive

Clean Reactive Architecture

Coherent architecture and development methodology for reactive client applications

Hello, I am Clean Reactive Architecture 👋

React Angular Vue.js Jetpack Compose SwiftUI Flutter Next.js

Clean Reactive Architecture is a formalized and coherent architecture for reactive client applications - applications powered by React, Angular, Vue, Jetpack Compose, SwiftUI, or any framework based on the observer pattern.

Clean Reactive Architecture composes with what teams already use rather than replacing it.

Why it matters

  • Technical agility. The architecture supports technical agility - architectural units are small and independent, work splits along interfaces, and a change stays contained to the unit responsible for it. Agile process is only part of agile development - technical agility is the rest.

  • Shared understanding. The architecture and development methodology are formalized so that the system is understood in the same way by everyone. A developer joining a feature, a teammate picking up another person's work, or an AI agent given a task all share the same model and can implement it consistently.

  • Cross-platform portability. The architecture is the same across platforms, therefore porting is not redesigning the application but reimplementing units against the same diagram using platform-specific tools and libraries.

What's here

Samples

The samples implement the same architecture with different frameworks and libraries. The units, the boundaries do not change - only the tools used to realize them.

  • One-file React App - every architectural unit inlined in a single component, each one marked with a comment. The whole architecture on one screen, with no file structure in the way. The easiest place to start reading.
  • React App - React and RTK Query.
  • Angular App - Angular and TanStack Query.
  • Next.js App - full-stack, covering both the client and the server.
  • Flutter App - WIP

NOTE: These samples are partially decomposed, and deliberately so. Some units sit in their own files, others stay inlined in the component that uses them - each was extracted only where it earned it. This is the state a real feature sits in for most of its life, not a way station on the road to extracting everything. Reading them as a mandate to give every unit its own file from the start is the most common way to misread them. See Continuous refactoring.

Status

The architecture and development methodology are stable enough to use by application architects. Introduction guide for beginners is a work in progress. Any related discussions, issues, and contributions are welcome.

Discord

Popular repositories Loading

  1. sample-react-rtk sample-react-rtk Public

    Clean Reactive Architecture sample implemented with React and RTK Query

    TypeScript 1

  2. sample-angular-tanstack-query sample-angular-tanstack-query Public

    Clean Reactive Architecture sample implemented with Angular and TanStack Query

    TypeScript 1

  3. .github .github Public

    This repository with the profile for the Clean Reactive Architecture organization.

    1

  4. documentation documentation Public

    Architecture specification and development methodology for Clean Reactive Architecture

  5. sample-react-one-file sample-react-one-file Public

    Clean Reactive Architecture minimal sample - all architectural units in a single React component

    TypeScript

  6. sample-react-nextjs sample-react-nextjs Public

    TypeScript

Repositories

Showing 7 of 7 repositories

Top languages

Loading…

Most used topics

Loading…