My personal, full-fledged react starter that is also suitable for enterprise use
Go to file
Mastermindzh 5829588665 Added the possibility to override partial configs during deployments
Added default output to jest (for terminal output...)
Upgraded npm packages. Left jest on 27 because of breaking changes in 28
2022-07-25 10:13:47 +02:00
.husky reconfigured husky for the new version 2022-06-27 18:21:31 +02:00
.vscode Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
config - Updated to React 18 2022-06-27 16:41:03 +02:00
cypress - Added npm run commands to support inforitnl/front-end-build 2022-07-19 10:40:02 +02:00
public Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
scripts added cypress 2022-06-27 18:04:55 +02:00
src Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
.babelrc - Updated to React 18 2022-06-27 16:41:03 +02:00
.browserslistrc - Updated to React 18 2022-06-27 16:41:03 +02:00
.dockerignore - Updated to React 18 2022-06-27 16:41:03 +02:00
.editorconfig - Updated to React 18 2022-06-27 16:41:03 +02:00
.eslintignore - Updated to React 18 2022-06-27 16:41:03 +02:00
.eslintrc added cypress eslint config 2022-07-07 14:10:41 +02:00
.gitignore - Added npm run commands to support inforitnl/front-end-build 2022-07-19 10:40:02 +02:00
.nvmrc Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
.prettierrc.js - Updated to React 18 2022-06-27 16:41:03 +02:00
CHANGELOG.md Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
cypress.config.ts - Added npm run commands to support inforitnl/front-end-build 2022-07-19 10:40:02 +02:00
Dockerfile - Updated to React 18 2022-06-27 16:41:03 +02:00
jest.config.js Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
package-lock.json Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
package.json Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
README.md Added the possibility to override partial configs during deployments 2022-07-25 10:13:47 +02:00
tsconfig.json - Updated to React 18 2022-06-27 16:41:03 +02:00

react-starter-kit

Web project starter kit including modern tools and workflows based on create-react-app and best practices from the community. Provides a scalable base template and a good learning base. Suitable for enterprise usage

Includes:

  • Redux-toolkit
  • Vscode setup (debugging + snippets)
  • Jest, @testing-library and Cypress
  • Immer

Table of contents

Getting started

  1. npm install
  2. npm start (localhost:3000)
  3. npm test (run jest + coverage on localhost:8080)

Project structure

Only the important files are shown

.
├── .vscode # vscode setup (debug, snippets, etc)
├── config # tool configuration
├── cypress # e2e tests
├── dist # production version
├── public
├── public # directory with public files (config, icons, etc), will be copied to dist
│   ├── i18n # directory to house i18n language files
│   ├── config.js # default runtime application config
│   └── configOverride.js # default config overrides.
├── scripts # Modified default create-react-app scripts
├── src # application source
│   ├── app # redux-toolkit hooks + store
│   └── infrastructure # infrastructure code (wrappers, navigation, config file class)
├── CHANGELOG.md # update this whenever you update the application
├── Dockerfile # Dockerfile to build nginx container
├── jest.config.js # configuration for jest
├── package.json
├── README.md # keep this up to date
└── tsconfig.json

Configuration

This starter kit comes with runtime configuration out-of-the-box. It achieves this with 2 config files in the public directory: config.js and configOverrides.js. config.js is meant to be filled with a default for all of your application's runtime configurations. configOverrides.js is meant to be replaced during deployment with environment specific runtime overrides.

Using the config.ts file

To use the config you import Config from config.ts and use the typed object:

import { Config } from "../config";

import { FunctionComponent } from "react";

export const Navbar: FunctionComponent<{}> = () => {
  return <h1>{JSON.stringify(Config)}</h1>;
};

adding values

To add a value to the runtime config you have to take 2 steps:

  1. Add a type to the RuntimeConfig type in src/infrastructure/config/RunTimeConfig.ts

    type RunTimeConfig = {
      version: number;
      name: string;
      myNewKey: string;
    };
    
  2. Add a key (if required) to [public/config.js]