Skip to content
All work

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
A smartphone on a white desk showing a payment card screen in a finance app
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.

Sofia AlmeidaCTO, Ledgerline