- The main purpose of this project is to create a localized react router.
- It shows you how to utilize route guards
- It uses react-i18next package for translation
- Private route guard => protect the given route based on a token.
- Public route guard => used for public routes and authentication routes (ex: login, signup, ...etc) {if authenticated it will redirect the user to the home page}
- Restricted route guard => protect the given route based on a token, and a list of permissions (can be an array or a string).
- Restricted section => protect the given section based on a list of permissions (can be an array or a string).
- MockReduxProvider => for mocking redux provider
- MockReactIntlProvider => for mocking react-intl provider (if you are using it you need to download it)
- MockRouter => for mocking react router
- OverrideRenderOfRTL => overrides the render method of RTL with all providers
- nodeJS > 14.X.X or Docker
- Clone repo =>
git clone git@github.com:react-custom-projects/webpack-react-boilerplate.git
cd webpack-react-boilerplate
- Install dependencies =>
yarn install
- Start the development server =>
yarn start
- Clone repo =>
git clone git@github.com:react-custom-projects/webpack-react-boilerplate.git
cd webpack-react-boilerplate
- Install dependencies (required for prettier) =>
yarn install
- Start the development server =>
docker-compose up --build
Please keep in mind that environment variables configured using webpack which means that you need to re-run the corresponding environment script (yarn start, yarn run build) if you update the environment file.
This build relies on Prettier formatter to enforce a code style. And ESLint for identifying problematic patterns found in JavaScript code.
-
Setting up prettier:
1- You can find steps on how to set up prettier formatter with WebStorm/PhpStorm here.
Notes:
- It's better to use the local
node_modules
version of prettier instead of a global one. This is to avoid version conflicts (in case the globally installed version does not match with the versions specified inpackage.json
). So when setting up the file watcher when you follow the steps from the above link you can setprogram
to$ProjectFileDir$\node_modules\.bin\prettier
(warning this assumes that node_modules sits in the root of your project. This will need to change if your directory structure changes). - You will have to create file watchers for TS, TSX and SCSS files. The webpack build tools are already configured to work with
eslint
andprettier
. The only thing needed is the file watchers.
2- Follow the next steps to set up prettier and eslint on VS Code:
-
Install
prettier
plugin -
Install
eslint
plugin -
Open VS Code settings
CTRL + ,
:a- Search for
formatter
=> check Format on saveb- Search for
prettier
=> add.prettierrc
in Prettier: Config Path section && check Prettier: Require Config
3- Please refer to other tutorials if you are using a different IDE.
- It's better to use the local
- This app includes facebook, twitter and regular meta tags
- Open constants.js file and update metaInfo object
- Open src/assets/images and replace (favicon.png, metaImage.jpg) with your images but using the same name
- Generic error boundary fallback component (you can customize it)
- Cookies, local storage and sessions storage mangers to store data in the browser. (Note: the data encrypted using crypto-js package before storing it.)
- Basic mixins
(scss/generic/_mixins.scss)
- Normalize styles
(scss/generic/_normalize.scss)
- App typography styles
(scss/generic/_typography.scss)
- 4 break points
(scss/generic/_variables.scss)
In the project directory, you can run:
Runs the app in the development mode.
It will open http://localhost:3000 automatically in the browser to see your app.
All changes will be injected automatically without reloading the page.
You will see in the console the following:
- All redux store related changes
- Any of the following errors:
- Linting errors.
- Code format errors (because of prettier)
Builds the app for production to the dist
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
Serves the app on http://localhost:8080/
from the dist
folder to check the production version.
Note: Use this script only if you ran the build script yarn build
.
It allows you to analyze the bundle size.
It runs all test files.
- It runs all unit test files in
/src
directory using watch mode. - Will run all your tests once then again on every change of your source code
It runs test coverage.
Clears test cache.
- It creates a boilerplate for component, container, page, custom hook, service or reducer.