Skip to content

rantwijk/react-starter-v2

 
 

Repository files navigation

React starter v2

This project was bootstrapped with Create React App.

Features

  • styled components
  • redux
  • typescript
  • ant design
  • swagger code generator
  • localization (react-intl)

Available Scripts

In the project directory, you can run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn run generate-swagger

Generates code based on swagger definitions.
Requires a backend to be running.

If you want, you can change the backend url in the package.json
node scripts/codegen.js http://localhost:5000/api-json

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn run build

Builds the app for production to the build 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!

See the section about deployment for more information.

Authentication

Authentication is configured for Auth0 using react-simple-auth as an example.

Change authentication provider

To change the authentication provider, you have to create a new provider in src/utils/auth. This provider should implement following interface:

export interface IProvider<T> {
    buildAuthorizeUrl(): string;
    extractError(redirectUrl: string): Error | undefined;
    extractSession(redirectUrl: string): T;
    validateSession(session: T): boolean;
    getAccessToken(session: T, resourceId: string): string;
    getSignOutUrl(redirectUrl: string): string;
}

You can take a look at the Auth0Provider for an example.

The only other thing you should do, is to go to src/store/reducers/authReducer.ts and replace the Auth0IdToken by your newly created interface.

Code generation

Please use plopjs to generate pages, components & redux actions to keep code consistency.

You can do this by globally installing plop npm i -g plop and running the plop command in the root of this project.

Recommended packages

Please continue suggesting and adding interesting packages.

Possible issues

Lodash

We use lodash-webpack-plugin to reduce the bundle size and only import lodash functions which are used. For this, we only enable certain features of lodash in craco.config.js. Please change the settings there if you are experiencing issues.

About

React typescript boilerplate

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 51.0%
  • JavaScript 28.0%
  • CSS 16.5%
  • HTML 4.5%