Developer Journal

Building in Public

Follow our journey building a local-first financial operating system. Raw thoughts, technical decisions, and lessons learned.

Day 17: Money Speaks Many Languages

Building multi-currency support with explicit, user-controlled exchange rates and view-layer-only conversion.

multi-currencyexchange-rateslocal-firsttransparencyconversion

Day 16: Intent Meets Reality

Building budgets as derived intent that observes financial truth without enforcing it. Non-judgmental progress tracking.

budgetsderivedintentlocal-firstnon-enforcing

Day 15: Bring Your Data With You

Building CSV and QIF import for local-first onboarding: preview before write, deterministic duplicates, and batch undo.

importcsvqifonboardingquickenlocal-first

Day 14: Time Is Just Another Input

Building scheduled rules without cron: how period keys make recurring transactions deterministic, idempotent, and sync-safe.

scheduled-rulesrecurringperiod-keysdeterminismautomation

Day 13: You Can't Break It

Implementing undo via compensating operations: how we made financial data reversible without ever mutating history.

undocompensating-operationstime-travelreplayaudit

Day 12: Sync Without Servers

Building sync mechanics without networking: operations as cargo, deterministic merging, and explicit conflicts.

syncoperationsofflinemerge-engineconflicts

Day 11: History Is a Feature

Building the operation log foundation: making system history explicit, inspectable, and ready for future sync.

operation-loghistorysyncroadmap

Day 10: Trust is Built in Tests

Foundation hardening sprint: auditing boundaries, testing invariants, and proving correctness.

testingregressionhardeningarchitecture

Day 9: Your Data Is Yours

Implementing workspace backup and restore for true data ownership in local-first software.

backuprestoredurabilitylocal-first

Day 8: Links Over Exports

Implementing shareable views that prioritize privacy, scoping, and links over static exports.

sharingprivacyviewslocal-first

Day 7: Rules Are Controlled Automation

Building a Rules Engine that uses Views as triggers, with suggest-first automation and full audit logging.

rulesautomationviewsaudit-log

Day 6: View Safety and Determinism

Fixing the IDBKeyRange error: how we made View execution safe, validated, and deterministic.

viewsindexeddbdefensive-programmingdebugging

Day 5: Views Are the New Reports

Why Views replace reports, dashboards, and exports. Declarative queries against financial truth.

viewsqueriesdeclarativearchitecture

Day 4: Ledger Engine and Financial Truth

Defining financial truth: how balances are derived, how transfers work, and why reconciliation matters.

ledgertransactionsreconciliationarchitecture

Day 3: Primitives Before Features

Building the core data primitives for a local-first financial operating system with Dexie and IndexedDB.

architecturedexiedata-model

Day 2: Local-First Means No Login

Why we removed authentication entirely and what it means for privacy-first financial software.

architecturelocal-firstprivacy

Day 1: The Vision

Why we're building a local-first financial OS—and why we're building it in public.

visionmanifestobuild-in-public

Stay Updated

This journal is our commitment to building in public. Every decision, every pivot, every breakthrough—documented here.

Contributors: No sprint is complete without a Developer Journal entry.