Taska
Blockchain-backed wallet system built as event-driven microservices
Auth, wallet, blockchain and explorer services, each independent, communicating over Kafka with Redis caching and PostgreSQL via Prisma, behind nginx with a Next.js front end.
- 4 services
- Kafka events
- Prisma + Postgres
- Immutable ledger
§1
The problem
Wallet transactions need to be fast for users but tamper-evident and auditable, which a single mutable database table can't guarantee on its own.
§2
My role
Designed the service boundaries and event flow; built the services, Docker setup and front end.
§3
Architecture
§4
Key decisions
D/01
One service per concern
Authentication, wallet management, blockchain operations and the explorer deploy and scale independently.
D/02
Events between services
Transactions are published to Kafka and consumed by the blockchain service, so the wallet API stays responsive.
D/03
Redis for hot reads
Balances and recent activity are cached to keep the dashboard fast.
§5
Challenges
- Keeping wallet balances consistent with blocks written asynchronously.
- One docker compose command brings up every service, Kafka, Redis and PostgreSQL.
§6
Stack
- TypeScript
- Node.js
- Express
- PostgreSQL
- Prisma
- Kafka
- Redis
- Next.js
- Docker
Next case study
SEC Filings RAG
Ask questions about FAANG 10-K filings with retrieval-augmented generation