Inspiration

Like many investors, I was drowning in spreadsheets. My stocks were in one app, crypto in another, and my bonds maturity? Scribbled in a notebook, my Tax-free accounts in a spreadsheet. When I saw Josh from VisualFaktory's brief about creating a unified investment tracker, it immediately clicked—this was exactly the problem I'd been living with.

His vision was simple but powerful: one app that consolidates everything, updates listed assets automatically, and lets you manually track the rest. But what really sold me was his emphasis on non-listed assets—bonds, real estate, fixed income—the stuff traditional apps ignore. That's where portfolios get messy, and that's where Ledger shines.

What it does

Ledger is a comprehensive, offline-first portfolio tracker for investors who want to see everything in one place.

Core Features:

  • Time-Travel Pricing: Add a stock you bought 6 years ago, and Ledger automatically fetches the exact historical price from that date. No more digging through old statements.
  • Universal Asset Support: Track stocks, crypto, gold bars, real estate, fixed income—listed or unlisted, digital or physical.
  • Smart Event Timeline: Never miss a bond maturity, dividend payout, or contribution deadline. Ledger turns your data into an actionable to-do list.
  • Tax-Advantaged Account Tracking: For US, UK, and Canadian investors, Ledger tracks your TFSA, IRA, ISA, and RRSP contribution room. Enable Autopilot, and it calculates exactly how much you need to contribute monthly to max out your tax-free growth.
  • Premium Risk Analysis: See your portfolio's blind spots. If you're 80% exposed to US tech stocks, Ledger warns you with geographic and sector breakdowns.
  • Biometric Security: Bank-level protection with Face ID/Touch ID.

How we built it

Tech Stack:

  • React Native + Expo for cross-platform iOS development
  • RevenueCat for seamless subscription management (free tier + premium analytics)
  • Zustand for state management (portfolio, accounts, events, premium status)
  • Market Data APIs: Stooq (stocks/commodities) + AlphaVantage (crypto) for real-time and historical pricing
  • NativeWind (Tailwind CSS) for consistent, rapid UI development
  • Burnt for native toast notifications
  • Expo Router for file-based navigation
  • AsyncStorage for offline-first, local data persistence

Architecture Highlights:

  • Offline-First: All portfolio data is stored locally—no cloud dependency, complete privacy.
  • Transaction-Based System: Assets are tracked through buy/sell/contribution transactions for accurate cost basis calculation.
  • Registered Account Engine: Built a custom rules engine to handle TFSA/RRSP/IRA/ISA contribution limits, carryforward rules, and tax-year boundaries for 3 countries.
  • Event Generation System: Dynamically generates timeline events (maturities, dividends, contribution reminders) from portfolio state and syncs them to a notification store.

Challenges we ran into

  1. Historical Price Data: Finding a free API that provides reliable historical stock prices going back years was tough. I integrated Stooq for equities and AlphaVantage for crypto, with fallback logic and rate-limit handling.

  2. Registered Account Rules: Each country's tax-advantaged accounts have different contribution limits, carryforward rules, and tax-year schedules. Building a flexible system that handles Canadian TFSAs, US IRAs, and UK ISAs without hardcoding everything required careful abstraction.

  3. RevenueCat Integration: Syncing subscription state between RevenueCat, local storage, and the UI while handling edge cases (trial periods, grace periods, cancelled-but-still-active subscriptions) took multiple iterations to get right.

  4. App Store Rejection: Initial submission was rejected for pricing hierarchy issues (Guideline 3.1.2) and iPad layout bugs (Guideline 2.1). Fixed by redesigning the premium screen with proper pricing emphasis and adding ScrollView support for smaller iPads.

  5. Disk Space Crisis: Mid-development, my Mac ran out of space during an iOS build. Freed up 18GB by clearing old simulator runtimes—a reminder that iOS development is heavy.

Accomplishments that we're proud of

  • Historical Price Auto-Fill: This feature alone saves hours of manual work. It's the kind of "magic" that makes users say "wow."
  • Three-Country Tax Account Support: Built a robust system that handles the nuances of US, UK, and Canadian registered accounts—something even major apps don't do well.
  • Offline-First Privacy: In an era of cloud-everything, Ledger proves you can build a powerful financial app without uploading sensitive data anywhere.
  • Polished UX: Smooth animations, haptic feedback, dark mode, biometric lock—every detail feels premium.
  • Passing App Store Review: After addressing Apple's feedback, the app is now production-ready.

What we learned

  • Historical data is surprisingly hard: Free market data APIs are limited, rate-limited, or unreliable. Building resilient fallback logic is critical.
  • Registered accounts are a maze: Tax law varies wildly by country. What I thought was a simple "track contribution room" feature became a deep dive into CRA, IRS, and HMRC rules.
  • RevenueCat is powerful but complex: The SDK handles subscriptions beautifully once configured, but proper state management (trial vs. active vs. cancelled-but-not-expired) requires careful planning.
  • React Native + Expo is production-ready: Despite some rough edges, the ecosystem is mature enough to ship a real app to the App Store.

What's next for Ledger

  • AI-Powered Insights: Use LLMs to generate personalized rebalancing suggestions and risk commentary.
  • Multi-Currency Rebalancing: Help users optimize across different currency zones.
  • Tax-Loss Harvesting Alerts: Notify users when they have opportunities to offset capital gains.
  • Broker Integrations: Explore OAuth connections to popular platforms (Wealthsimple, Fidelity, etc.) for auto-import.
  • Android Launch: Port to Android using the same React Native codebase.
  • Community Features: Anonymous portfolio comparisons ("Your risk score vs. similar investors").

Ledger started as a solution to my own chaos. Now it's ready to help thousands of investors take control of their financial lives—one asset at a time.

Built With

Share this project:

Updates