This project was bootstrapped with Create React App.
- Features
- Available Scripts
- Authentication providers
- Code generation
- Recommended packages
- Possible issues
- styled components
- redux
- typescript
- ant design
- swagger code generator
- localization (react-intl)
In the project directory, you can run:
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.
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
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
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 is configured for Auth0 using react-simple-auth
as an example.
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.
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.
Please continue suggesting and adding interesting packages.
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.