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.
Pripravljeni popraviti, zgraditi
ali skalirati?
30 minut, z mano osebno. Preberem vaš sistem kot dnevniško datoteko in povem, kaj bi naredil najprej. Brez prezentacij, brez prodajnega lijaka.
— Davor Majc, ustanovitelj, Numen