A Digital Wallet for organizations
Business Wallet is a digital wallet system for organizations that enables them to issue, store, share, and request verifiable credentials and documents. It serves as a versatile communication tool supporting W3C Verifiable Credentials, OpenID4VC protocols, and registered delivery services.
The backend is built on Credo (AC-0013), an open-source TypeScript framework by the OpenWallet Foundation, which provides SD-JWT VC issuance, DID management, and key management via Aries Askar.
BusinessWallet/
├── backend/ - Node.js + TypeScript REST API (Credo-based VC operations)
├── web-ui/ - React + TypeScript web application
├── architecture.md - System architecture and design decisions
├── requirements.md - Requirements specification
├── docker-compose.yml - Production Docker Compose
└── docker-compose.dev.yml - Development Docker Compose
You can run the Business Wallet using either Docker (recommended) or directly with Node.js.
- Docker (v20.10 or higher)
- Docker Compose (v2.0 or higher)
- Clone the repository and navigate to the project directory:
git clone https://github.com/FindyFi/BusinessWallet.git
cd BusinessWallet- Copy the environment file and configure secrets:
cp .env.example .env
# Edit .env and set WALLET_KEY to a strong random value:
# openssl rand -hex 32- Start all services with a single command:
For Production:
docker compose up -dFor Development (with hot-reload):
docker compose -f docker-compose.dev.yml up-
Access the application:
- Web UI:
http://localhost:3000(production) orhttp://localhost:5173(development) - Backend API:
http://localhost:3001(both modes) - PostgreSQL:
localhost:5432
- Web UI:
-
Test the backend:
# Health check
curl http://localhost:3001/health
# Issue an employee credential
curl -X POST http://localhost:3001/credentials/employee \
-H "Content-Type: application/json" \
-d '{"firstName":"Jane","lastName":"Doe","jobTitle":"Engineer","startDate":"2024-01-15"}'
# Get VC Type Metadata
curl http://localhost:3001/.well-known/vct/employee- Stop the services:
docker compose downTo stop and remove volumes (database data):
docker compose down -vCopy .env.example to .env and customize as needed:
cp .env.example .env| Variable | Required | Default | Description |
|---|---|---|---|
WALLET_KEY |
Yes | — | Master key for the Askar wallet. Use openssl rand -hex 32. |
WALLET_ID |
No | business-wallet |
Wallet store identifier. |
DB_PASSWORD |
No | changeme |
PostgreSQL password. |
EMPLOYEE_VCT_URI |
No | Example URI | URI for employee credential type metadata. |
- Node.js (v20 or higher) — required for prebuilt Askar native binaries
- npm (v9 or higher)
- PostgreSQL (optional; SQLite is used by default)
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Set required environment variables:
export WALLET_KEY=$(openssl rand -hex 32)- Start the development server:
npm run devThe API will be available at http://localhost:3000
Test the health endpoint:
curl http://localhost:3000/healthFor more detailed information about the backend API, see the backend/README.md.
- Navigate to the web UI directory:
cd web-ui- Install dependencies:
npm install- Start the development server:
npm run devThe application will be available at http://localhost:5173
For more detailed information about the web UI, see the web-ui/README.md.
- Architecture - System architecture and design decisions
- Requirements - Detailed requirements and specifications
- Backend README - Backend API, Credo integration, and configuration
- Contributing - Guidelines for contributing to the project
See LICENSE for details.