GoldVault
A mobile-first gold investment platform where users hold and trade Universal Gold Grams (UGG) alongside Euro balances — backed by a JWT-secured ASP.NET Core admin system.
Overview
GoldVault was an early-career fintech experiment — a full-stack gold investment platform built in 2020 across three codebases: a native Android app, an ASP.NET Core REST API, and an Angular admin panel. The ambition was real: users would hold and trade physical-gold-backed units (UGG — Universal Gold Grams) alongside Euro balances, all managed through a PIN-secured mobile interface.
The gold accounting model required building from first principles. A UGG is not a cryptocurrency and not a stock — it needed its own bidirectional conversion flow (EUR → UGG and UGG → EUR), storage fee tracking, and a back-office that let admins manage the vault inventory and approve customer profiles. The Android MVVM architecture, the JWT-secured API, and the Angular admin were built independently and wired together through a shared MySQL schema.
As a 2020 solo project it predates many of the architectural shortcuts available today. Clean MVVM with LiveData, a CQRS-flavoured .NET backend with MediatR and FluentValidation, and a role-guarded Angular SPA — all written without a senior to review the PRs.
Architecture
Reading the diagram: The Android app (MVVM, bottom-nav with Home / Search / Gold & Money / Start Transaction) communicates with the ASP.NET Core 3.1 API. A PIN-protected activation flow gates first-time access. The API owns JWT auth with refresh-token rotation, validates requests via FluentValidation, and dispatches commands through MediatR. MySQL via Pomelo EF Core holds users, EUR balances, and the UGG gold-gram ledger. The Angular 10 admin panel manages customer KYC data, UGG vault inventory, gold bar storage, and messaging.
Six things shipped,
three hard ones solved.
Key contributions
- Designed and built the native Android app — MVVM architecture with Navigation Component, PIN-protected login, and bottom-navigation for four core screens.
- Defined the gold accounting model: dual-balance portfolio tracking Euro Cash on Hand and Universal Gold Grams (UGG) as the platform's native investment unit.
- Implemented four transaction flows on mobile: Euro transfer, cash transfer, EUR → UGG purchase, and UGG → EUR liquidation.
- Built the ASP.NET Core 3.1 REST API — JWT authentication with refresh tokens, role-based access via ASP.NET Identity, and Swagger via NSwag.
- Delivered the Angular 10 back-office admin panel — customer management with legal info and transaction history, UGG vault admin, gold bar storage, alarms, and messaging.
- Connected everything to a shared MySQL database via Pomelo EF Core with soft-delete audit tracking and Serilog structured logging.
Challenges solved
- Modelling a custom gold unit (UGG) that behaves as a tradeable financial instrument — requiring bidirectional conversion flows and separate ledger accounting from EUR balances.
- Building a complete three-tier system solo in 2020 — mobile app, API, and admin panel — under early-career constraints, while maintaining clean MVVM and CQRS patterns throughout.
- Securing the back-office with JWT refresh token rotation, role guards, and HTTP interceptors without an existing in-house auth template to reference.
Gold as a digital asset in 2020 meant building the accounting model from scratch. UGG wasn't a metaphor — it was a ledger entry that had to survive conversion, storage fees, and admin overrides.
What's under the hood.
Ready to fix, build,
or scale?
30 minutes, with me personally. I'll read your system like a log file and tell you what I'd do first. No pitch deck, no sales funnel.
— Davor Majc, founder, Numen