explaingit

dgreegman/vaultpay

Analysis updated 2026-05-18

1GoAudience · developerComplexity · 4/5Setup · moderate

TLDR

A fictional Nigerian style digital wallet backend built to demonstrate correct, auditable money-movement engineering rather than to sign up real users.

Mindmap

mindmap
  root((vaultpay))
    What it does
      Fictional wallet infrastructure
      Wallets move mock money
      Documented payments API
    Tech stack
      Go and Fiber
      PostgreSQL
      Redis
      RabbitMQ planned
    Core design
      Append only ledger
      Row locking for safety
      Kobo integer money
    Use cases
      Study fintech backend engineering
      Learn double entry ledger design
      Portfolio project for engineers
    Audience
      Backend developers
      Fintech engineers
      Job applicants building portfolios

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Study a documented example of double entry ledger design for money systems.

USE CASE 2

Learn how to prevent double spends and duplicate charges under concurrency.

USE CASE 3

Reference how a Nigerian fintech might model held versus settled balances.

USE CASE 4

Use as a portfolio project demonstrating backend engineering discipline.

What is it built with?

GoFiberPostgreSQLRedisRabbitMQDocker

How does it compare?

dgreegman/vaultpayadvayc/wrappedaegrail/aegrail-engine
Stars111
LanguageGoGoGo
Setup difficultymoderateeasyhard
Complexity4/52/55/5
Audiencedevelopergeneralops devops

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Go 1.22+, Docker, and golang-migrate, ports 5433 and 6380 must be free or adjusted in the env file.

The README does not state a license, so terms of use are not specified.

In plain English

VaultPay is a fictional digital wallet system built as a portfolio project to show how a real Nigerian fintech company would build its backend, rather than as a product meant to sign up real users. It lets a business create wallets for its customers, move money between them, and connect payments through a documented API, but it handles no real money, no real customer data, and connects to no real bank, since every outside integration is a mock. The project's stated goal is to prove the author understands the hard problems unique to systems that move money, such as double charges from retried requests, balances that quietly drift from reality, and fraud that only shows up under adversarial use, instead of just wiring simple create, read, update, and delete endpoints to a database. Its central design rule is that no code is ever allowed to directly subtract from a balance. Instead every movement of money writes at least two entries, a debit and a credit, into an append only ledger that always nets to zero, and a wallet's balance is treated as something rebuilt from that ledger rather than a number you edit directly. Other documented engineering choices include storing money as whole number kobo or cents instead of decimals to avoid rounding drift, using row level database locking so two simultaneous transfers against the same wallet cannot both succeed if funds cannot cover both, and writing database changes together with outgoing events in the same transaction so a queue outage delays notifications instead of losing them. The design also reflects specifics of how money actually moves in Nigeria, including modeling a held or escrow balance the way the country's real instant payment network settles funds later even though a recipient sees them immediately. The system is built in Go using the Fiber web framework, PostgreSQL for its database, and Redis for caching and rate limiting only, with RabbitMQ, Prometheus, and Grafana planned for a later phase. To run it locally a developer needs Go, Docker, and the golang-migrate tool, then can start the stack with a few make commands. The README lays out a phased roadmap, with early scaffolding and core wallet features further along than later fraud detection and multi currency support, which are still planned.

Copy-paste prompts

Prompt 1
Explain why VaultPay stores money as integer kobo instead of decimal values.
Prompt 2
Walk me through how VaultPay's append only ledger keeps wallet balances accurate.
Prompt 3
Help me set up VaultPay locally using Docker and golang-migrate.
Prompt 4
Explain the difference between VaultPay's liveness and readiness health checks.
Prompt 5
Summarize VaultPay's roadmap and what phase the project is currently at.

Frequently asked questions

What is vaultpay?

A fictional Nigerian style digital wallet backend built to demonstrate correct, auditable money-movement engineering rather than to sign up real users.

What language is vaultpay written in?

Mainly Go. The stack also includes Go, Fiber, PostgreSQL.

What license does vaultpay use?

The README does not state a license, so terms of use are not specified.

How hard is vaultpay to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is vaultpay for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.