Giter Site home page Giter Site logo

joule-extension's Introduction

Joule, get it now at lightningjoule.com

Overview

A chrome extension that lightning-charges your browser with webln, giving you the ability to pay and use your node as an identity on the web.

WARNING: Joule is in early alpha, and should not be used for large mainnet funds

Install for Chrome Install for Brave Install for Firefox Opera coming soon

Project Layout

joule-extension/
├── src                   # All source code
│   ├── app                 # The main React app, used by the other clients
│   │   ├── index.tsx         # Entry point for the app
│   │   ├── AppRoutes.tsx     # Routes used in the popup and options clients
│   │   ├── PromptRoutes.tsx  # Routes used in the prompt client
│   │   ├── components        # All reusable components
│   │   ├── lib               # Standalone libraries, potentially split into node modules
│   │   ├── modules           # Vertical slices of business logic, mostly redux code
│   │   ├── pages             # Container components for app routes
│   │   ├── prompts           # Container components for prompts
│   │   ├── static            # Static assets that are compiled and processed
│   │   ├── store             # Redux setup and configuration
│   │   ├── style             # Global or common-use styles
│   │   ├── typings           # Module typings for TypeScript
│   │   └── utils             # Miscellanious utility functions and constants
│   ├── background_script  # Extension background script
│   ├── content_script     # Extension content script, injects inpage_script and communicates with background_script
│   ├── inpage_script      # In-page injected script, manages WebLN
│   ├── options            # Options client, full screen version of the app
│   ├── popup              # Popup client, opened by clicking icon in toolbar
│   ├── prompt             # Prompt client, opened by WebLN and BOLT-11 links
│   └── webln              # WebLN implementation, injected via inpage_script
├── static             # Static assets that don't go through any processing
├── dist-dev           # Developer builds go here, not checked into git
└── dist-prod          # Production builds go here, not checked into git

Development

  1. Run yarn install && yarn run dev
  2. Open Chrome -> More Tools -> Extensions
  3. Toggle "Developer mode" (if such a toggle exists)
  4. Click "Load unpacked"
  5. Select the joule-extension/dist-dev folder you created
  6. Get to work!

If you're also working on webln, you'll want to clone and build that repository, and run yarn link. Then come back to the joule folder and run yarn link webln.

NOTE: After making changes, you'll need to close and re-open the extension to load the latest build.

Redux DevTools:

  1. Open the extension popup or full page
  2. Right click on the background
  3. Choose Redux Devtools -> Open Remote DevTools
  4. A new window will open displaying the Redux actions list

React DevTools:

  1. Run npm install -g react-devtools
  2. Be sure to use yarn run dev to build the app
  3. Run react-devtools in a new Terminal
  4. A new window will open displaying the React vdom inspector

React Hot Reload:

  1. Run yarn run hot instead of yarn run dev

Building

To make a production build, follow these steps

  1. Run yarn build
  2. Raw files and a zip of them will be output to dist-prod

Releasing

  1. Bump the version number in package.json and static/manifest.json
  2. Create a git tag called v${version} and push it
  3. Run a build
  4. Make a new Github release, upload the build assets, write a changelog
  5. Upload the built zip to the Chrome developer dashboard, Firefox addons site, and Opera addons site

Testing

...regrettably, TBD

Contributing

Please see the Contributor Guidelines on the Wiki.

Shoutouts

  • Thanks to the MetaMask team for establishing a ton of the UX best practices for browser crypto payments.
  • Thanks to @afilini for providing a small prototype reference implementation of the extension flow.
  • Thanks to Chaincode Labs for putting together the 2018 Lightning residency, where this was born.

Pay me money pls

Tip wbobeirne on TipHub
My pubkey starts with 02458b08

joule-extension's People

Contributors

wbobeirne avatar jamaljsr avatar majestic84 avatar gambolingpangolin avatar overtorment avatar jamesob avatar prusnak avatar pjullrich avatar philippgille avatar

Stargazers

Phillip Ressler avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.