A boilerplate for Scalable Cross-Platform Desktop Apps based on Electron, React, Redux, React Router, Webpack and React Hot Loader for rapid application development (HMR).





[![Build Status][travis-image]][travis-url] [![Appveyor Build Status][appveyor-image]][appveyor-url] [![Dependency Status][david_img]][david_site] [![DevDependency Status][david_img_dev]][david_site_dev] [![Github Tag][github-tag-image]][github-tag-url] [![Join the chat at https://gitter.im/electron-react-boilerplate/Lobby](https://badges.gitter.im/electron-react-boilerplate/Lobby.svg)](https://gitter.im/electron-react-boilerplate/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![OpenCollective](https://opencollective.com/electron-react-boilerplate/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/electron-react-boilerplate/sponsors/badge.svg)](#sponsors)
![Electron Boilerplate Demo](https://cloud.githubusercontent.com/assets/3382565/10557547/b1f07a4e-74e3-11e5-8d27-79ab6947d429.gif)
## Install - **If you have installation or compilation issues with this project, please see [our debugging guide](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400)** First, clone the repo via git: ```bash git clone --depth 1 --single-branch --branch master https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name ``` And then install the dependencies with yarn. ```bash $ cd your-project-name $ yarn ``` ## Run Start the app in the `dev` environment. This starts the renderer process in [**hot-module-replacement**](https://webpack.js.org/guides/hmr-react/) mode and starts a webpack dev server that sends hot updates to the renderer process: ```bash $ yarn dev ``` If you don't need autofocus when your files was changed, then run `dev` with env `START_MINIMIZED=true`: ```bash $ START_MINIMIZED=true yarn dev ``` ## Packaging To package apps for the local platform: ```bash $ yarn package ``` To package apps for all platforms: First, refer to the [Multi Platform Build docs](https://www.electron.build/multi-platform-build) for dependencies. Then, ```bash $ yarn package-all ``` To package apps with options: ```bash $ yarn package --[option] ``` To run End-to-End Test ```bash $ yarn build-e2e $ yarn test-e2e # Running e2e tests in a minimized window $ START_MINIMIZED=true yarn build-e2e $ yarn test-e2e ``` :bulb: You can debug your production build with devtools by simply setting the `DEBUG_PROD` env variable: ```bash DEBUG_PROD=true yarn package ``` ## CSS Modules This boilerplate is configured to use [css-modules](https://github.com/css-modules/css-modules) out of the box. All `.css` file extensions will use css-modules unless it has `.global.css`. If you need global styles, stylesheets with `.global.css` will not go through the css-modules loader. e.g. `app.global.css` If you want to import global css libraries (like `bootstrap`), you can just write the following code in `.global.css`: ```css @import '~bootstrap/dist/css/bootstrap.css'; ``` ## SASS support If you want to use Sass in your app, you only need to import `.sass` files instead of `.css` once: ```js import './app.global.scss'; ``` ## Static Type Checking This project comes with Flow support out of the box! You can annotate your code with types, [get Flow errors as ESLint errors](https://github.com/amilajack/eslint-plugin-flowtype-errors), and get [type errors during runtime](https://github.com/codemix/flow-runtime) during development. Types are completely optional. ## Dispatching redux actions from main process See [#118](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118) and [#108](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108) ## How to keep your project updated with the boilerplate If your application is a fork from this repo, you can add this repo to another git remote: ```sh git remote add upstream https://github.com/electron-react-boilerplate/electron-react-boilerplate.git ``` Then, use git to merge some latest commits: ```sh git pull upstream master ``` ## Maintainers - [Vikram Rangaraj](https://github.com/vikr01) - [Amila Welihinda](https://github.com/amilajack) - [C. T. Lin](https://github.com/chentsulin) - [Jhen-Jie Hong](https://github.com/jhen0409) ## Backers Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/electron-react-boilerplate#backer)] ## Sponsors Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/electron-react-boilerplate#sponsor)] ## License MIT © [Electron React Boilerplate](https://github.com/electron-react-boilerplate) [npm-image]: https://img.shields.io/npm/v/electron-react-boilerplate.svg?style=flat-square [github-tag-image]: https://img.shields.io/github/tag/electron-react-boilerplate/electron-react-boilerplate.svg [github-tag-url]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/releases/latest [travis-image]: https://travis-ci.com/electron-react-boilerplate/electron-react-boilerplate.svg?branch=master [travis-url]: https://travis-ci.com/electron-react-boilerplate/electron-react-boilerplate [appveyor-image]: https://ci.appveyor.com/api/projects/status/github/electron-react-boilerplate/electron-react-boilerplate?svg=true [appveyor-url]: https://ci.appveyor.com/project/electron-react-boilerplate/electron-react-boilerplate/branch/master [david_img]: https://img.shields.io/david/electron-react-boilerplate/electron-react-boilerplate.svg [david_site]: https://david-dm.org/electron-react-boilerplate/electron-react-boilerplate [david_img_dev]: https://david-dm.org/electron-react-boilerplate/electron-react-boilerplate/dev-status.svg [david_site_dev]: https://david-dm.org/electron-react-boilerplate/electron-react-boilerplate?type=dev