Case study 05
National-Scale Bitcoin Wallet PWA
Panda Group · 09/2017–01/2021 · Full stack developer
A React progressive web app and Django API for a national Bitcoin wallet, with exchange and BTM surfaces sharing wallet and ledger patterns.
- Form
- PWA + Django API
- Surfaces
- Wallet, exchange, BTM
- Ledger
- Postgres
Problem
A consumer wallet at national scale cannot be a native-only app and cannot treat the ledger as a private demo. People arrive from a browser. Balance, send, and receive have to survive flaky networks. Adjacent exchange and BTM products needed the same wallet primitives without copying them.
Constraints
The wallet had to work as a PWA. Server-rendered paths had to remain for environments where the client bundle was not a given. The ledger and the HTTP API had to stay consistent under concurrent use. This write-up does not name the sovereign deployment, show a wallet UI, or describe custody internals.
Architecture
A React PWA handled the consumer session: installable, chart-aware where the exchange surface needed it, and explicit about wallet state. A Django API with Postgres owned balances, transfers, and server-rendered templates for the non-SPA edge. The exchange PWA (Angular) and the BTM Vue PWA reused the same wallet-handling patterns rather than growing a second ledger. Animated purchase guides on the BTM path were presentation only; settlement stayed on the API.
Role
I built the React wallet PWA, the Django and Postgres API, and the server-rendered templates. I also shipped the exchange frontend and the BTM purchase path so the three surfaces shared wallet primitives instead of forking them.
Outcomes
- A browser-native wallet path that did not require a store install.
- One API and ledger behind wallet, exchange, and BTM surfaces.
- Server-rendered templates kept the non-SPA edge honest against the same balances.
Stack
- React
- PWA
- Django
- PostgreSQL
- Angular
- Vue
- JavaScript