Spend control for Nigeria's informal micro-businesses — issue capped virtual cards to staff, freeze instantly, see spend live. Built on BMONI. Hackathon build for BMONI "Hack the Future."
# StaffPurse
> Spend control for Nigeria's informal micro-businesses — issue capped virtual cards to staff, freeze instantly, see spend live.
> Built on **BMONI** for the "Hack the Future" Hackathon.
StaffPurse allows business owners to instantly issue secure virtual spend cards to their staff without the friction of formal business registration or complex multi-tier banking approvals.
By leveraging the BMONI Embedded SDK and Smart Wallets, StaffPurse owners retain complete self-custody of their main balance while instantly delegating capped NGN spending power to their team.
---
## 🛠 Tech Stack
- **Frontend:** Flutter (Mobile only, enforced by hardware keystore requirements)
- **State Management:** Riverpod
- **Backend / Database:** Supabase (PostgreSQL)
- **Infrastructure / Finance:**
- `bmoni_embedded_sdk` (Hardware secure enclave Keystore & EIP-191 signing)
- `bmoni_embedded_wallets_cards` (Card Widgets)
- `bkey_uikit` (BMONI Design System & Typography)
---
## 🚀 Getting Started
Because StaffPurse relies on the BMONI Embedded SDK which interacts directly with the **Android Keystore** and **iOS Secure Enclave**, this application **cannot be run on Web or Desktop**. You must run it on a physical device or a mobile emulator.
### 1. Prerequisites
- Flutter SDK (v3.13+)
- Android Studio (for the Android Emulator) or Xcode
- A Supabase Project
- A BMONI Sandbox API Key
### 2. Environment Setup
Create or update `lib/env.dart` with your Sandbox and Database keys:
```dart
class Env {
static const String supabaseUrl = '
your_project.supabase.co';
static const String supabaseAnonKey = 'eyJ...';
static const String bmoniBaseUrl = '
api.sandbox.bmoni.com';
static const String bmoniApiKey = 'pk_...';
}
```
### 3. Database Schema
Push the Supabase schema directly to your live project:
```bash
supabase db push
```
*(This sets up the `business`, `staff_member`, `card_assignment`, and `transaction_cache` tables).*
### 4. Run the App
Connect your Androi …