Placeholder case study: edit it in content.js
Oracle reporting modernisation
Replacing slow, manual month-end reports on a legacy Oracle system with an automated reporting service and a modern dashboard.
- Django
- Oracle
- MySQL
- PostgreSQL
- Svelte
- Client
- Manufacturing company (sample)
- My role
- Backend and database developer
- Timeline
- 10 weeks
4 hrs → 40 sec
Heaviest monthly report
22 reports
Automated and scheduled
0 downtime
During the switch-over
The problem
The company's core records sat in a ten-year-old Oracle database. Finance exported data by hand into spreadsheets, month-end reports took hours and often disagreed, and nobody dared touch the system because the original developers had left.
My approach
I left the Oracle system untouched and read from it safely. A Django service pulls the data on a schedule, cleans and reconciles it, and stores reporting-ready tables in PostgreSQL. A Svelte dashboard then serves the reports instantly. Old and new numbers ran side by side before anyone switched.
The hardest part
Trusting the numbers before retiring the spreadsheets
Finance would not accept new figures without proof. I wrote reconciliation checks that compare totals between Oracle and the new tables every night and flag any difference, and ran both systems in parallel for a full month-end cycle until the results matched to the last rupee.
How the technology solved it
Oracle
Source of truth. Queried read-only with tuned SQL so the live system is never slowed down.
MySQL
Branch-office data brought into the same pipeline through a second connector.
PostgreSQL
Reporting store with summary tables and indexes built for fast aggregation.
Django
Extraction jobs, reconciliation checks, report API and access control for finance staff.
Svelte
A responsive dashboard that replaced the emailed spreadsheets.
What I built
- Scheduled, read-only extraction from Oracle with retry and alerting
- Reconciliation checks that prove old and new totals match
- Self-serve dashboard with filters and CSV or PDF export
- Legacy MySQL branch-office data merged into the same reports
The result
Month-end close moved from days of manual work to a review of reports that are already waiting. Finance trusts the figures because every total is reconciled automatically.