Inspiration

Learning to handle money is hard, mostly because the real world charges you for every mistake. New investors usually end up bouncing between a trading app, a budgeting app, and whatever lessons they can find online, and they tend to start doing this after they've already put money in. We wanted one safe place where anyone could practise investing and get a handle on their spending, so the good habits are already there before real money is involved. That's why we built Markva.

What it does

Markva puts a paper-trading simulator, a personal expense tracker, and an interactive finance tutor into one mobile app.

In Markva, you can:

  • Build simulated stock portfolios and manage them with market orders, limit orders, and recurring investments
  • Keep watchlists and look at price history, portfolio performance, dividends, diversification, and backtests
  • Track your expenses, budgets, savings goals, and recurring bills, and set up round-up savings
  • Learn through lessons, quizzes, flashcards, and daily challenges, and earn streaks and achievements along the way
  • Use AI to explain concepts, analyse your portfolio or spending, help with receipts, and add an explanation and next step to your weekly recap
  • Pick between Free, Pro, and Max plans, with subscriptions handled by RevenueCat

All the money in Markva is pretend. It never connects to a brokerage or a bank, and it never places a real trade.

How we built it

Markva is a React Native app built with Expo SDK 57 and TypeScript, and we built it for Android first. Expo Router handles the six-tab navigation. Zustand and AsyncStorage keep all core app state local: portfolios, expenses, learning progress, preferences, and recurring schedules stay on the device, so the app is quick and remembers where you left off. The only Markva backend is Supabase, used solely for the optional friends and duels feature. AI, market-data, RevenueCat, and Sentry integrations are direct client-side service calls rather than Markva-hosted storage.

RevenueCat controls who gets access to what across the Free, Pro, and Max tiers. Pro unlocks the deeper insights and premium tools, and Max adds features for power users, like multiple portfolios and backtesting. The judge build runs on RevenueCat Test Store, so judges can go through the whole purchase flow and watch features unlock without paying anything.

Market data comes from Twelve Data when it's configured. If it isn't, the app falls back to a deterministic local market engine, so the demo still works offline. All the AI features go through one shared dispatch layer that works with Claude, OpenAI, Gemini, and OpenRouter, which means we can swap providers without touching the features. We also added Reanimated animations, haptics, local notifications, biometric app lock, Sentry monitoring, CSV export, and portfolio snapshots you can share.

Challenges we ran into

The hardest part was getting a lot of connected financial systems to behave reliably while keeping nearly all app state on the device. Recurring expenses, dividends, limit orders, auto-invest plans, goal contributions, and reminders all have to catch up properly after the app has been closed for a while. We handled this with persisted cursors and processing loops that have a hard cap on how many times they can run.

Animated navigation was another headache. We wanted it to look polished, but the animations kept getting in the way of taps. Expo tabs keep screens mounted, so we wrote entrance animations that trigger when a tab comes into focus and replay each time without remounting any of the controls you interact with. We also made sure every outside integration fails gracefully. If a market-data or AI key is missing, Markva still works as a full demo.

Accomplishments that we're proud of

We're proud that the three parts of Markva actually work together. Your trades show up in your portfolio analytics, your spending feeds into your budgets and goals, and the lessons explain the ideas you run into everywhere else in the app.

We also managed to fit a lot in without making the app hard to use: multiple portfolios, benchmark comparisons, automatic investing, dividends, AI insights, spaced repetition, gamification, accessibility settings, local-first privacy, and a working premium tier through RevenueCat.

What we learned

The biggest lesson was that financial education works better when you can act on it straight away. A lesson on diversification means a lot more when you can open your own simulated portfolio right after and check how spread out it is. Budgeting ideas stick better when you see them in your own expense categories and savings goals.

On the technical side, we learned how much fallbacks, stable state selectors, careful date maths, and idempotent background processing matter in a mobile app that holds this much state. We also learned that subscriptions should be planned as part of the product from early on. A paywall added at the last minute feels exactly like that.

What's next for Markva: Predict the Market

Next up are debt and loan payoff tracking, an activity heatmap for financial habits, custom expense categories, and savings-goal milestones on the net-worth chart. Further out, we want to add more learning paths and social challenges, and use privacy-conscious personalisation to help each user build a money routine they'll actually stick to.

Built With

Share this project:

Updates

Submission history