Vipr Wallet is a modern Progressive Web App (PWA) that serves as an ecash wallet for Fedimint. It runs seamlessly on both mobile and desktop devices, enabling private and instant lightning transactions wherever you are.
This software is experimental and comes with risks:
- Current version is in beta stage with incomplete features and potential bugs
- DO NOT USE with significant amounts of ecash or in production environments
By using this wallet, you acknowledge and accept these risks.
A demo version of the wallet is available at beta.vipr.cash
Learn more about the project at vipr.cash
- lightning send
- receive tokens by paying a lightning invoice
- pay lightning invoice using nostr wallet connect
- lnurl-p support
- lightning address support
- pay to Nostr contacts
- export ecash
- import ecash
- backup wallet
- restore wallet
- pay onchain
- receive onchain
- join multiple federations
- Discover federations using nostr
- show guardian health
- show nostr votes for federation
If you want to host the wallet yourself, you can use the Docker image on Docker Hub.
docker pull ngutech21/vipr-wallet:latestRun the latest container from dockerhub locally:
docker run -d \
-p 8080:80 \
--name vipr-wallet \
ngutech21/vipr-wallet:latestRun the container locally using docker-compose:
docker compose up -dThe wallet will be available at http://localhost:8080
- This project uses Vue 3 with TypeScript
- Quasar Framework provides the UI components
- Pinia is used for state management
- Fedimint-SDK is used for interacting with the fedimint
Make sure you have the following installed:
- Node.js 24+
- pnpm 10+
- Nix with flakes enabled for running end-to-end tests locally
- Clone the repository
git clone https://github.com/ngutech21/vipr-wallet.git
cd vipr-wallet- Install pnpm
npm install -g pnpm@latest-10- Install the dependencies
pnpm install- Run the standard local quality checks
pnpm final-check- Start the app in development mode (hot-code reloading, error reporting, etc.)
pnpm dev- Run end-to-end tests locally
nix develop --accept-flake-config --command pnpm test:e2e- Use
pnpm final-checkbefore opening a pull request. It runs formatting checks, linting, type checks, unit tests, and a production dependency audit. - Use
pnpm buildto verify the production PWA build locally. - Use
pnpm build:dockerif you want to validate the container image build path used by the project. - Lighthouse CI and the main CI workflows are configured in GitHub Actions, so local checks and CI should stay close to each other.
| Command | Description |
|---|---|
pnpm dev |
Start the development server with hot reload |
pnpm dev:e2e |
Start the app on a fixed port for browser-based end-to-end work |
pnpm build |
Build the production PWA |
pnpm build:docker |
Build the Docker image locally |
pnpm lint |
Run ESLint on source files |
pnpm lint:fix |
Run ESLint and automatically fix safe issues |
pnpm format |
Format code with Prettier |
pnpm format:check |
Verify formatting without modifying files |
pnpm typecheck |
Run Vue TypeScript checks |
pnpm typecheck:pwa |
Run TypeScript checks for the PWA service worker code |
pnpm test |
Run unit tests once |
pnpm test:unit:ci |
Run unit tests in CI mode |
pnpm test:unit:ui |
Open the Vitest UI |
pnpm coverage |
Generate the unit test coverage report |
pnpm test:e2e |
Run end-to-end tests from a Nix dev shell |
pnpm test:e2e:headed |
Run Playwright tests with a visible browser |
pnpm final-check |
Run the main local verification suite before pushing changes |


