Balance and volume data from MetaTrader 5 needs to land in the platform reliably. It was running on Hangfire jobs that were hard to reason about when they failed.
I replaced them with a self-contained worker service — smaller batches, tighter sync intervals, and a dual-table architecture that keeps trading accounts and platform users in step.
Layers delivered
- schema — deliveredSQL Server tables, indexes, constraints
- stored procedure — deliveredTransactional guards, concurrency control
- repository — deliveredDapper, generic base repository
- service — deliveredDomain and application layers
- controller — not on this projectREST endpoints, auth, validation
- interface — not on this projectAngular components and state
Filled markers are the layers I personally delivered on this project.
Service
- Built a standalone .NET Worker Service to take over from the Hangfire-based jobs.
- Tuned batch sizes down and sync frequency up, trading throughput per run for faster recovery when a run fails.
- Designed a dual-table sync across trading accounts and platform identity records.
Data
- Stored procedures for balance and volume synchronisation.
- A transaction mismatch procedure that validates data quality across databases and surfaces discrepancies before they reach reporting.
Back end and data