shipped · 2026-04 → 2026-05
FinMayak
Gamified financial literacy app paired with a real portfolio builder, contracted by FinUslugi (Moscow Exchange's consumer financial marketplace).
Project highlights
- Contracted backend role via FinUslugi, the consumer financial marketplace owned by Moscow Exchange.
- FastAPI service backing iOS, Android, and a custom admin CMS for the content team.
- Live MOEX ISS API integration so practice portfolios run against real market data.
- Shipped end-to-end and handed off to FinUslugi’s internal IT team in May 2026.
What I built
- FastAPI backend — auth, lesson delivery, progress, XP/streaks, portfolio simulation.
- Market data layer wrapping MOEX feeds with caching for trading-hour load.
- Custom CMS so editors can author lessons, quizzes, and interactive widgets without a release.
- Mobile contributions: iOS & Android client work alongside the platform teams.
The product
FinUslugi wanted financial literacy that wasn’t a PDF. The app pairs Duolingo-style learning paths with a portfolio builder where users actually pick stocks, funds, and bonds against live MOEX market data and watch how their picks perform. The mascot is Маяк — a lighthouse that tracks streaks, awards XP, and pulls users back the next day.
Lessons are short and scenario-driven (“Маша earns 80,000 ₽ and spends 60,000 ₽ — what emergency fund does she need?”), structured into modules that gate each other so learners build foundations before touching brokerage mechanics or risk allocation. The same instruments that show up on the home dashboard ticker bar are the ones users encounter inside lessons and inside their practice portfolio — one coherent surface across the whole app.
home · quiz · celebration — the gamified learning loop
Live MOEX market layer
The backend’s most interesting bit. MOEX feeds change throughout the trading day, and the gamified learning paths reference the same instruments users hold in their practice portfolios — so every educational module has to stay coherent with whatever the market is doing right now. Quote a stock in lesson 1.3 and a user can flip to their portfolio and see that same instrument’s price tick moments later.
The market layer wraps the MOEX ISS API, normalises instrument metadata, and caches quotes with TTLs sized to the trading session so we never blow up the upstream during open hours. Portfolios are mark-to-market on every read; the CMS surfaces an instrument picker driven by the same data so editors can’t reference a delisted ticker.
Practice portfolio against real data
Once a user clears the foundational modules they unlock the portfolio builder. They allocate a fixed practice balance across high / medium / medium-low / low risk buckets, then drill down to specific instruments inside each bucket — growth stocks, dividend payers, bonds, money-market funds. The allocation has to total 100% before they can submit, and from that point the portfolio updates against live MOEX prices on every visit.
The point isn’t to teach trading. It’s to give users a low-stakes surface where the abstractions from the lessons (volatility, correlation, drawdown, duration) become things that actually move on their phone the next morning.
Custom admin CMS
Pictured at the top of this page. The FinUslugi content team needed to author lessons, quizzes, and interactive widgets — calculators, scenario sliders, instrument pickers — without touching code or waiting on a mobile release. So I shipped a custom CMS: page tree on the left, a live phone preview in the middle, and a typed editor on the right.
Each page is composed of typed visual blocks (text, calculator, quiz, instrument picker, etc.). Editors pick a block type, fill in its fields, and the preview re-renders against the same component tree the mobile clients use. Content publishes over the air to the apps — no app-store review required for a new lesson, no engineer involved past the initial block type definition.
Shipping & handoff
Built on a tight contract window between April and May 2026, then handed off to FinUslugi’s internal IT team for ongoing operation. The CMS is the part that keeps paying off: the content team can author and ship new modules without backend involvement for routine work.