Highlights
- Built the live test client so revisits, option changes, and countdown time stay consistent enough to power scoring, peer comparison, and structured analysis data.
- In-app subscription payments via Razorpay.
- Integrated API-backed analysis UX: insight callouts on full test analysis, personalized suggestions on Analytics, and downloadable performance reports from Profile—the backend produces the content; the app renders and ships the flows.
- Engineered a multi-step student onboarding flow with step-level persistence, allowing users to safely exit and resume registration without losing progress.
- Built an adaptive flashcard review system with 3-tier mastery tracking (Learning, Reviewing, Mastered) and spaced repetition — repeating questions until mastered twice, with instant verification and haptic feedback.
- Enforced a chapter-based trial (first 2 chapters per subject) across tests, flashcards, and search; subscriptions unlock the rest of the syllabus and full analysis.
- Rendered exam content with HTML + LaTeX (MathJax when math-tex is present) so tables, formulae, and explanations stay readable in live test, review, and flashcards.
- Release optimization from 23.7 MB to 20.4 MB (3.3 MB / ~13.9%).
- On constrained Android devices with limited memory and storage, cold-start Home could scroll while taps stayed unresponsive for a long stretch—an issue that did not surface on mid-range or high-end devices, or on the same hardware under a newer Android version. Deferred navigation stacks with lazy loading and streamlined startup and Home content load so taps register as soon as Home is shown.
- Migrated to TanStack Query’s official MMKV persist client: throttled disk writes, selective dehydrate (Home, profile, and analytics summaries persist; large test and analysis payloads stay in memory only), and removed a legacy unbounded on-disk cache blob.
- Shipped Google Play in-app updates so users can install new releases from inside the app.




