This architecture manages application state using Redux, makes it
immutable with Immer
and keeps access performant via reselect
.
For managing asynchronous flows (e.g. logging in) we use redux-saga
.
For routing, we use react-router
in combination with connected-react-router
.
We include a generator
for components, api, actions, sagas, routes and mocks.
Run yarn generate
to choose from the available generators, and automatically
add new parts of your application!
Note: If you want to skip the generator selection process,
yarn generate <generator>
also works. (e.g.yarn generate route
)
- Immer
- Reselect
- Redux-saga
- Routing
- Async/Lazy loaded Route
- Asynchronously loaded components
- Memoization
- Context
We adopted a split between stateless, reusable components called (wait for it...)
components
and stateful parent components called containers
.
See this article by Dan Abramov for a great introduction to this approach.