Blockchain Services

Wallet Application

A non-custodial wallet (web and mobile) — key management the user controls, recovery flows the user can survive, UX they can actually use.

<p>This is the wallet engagement. The deliverable is a branded non-custodial wallet — web and mobile, sharing a cryptographic core — that the project's holders can actually use without losing funds. BIP-39 seed phrase generation and recovery, hardware-wallet integration where the chain supports it, transaction signing flows the user can verify before submission, and a send / receive / swap UX designed for a holder who is not a developer.</p> <p>The buyer for this page is a project that needs a branded wallet experience for their holders, not a "use MetaMask, good luck" handoff. The parent — <a href="/services/blockchain">Blockchain Services</a> — sets the four-artifact perimeter; this page is the wallet specifically. The mobile build pattern overlaps with the sibling <a href="/services/mobile-app">Mobile App Development</a> category — same engineer, same stack.</p> <h2>Non-custodial means non-custodial</h2> <p>The user owns the private key. The wallet does not. The seed phrase generation is local; the seed never leaves the device. Recovery is the user's responsibility, and the UX makes that responsibility legible — the seed phrase backup flow is not a checkbox the user can skim past on first launch. There is no "forgot my password, please reset my wallet" because there is no central authority to reset against, and the onboarding makes that clear before the wallet holds funds.</p> <h2>Web wallet</h2> <p>Built on the project's web stack (Laravel 12 + Livewire 3 + Tailwind 4 for the surrounding application, with the wallet cryptographic core in TypeScript or WebAssembly depending on the chain). Browser-extension integration where the chain's ecosystem expects it. Hardware-wallet support — Ledger, Trezor — over WebUSB or WebHID where the browser permits it.</p> <h2>Mobile wallet</h2> <p>Built on .NET 10 MAUI for iOS and Android with a shared cryptographic core. Native biometric unlock (Touch ID, Face ID, fingerprint, Windows Hello where the chain demands a Windows wallet too). Hardware-wallet integration via Bluetooth where the chain supports it. The shared codebase with the web wallet covers UX patterns and chain interaction; the platform-specific layer handles secure storage and biometrics.</p> <h2>Transaction signing</h2> <p>Every transaction is rendered for the user before signing: the recipient address, the amount, the fee, the contract call (if any) decoded into human-readable form. The user sees what they are signing, not a hex blob. Address books, recent contacts, and contact verification (ENS, .sol, or chain-specific naming services) reduce the typo-driven loss surface.</p> <h2>What I ship</h2> <ul> <li><strong>Web wallet.</strong> Built on the application stack with browser-extension and hardware-wallet integration.</li> <li><strong>Mobile wallet.</strong> .NET 10 MAUI for iOS and Android, shared cryptographic core with the web build.</li> <li><strong>BIP-39 seed generation and recovery flows.</strong> Local, never-server-touched.</li> <li><strong>Hardware-wallet integration.</strong> Ledger, Trezor, others where the chain supports them.</li> <li><strong>Transaction signing UX.</strong> Decoded calls, human-readable amounts, fee disclosure before signing.</li> <li><strong>Send / receive / swap flows.</strong> Designed for non-developer holders, with address book and contact verification.</li> <li><strong>Store submission.</strong> Apple App Store, Google Play, and Microsoft Store via the sibling mobile-app submission pages.</li> </ul> <h2>Where it fits</h2> <h3>Project-branded wallet</h3> <p>The project has shipped a coin or token; the next step is a wallet that carries the project's brand rather than a third-party wallet the holders have to be educated to use. I build the wallet on the project's brand, with the project's coin or token as the first-class citizen and other chains as secondary if scope allows.</p> <h3>Hardware-first wallet</h3> <p>The project's holder base values hardware-wallet integration. I scope the chain's hardware-wallet support (Ledger and Trezor support varies by chain) and build the wallet around hardware-first signing with a software fallback only for low-value transactions.</p> <h3>Mobile-first wallet</h3> <p>The project's holder base is mobile-first. The wallet is the entry point. I build the MAUI client first, ship to the three stores, and add the web surface as a secondary recovery path.</p> <h2>How I work</h2> <p>Discovery scopes the chain or chains, the cryptographic primitives, the hardware-wallet support, the storefront target (web, iOS, Android, Windows), and the recovery UX. Implementation runs in two-week sprints with testnet integration first, mainnet integration after the testnet pass. The principal carrying the work is described <a href="/about">on the about page</a>.</p> <h2>Engagement model</h2> <p>Discovery runs two weeks. Implementation runs six to twelve weeks depending on storefront count and hardware-wallet scope. Store submission runs in parallel with the final sprint. Handover includes the wallet on every target platform, the test suite, the runbook, and a 30-day post-launch support window. To scope a wallet, <a href="/contact">get in touch</a>.</p>
FREQUENTLY ASKED

Why MAUI for the mobile wallet instead of native Swift and Kotlin?

The shared cryptographic core. Wallets benefit enormously from having one implementation of the signing path, the seed handling, and the chain interaction — not two with subtle differences. MAUI on .NET 10 lets one engineer maintain that core across iOS, Android, Windows, and macOS, with the platform-specific layer handling biometrics and secure storage. Native is the right answer when the UX is the moat; wallet UX is conventional enough that the shared codebase is the right tradeoff.

Will the wallet support hardware-wallet signing?

Yes, where the chain supports it. Ledger and Trezor have varying chain coverage — Ethereum and Bitcoin are universally supported; some Solana programs require a specific firmware version; less-common chains may need a deeper integration. I scope hardware-wallet support against the actual chains the project ships on in discovery.

What about the seed phrase backup flow — how do you stop users from screenshotting it?

On mobile, the seed-display screen sets the FLAG_SECURE flag (Android) and disables screen recording (iOS) where the platform permits. On web, the seed is rendered in a way that browser extensions and screenshot tools have a harder time scraping, with a written warning that explicit screenshot is the user's responsibility. The honest answer is that a determined user can still capture the seed; the wallet's job is to make accidental capture much harder and intentional capture an informed choice.

RELATED

Back to Blockchain Services

Coin, marketing site, wallet, and block explorer shipped by one engineer who reads contracts and copy with the same fluency. I handle the technology; counsel handles the law.

Scope This Engagement

One principal, plan first, working code on every checkpoint.

Request Consultation