NOTICE: Joule is no longer being actively developed. You can find other WebLN browser extensions that are actively maintained in the WebLN documentation. This repository now primarily serves as a learning resource for aspiring WebLN developers. Thanks for the support.
A browser 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 no longer acitvely developed, and should not be used for large mainnet funds
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
yarn install && yarn run dev
joule-extension/dist-dev
folder you createdIf 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:
React DevTools:
npm install -g react-devtools
yarn run dev
to build the appreact-devtools
in a new TerminalReact Hot Reload:
yarn run hot
instead of yarn run dev
To make a production build, follow these steps
yarn build
dist-prod
package.json
and static/manifest.json
and commit it to developv${version}
and push ityarn build:docker && cd dist-docker && gpg --output manifest-[version].wbobeirne.sig --detach-sig manifest.txt
manifest-[version].txt
from the release and verify it with the signature you just made
gpg --verify manifest-[version].wbobeirne.sig manifest-[version].txt
...regrettably, TBD
Please see the Contributor Guidelines on the Wiki.