Bump is an Android app for sending and receiving crypto with a phone tap.
It brings together a wallet, a merchant checkout flow, human-readable ENS names, and simple payment records in one product. The goal is straightforward: make onchain payments feel closer to contactless payments people already understand.
Bump is built around a few simple product ideas:
- Tap to pay instead of copying addresses or scanning codes
- Use an ENS name instead of a wallet string
- Let merchants create a quick checkout from the same app
- Keep a readable record of completed payments
In the app, a user can log in, get a wallet, claim a *.bump.eth name, receive money, pay another user, or run a merchant checkout flow. There is also an optional privacy flow for merchant payments backed by the BitGo service in this repo.
- Sign in with email or Google
- Provision an embedded wallet and smart wallet
- View demo balances for
USDCandUSDT - Send and receive payments from the app
- Claim a
*.bump.ethname during onboarding - Save payment preferences to ENS
- Use a name people can remember instead of a long address
- Add items in a POS-style screen
- Create a payment request
- Let the customer tap and pay
- Track the payment through confirmation
- Sync completed transactions into a Fileverse-backed ledger
- Keep a simple, readable history of what was sent or received
- Open the app and sign in.
- Let the wallet finish setting up.
- Claim an ENS name.
- Create a merchant checkout or open a receive flow.
- Tap from the payer device to complete the payment.
- Show the confirmed transaction and updated history.
| Layer | Stack |
|---|---|
| App | Expo 55, React Native 0.83, TypeScript |
| Auth and wallet | Privy |
| Network | Base Sepolia |
| Tokens | USDC, USDT |
| Identity | ENS |
| Records | Fileverse |
| Merchant privacy flow | BitGo sidecar service |
| Platform | Android only |
- Node.js 18+
- npm
- Android Studio with an emulator or Android device
npm installThis repo already includes legacy-peer-deps=true in .npmrc for web3 dependency compatibility.
cp .env.example .envFill in the values below:
| Variable | Required | Purpose |
|---|---|---|
EXPO_PUBLIC_PRIVY_APP_ID |
Yes | Privy app id |
EXPO_PUBLIC_PRIVY_CLIENT_ID |
Yes | Privy client id |
EXPO_PUBLIC_FILEVERSE_API_URL |
Optional | Fileverse API base URL |
EXPO_PUBLIC_FILEVERSE_API_KEY |
Optional | Fileverse API key |
EXPO_PUBLIC_BITGO_API_URL |
Optional | BitGo merchant API base URL |
If you deploy the BitGo backend to Railway, use the generated public service URL directly, for example:
EXPO_PUBLIC_BITGO_API_URL=https://your-bitgo-api.up.railway.appDo not append /api/bitgo here. The app adds the API path itself.
npm startnpm run androidIf the Android project needs to be generated first:
npm run prebuildBump is built for Android. The repo still includes Expo ios and web scripts, but Android is the supported product target here.
The BitGo service is only needed for the merchant privacy flow.
cd services/bitgo-api
npm install
npm run devMore setup details are in services/bitgo-api/README.md.
| Path | Purpose |
|---|---|
app/ |
App screens and routes |
components/ |
Shared UI components |
constants/ |
Theme values and app constants |
lib/ |
Wallet, ENS, NFC, payment, and record logic |
services/bitgo-api/ |
Optional merchant privacy backend |
packages/contracts/ |
Contract workspace |
app/_layout.tsxsets up the app shell and route stack.app/login.tsxhandles sign-in.app/ens-onboarding.tsxhandles ENS setup.app/receive.tsxandapp/pay-nfc.tsxcover tap-based payment flows.app/pos-terminal.tsxprovides the merchant POS flow.lib/fileverse/ledger.tsstores payment records in Fileverse.