Ledger

Ledger is a spending tracking application built with offline and cloud syncing in mind.

Built with Expo on top of react native, it supports ios, android, and the web.

State management was handled by Zustand, a state management library made for react native projects, which conveniently supported Async Storage allowing persistent storage on mobile which is needed for offline use.

The code for Ledger can be found on github.

The most challenging part of the ledger project was adding both online and offline syncing that would be expected from modern mobile applications.

This was done by making changes to the items at the local database, while storing a list of changes to be done once online. As soon as the device is online, it would go through the list of changes to sync with the database completing the cycle.

Diagram showcasing ledger offline list of changes.

This method of holding a list of changes also works well for use with multiple devices, if a user makes changes on the browser, and they take their mobile device offline and make other changes, once that mobile device is back online, their changes gets reflected with the database, while bringing in incoming changes made from the browser.

Diagram showcasing ledger offline list of changes.