LedgerlineWeb app
A real-time finance app that loads in under a second
A rebuild of a finance dashboard and mobile app used by 3,000 businesses, moving from nightly reports to live balances.
- Client
- Ledgerline
- Industry
- Fintech
- Role
- Lead full stack engineer
- Year
- 2025
- Duration
- 5 months
Built with
- TypeScript
- Next.js
- PostgreSQL
- Redis
- WebSockets
Scope
- Architecture
- Frontend
- Backend
- Performance

- Median dashboard load, down from 12 seconds
- 0.8s
- Support tickets about performance
- -70%
- Balances updated seconds after each transaction
- Live
The challenge
Ledgerline's customers checked their cash position every morning, but the dashboard took twelve seconds to load and the numbers were already a day old. Slow pages were the top support complaint, and the original codebase had become hard to change safely.
The approach
I started by profiling the existing app and found most of the time went into a handful of unindexed queries and a client that fetched everything up front.
- Rebuilt the data layer around incremental aggregates in PostgreSQL, refreshed as transactions arrive instead of once a night.
- Streamed balance changes to the browser over WebSockets, with Redis fanning out updates across servers.
- Moved the interface to Next.js with server rendering and route-level code splitting, so the first view needs a fraction of the JavaScript.
Every change shipped behind a feature flag and was checked against the old reports for two weeks before we switched over.
The outcome
The dashboard now loads in 0.8 seconds and shows balances that are seconds old instead of a day. Support tickets about performance dropped by 70%, and the team ships features weekly instead of monthly.
Elena rebuilt our dashboard without a single day of downtime. She explained every trade-off in plain language, and the result is now the fastest part of our product.