Web Architecture
Data-oriented programmingย
Functional programmingย
CQRS
Changeability > Performance
Explicitness
Clean Architecture
Coding in the language of Domain
App vs UI vs Data
Declarativeness
Dependencies = DAG
Feature Cohesion
State Machine testing
Think "plugins"
1 action = 1 reducer
Data domains (indexed)
Composable normalized State
Dependent Actions
Side-effects in Middleware
ICC
Custom in-house wrappers
Snapshot testing for UI
UI state is explicit in Redux
State machine testing for logic
Store as a Database
Middlewares as Pub-Sub
Render Slots
Custom lightweight builds
Independently Connected Components
Extensible vs. ?
(independent of parent context)
Directory structure
===
state structure
1. No derived data in domains
2. Single Source of Writes
3. Represents Domain Entities
4. Indexed (byId, byOrder)
Think "a table in relational DB"
1. Derived Data is in selectors
2. Action is handled by only one reducer
3. Actions have domain-specific names
4. Dependent actions
Read (domain - domain) dependencies
Write (domain->domain) relationships
Entities = UI/App/Data domains
Use cases = App transactions
Presenters = Connectors (queries)
Controllers = Connectors (actions)
Ext. interfaces = UI / tests
๐ First Normal Form
๐ Data Domain
๐ CQRS Explained
๐ Statecharts