An enterprise electron template application showcasing - Testing strategies, Global state management, middleware support, a network layer, component library integration, localization, PWA support, route configuration, lazy loading, and Continuous integration & deployment.
-
Install dependencies using
yarn install
-
Start the electron dev server using
yarn run electron:start
-
Package the app for production using
yarn run electron:package
-
Go through the other scripts in
package.json
-
Electron configuration using main.js
Take a look at the following files
-
Typescript Configuration using tsconfig.json
Take a look at the following files
-
Global state management using Redux Toolkit
Take a look at the following files
-
Computing and getting state from the redux store using Reselect
Take a look at the following files
-
Side effects using Redux Saga
Take a look at the following files
-
API calls using Api Sauce
Take a look at the following files
-
GraphQL queries using Apollo Boost
Take a look at the following files
-
Styling components using Styled Components
Take a look at the following files
-
Reusing components from Ant design
Take a look at the following files
-
Translations using React Intl
Take a look at the following files
-
Routing is done using React Router
Take a look at the following files
-
Storybooks allows you to work on one component at a time. You can develop entire UIs without needing to start up a complex dev stack, force certain data into your database, or navigate around your application.
Take a look at the following files
-
We're using and configuring webpack to bundle our React application.
Take a look at the following files
-
The size of the bundle is analyzed using the webpack-bundle-analyzer to make sure that the bundle is lean and optimized.
Take a look at the following files
-
CI/CD using Github Actions. The CI pipeline has the following phases
- Checkout
- Install dependencies
- Lint
- Test
- Build
The CD pipeline has the following phases
- Checkout
- Install dependencies
- Build
- Deploy
Take a look at the following files
- Each push into
dev
branch will produce a alpha release - Each push into
staging
branch will produce a beta release - Each push into
master
branch will produce a prod release
These releases will also have the respective packaged electron app in it assets.
Take a look at the following files
- .github/workflows/cd-alpha-release.yml
- .github/workflows/cd-beta-release.yml
- .github/workflows/cd-latest-release.yml
-
Testing is done using the @testing-library/react.
Take a look at the following files
- @app -> app/
- @containers -> app/containers/
- @components -> app/components/
- @services -> app/services/
- @utils -> app/utils/
- @themes -> app/themes
- @images -> app/images
Take a look at the following files
Take a look at the following files
Take a look at the following files
Your commit messages have to be in this format:
type(category): description [flags]
Where type
is one of the following:
build
docs
feat
fix
others
perf
refactor
style
test
chore
ci
temp
Whereflags
is an optional comma-separated list of one or more of the following (must be surrounded in square brackets):breaking
: alterstype
to be a breaking change Andcategory
can be anything of your choice. If you use a type not found in the list (but it still follows the same format of the message), it'll be grouped underother
.