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 — deliveredTables, relationships, indexes, and constraints
- stored procedure — deliveredTransactional guards and concurrency control
- repository — deliveredData access and persistence boundary
- service — deliveredBusiness rules and application logic
- controller — not on this projectAPI endpoints, auth, and validation
- interface — not on this projectComponents, state, and user interaction
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