# Lightning Polar
> One-click Bitcoin Lightning networks for local app development & testing
[![Build Status ](https://travis-ci.org/jamaljsr/polar.svg?branch=master )](https://travis-ci.org/jamaljsr/polar)
[![Build status ](https://ci.appveyor.com/api/projects/status/5tgo5lpede1vj0g5?svg=true )](https://ci.appveyor.com/project/jamaljsr/polar)
[![codecov ](https://codecov.io/gh/jamaljsr/polar/branch/master/graph/badge.svg )](https://codecov.io/gh/jamaljsr/polar)
## Development
### Dependencies
Polar requires that you have Docker installed to create the local networks
- On Mac & Windows, you can just install [Docker Desktop ](https://www.docker.com/products/docker-desktop )
- On Linux, you need to install [Docker Server ](https://docs.docker.com/install/#server ) and [Docker Compose ](https://docs.docker.com/compose/install/ ) separately
### Commands
| Command | Description |
| --------------- | ----------------------------------------- |
| `yarn` | install dependencies |
| `yarn dev` | run the app with react hot reloading |
| `yarn test` | run unit tests in watch mode |
| `yarn test:e2e` | run e2e tests |
| `yarn lint:all` | run typescript and eslint syntax checking |
| `yarn langs` | extract i18n language keys from code |
| `yarn pacakge` | package the app for your OS |
### Tips
- install the [import-sorter ](https://github.com/SoominHan/import-sorter ) Visual Studio Code extension for automatic import statement sorting
### Tech Stack
- [Electron ](https://github.com/electron/electron/ ): cross platform desktop app framework
- [Typescript ](https://github.com/microsoft/TypeScript ): increased productivity with a typed language
- [ReactJS ](https://github.com/facebook/react/ ): declarative UI library for JavaScript
- [Create React App ](https://github.com/facebook/create-react-app ): minimize build configuration
- [easy-peasy ](https://github.com/ctrlplusb/easy-peasy ): Redux state management without the boilerplate
- [Ant Design ](https://github.com/ant-design/ant-design/ ): don't reinvent the wheel with UI design
- [react-i18next ](https://github.com/i18next/react-i18next ): support for multiple languages (english/spanish included)
- [electron-log ](https://github.com/megahertz/electron-log ): multi-level logging to console and file
- [Prettier ](https://github.com/prettier/prettier ): keep code format consistent
- [ESLint ](https://github.com/eslint/eslint ): follow code quality best practices
- [Travis ](https://travis-ci.org ): automate builds and testing on Mac/Linux
- [AppVeyor ](https://appveyor.com ): automate builds and testing on Windows
- [Renevate Bot ](https://github.com/renovatebot/renovate ): automate dependency upgrades via GitHub bot
- [Jest ](https://github.com/facebook/jest ): delightful JavaScript testing
- [React Testing Library ](https://github.com/testing-library/react-testing-library ): React specific testing utilities
- [CodeCov ](https://codecov.io/ ): maintain quality of unit tests
- [Testcafe ](https://github.com/DevExpress/testcafe ): End-to-end is important
- [commitlint ](https://github.com/conventional-changelog/commitlint ): standardize git commit messages
- [standard-version ](https://github.com/conventional-changelog/commitlint ): automate release versioning and changelog generation