- Send & Receive eCash (XEC) and eTokens
- Import existing wallets
- Create and manage multiple wallets
- Create new eTokens with token icons
- Send and receive airdrops
- Public and encrypted messaging
Note that some Cashtab dependencies are pulled locally from the monorepo. These dependencies must be prepared before running npm install
for Cashtab.
ecash-lib-wasm
(dependency ofecash-lib
)ecash-lib
ecashaddrjs
ecash-script
chronik-client
mock-chronik-client
(for tests)
Please refer to the build instructions in each of these modules in the monorepo.
cd cashtab/
npm install
npm start
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
Existing functions that are impacted by your diff must be regression tested to ensure no unintended behavior. For example, if you're adding a function to facilitate One To Many XEC transactions, you must test that the existing One to One XEC transactions work as intended.
Where applicable, add unit tests for new functions created into the corresponding *.test.js files and they will get picked up as part of the unit test suite.
Run the tests in watch mode (interactive):
npm test
Run the tests and generate a coverage report (non-interactive):
npm run test:coverage
You can then browse the HTML coverage report by opening the
coverage/lcov-report/index.html
file in your web browser.
Once your unit tests have passed successfully, execute the test plan outlined in your diff via manual testing of your new Cashtab feature.
This includes:
- testing across Chrome and Firefox browsers to pick up any browser specific issues
- testing via the Extension plugin (see Browser Extension below) to pick up on any extension specific issues
Ensure the latest feature functions correctly in a mobile setting and dimension. Start by updating the build folder with your changes included.
npm run build
Then create a new site on Netlify by choosing to "Deploy manually" and dragging in the /cashtab/build folder. Your diff will now be accessible via [projectname].netlify.app, which you can load up on your iOS or Android mobile devices for testing.
If your diff is complex in nature, then consider potential edge cases which may not get picked up through the testing approaches above.
This includes but is not limited to:
- interactions with fresh new wallets with no transaction history
- interactions with wallets which have old transactions relevant to the diff
- interactions with applications outside of Cashtab such as ElectrumABC or outputs generated by custom nodejs scripts.
In the project directory, run:
npm run build
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
npm run extension
- Open Chrome or Brave
- Navigate to
chrome://extensions/
(orbrave://extensions/
) - Enable Developer Mode
- Click "Load unpacked"
- Select the
extension/dist
folder that was created withnpm run extension
A web app can request an extension user's active address. For an example implementation, please review the GetAddress.tsx
component (and its associated README.md
) in /web/cashtab-components
.
npm install
docker-compose build
docker-compose up
Navigate to localhost:8080
to see the app.
Cashtab accepts multiple instances of chronik
as its backend. Update the chronikUrls
array in src/components/Common/Ticker.js
to change your chronik server or add additional redundant backups.
chronikUrls: ['https://chronik.fabien.cash', 'https://chronik.be.cash/xec'],
Cashtab will start with the first API in your array. If it receives an error from that API, it will try the next one.