DEV3 Technologies home

DEV3 Developer Forum

How we built the DEV3 Plan Pro: a multi-currency ledger that never rewrites history

dev3 ·

Plan Pro puts personal money, company books and work planning in one Next.js app, with workspaces as the unit of everything.

Stack: Next.js 15 (App Router), React 19 and MongoDB.

Decisions that mattered

  • Every transaction stores three amounts: the original, the account amount and the base amount, with the day's exchange rate frozen. Reports therefore do not change when rates move later.
  • Loans produce amortisation schedules (reducing balance or flat rate) and post principal and interest to the ledger. The forecast projects 90 days of cash with a Monte Carlo range.
  • Trip expenses split equally, by shares, by percentage or exactly, and each person's share posts to their own books.
  • Invoices, payroll, expense claims and company debt post to the same ledger, so the statements come from one source.
  • Sign-in is checked by the app's own routes, which issue a single-use two-minute ticket to the session layer so unverified accounts cannot skip two-step sign-in. Rate limits live in MongoDB.
  • A service worker and an IndexedDB queue keep it usable offline.

Limits: six currencies are supported (INR, USD, EUR, AED, JPY, KRW), and the public demo is read-only with fictional data.

Trade-off we chose: freezing rates favours stable reports over restating history.

How do you store multi-currency amounts? We would like your view.

#nextjs#mongodb#finance#case-study

0

0 replies

No replies yet. Know the answer? Write the first one below.

Your reply

Every post is reviewed by DEV3 before it appears. Usually reviewed within 24 hours.

Markdown supported. Use ``` for code blocks. Images are not allowed.