This project was based on Create React App. (#11304)
Vite-version / Unbundled Development available at vite branch (WIP)
Includes all features of CRA, with some opinionated tweaks but provide flexible configurations.
- Webpack 5 with
dynamic import(),react-refresh, modern JSX and build optimizations. - Tailwind 2+ (with opt-in, opt-out option)
- TypeScript 4
- React 17
- Router support
react-router-dom recoil+react-queryconfigurated as state management- i18n with i18next, support locale splitting
- Animation with
framer-motion - SASS (with
dart-sass), PostCSS withautoprefixer,CSS Modulesupported and optimizations. - Babel in
Stage 1with tree-shaking support forramda,date-fns - ESlint configured to work well with Prettier, Typescript, EditorConfig in multiple environment: IDE, compile
- Authentication and Authorization boilerplate
- Router boilerplate
- Global error boundary, error handler
- Cancelable request caller with
axios - Jest + Testing-library for unit/component testing, Cypress for E2E testing, MSW for API mocking
- Lintstaged & Husky for automatically lint & formatting
- VSCode specific settings, extensions & debug launch config
- Docker, docker-compose with
nginxconfig for development and deployment - Not like CRA, everything is customizable (and initially come with presets): Eslint, babel, jest, postcss, prettier, tailwind, cypress,....
- Scripts: no
eject(because everything is customizable by default), the rest of the scripts can be view inpackage.json - Supported language features: here
- Configuring supported browsers: in
.browserlistrc - Editor setup, debugger setup: in
.vscodefolder - Advanced configuration:
FAST_REFRESHoption removed (Fast Refrest is always enable)DISABLE_ESLINT_PLUGINoption removed (Eslint is always enable)ENABLE_TAILWINDCSSaddedENABLE_WDYRadded
Unfortunatelly, the project is not supported by Node v16+, due to a breaking change off v8.
git clone [email protected]:huynhducduy/react-starter-kit.git react-app
cd react-app
yarnClone with SSH is recommennded.
or Create a new repository from react-starter-kit
cp .env.example .env && vi .env for local environment, also support for staging and production environment. Local environment will be use as fallback when staging and production environment is not available.
Alias: in tsconfig.json - compilerOptions.paths. Automatically resolve in webpack, jest environment.
Further configuration can be found in root level files.
With docker: docker-compose up --build -d
Without docker: yarn start
Configure in docker-compose.yml file, default running on port 3000
Running test: yarn test
Debugging tests: yarn test:debug
Lint code & style: yarn lint
Fix code & style: yarn fix
Reinstall entire project: yarn refresh
Build image - by default will use yarn build:production: sudo docker build -t react-starter-kit .
Run container: sudo docker run --init -dit -p 3000:80 --name react-starter-kit react-starter-kit:latest
Kill and remove: (sudo docker kill react-starter-kit || true) && (sudo docker rm react-starter-kit || true)
Without docker: yarn build or yarn build:staging or yarn build:production, output is located at /build
Analyze output: yarn analyze
- Stylelint
- GraphQL - Relay/Apollo
- Server-Side Rendering (waiting for support in React v18)
- Storybook for component testing, interaction testing
- Write 2E2 tests
React.lazyis not yet available for server-side rendering