This boilerplate 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, containers, sagas, routes and selectors.
Run npm run 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,
npm run generate <generator>
also works. (e.g.npm run generate container
)
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.