Ready to go react redux template with some predefined features you might need
- React (16.8+)
- SCSS, PostCSS, CSSO
- images
import imgSource from './images/img-source.png';
- css, scss
import './styles/styles.css'; // or import './styles/styles.scss';
- Redux
- Reselect
- Redux-saga
- Axios
- redux-first-router
- Webpack (4.29+)
- Babel 7
- Express (4.16+)
- ESLint airbnb
- Husky
npm run start
oryarn start
- default task for developing. Includes:- clean
dist
directory - build app
- build styles
- watch app changes
- clean
npm run build
oryarn build
- default task for creating production build. Includes:- clean
dist
directory - build app
- build styles
- build favicons (production mode only)
- clean
npm run build:app
oryarn build:app
- build app onlynpm run build:server
oryarn build:server
- build server onlynpm run lint
- run eslintnpm run lint:fix
- run eslint with--fix
.
├── config
│ ├── application // app specific configuration
│ ├── environment // env specific configuration
│ ├── postcss // postcss config configuration
│ └── webpack // key webpack options are declared separately
│ ├── loaders
│ ├── plugins
│ ├── resolve
│ └── rules
├── dist
│ ├── client // dist client folder
│ │ ├── css
│ │ │ └── chunks
│ │ ├── icons-41b280f93ccf5e8b4e4f0a8dbb69eaa1 // generated for production build
│ │ └── js // main dist folder for js
│ │ └── chunks // dynamic chunks
│ └── server // dist server folder
└── src
├── client
│ ├── components // common components
│ ├── pages // application pages
│ │ ├── home // example page
│ │ └── not-found // example page
│ ├── routes // routes configuration
│ ├── selectors // reselect selectors
│ │ ├── common // selectors without cross dependencies
│ │ └── composed // cross dependent selectors
│ ├── services // client specific services
│ ├── store
│ │ ├── __example //
│ │ ├── _history // TBD
│ │ ├── _middleware // store middlewares
│ │ └── pages // redux-first-router pages reducer
│ ├── styles // common styles and helpers
│ │ ├── _mixins
│ │ ├── _variables
│ │ └── partials
│ └── utils
├── common // common services to be used both for client and server sides
│ └── services
│ ├── api // basic api service
│ └── normalize // basic normalization service
└── server
└── favicon // favicon source
src
- common application source directorysrc/client
- client source directorysrc/server
- server source directorysrc/common
- shareable source directory consumed by noth client and server sides
- Every component directory contains
index.js
export file - Every dumb component has its name as
XXX.component.js
- Every smart component has its name as
XXX.container.js
- Store part directory has its name the same as name of its reducer (e.g.
xxx
) - Store part contains several files based on its purpose:
xxx.reducer
- store reducerxxx.constants
- store constantsxxx.actions
- store actionsxxx.saga
- store saga
- Selectors directory contains several subdirectories based on their purpose:
common
- common selectors either grouped by store reducers or stored as a flat listcomposed
- cross dependent selectors to be used for calculated/composed values