Skip to content

FindyFi/BusinessWallet

Repository files navigation

BusinessWallet

A Digital Wallet for organizations

Overview

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.

Project Structure

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

Getting Started

You can run the Business Wallet using either Docker (recommended) or directly with Node.js.

Option 1: Docker Setup (Recommended)

Prerequisites

  • Docker (v20.10 or higher)
  • Docker Compose (v2.0 or higher)

Quick Start

  1. Clone the repository and navigate to the project directory:
git clone https://github.com/FindyFi/BusinessWallet.git
cd BusinessWallet
  1. 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
  1. Start all services with a single command:

For Production:

docker compose up -d

For Development (with hot-reload):

docker compose -f docker-compose.dev.yml up
  1. Access the application:

    • Web UI: http://localhost:3000 (production) or http://localhost:5173 (development)
    • Backend API: http://localhost:3001 (both modes)
    • PostgreSQL: localhost:5432
  2. 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
  1. Stop the services:
docker compose down

To stop and remove volumes (database data):

docker compose down -v

Environment Variables

Copy .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.

Option 2: Manual Setup (Without Docker)

Prerequisites

  • Node.js (v20 or higher) — required for prebuilt Askar native binaries
  • npm (v9 or higher)
  • PostgreSQL (optional; SQLite is used by default)

Backend API

  1. Navigate to the backend directory:
cd backend
  1. Install dependencies:
npm install
  1. Set required environment variables:
export WALLET_KEY=$(openssl rand -hex 32)
  1. Start the development server:
npm run dev

The API will be available at http://localhost:3000

Test the health endpoint:

curl http://localhost:3000/health

For more detailed information about the backend API, see the backend/README.md.

Web UI

  1. Navigate to the web UI directory:
cd web-ui
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev

The application will be available at http://localhost:5173

For more detailed information about the web UI, see the web-ui/README.md.

Documentation

License

See LICENSE for details.

About

A Digital Wallet for organizations

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors