Usukhbayar

000%
Skip to content
All work

Education · Mobile product/2026

SparkXP

Gamified English learning for Mongolian students and schools — mobile app, API, and admin dashboard, built end to end.

Role

Team Lead · Full-Stack Developer

Three developers, including me. Two built the mobile app while I took the backend and the dashboard.

  • React Native
  • Expo
  • NestJS
  • PostgreSQL
  • Redis
Product introduction
Buddy configuration
Home — light
  • Mobile app
  • Landing page
  • Admin dashboard

Overview

SparkXP is a gamified English-learning app for Mongolian students and schools, built to make daily practice feel like play. It is one product across three surfaces — the app students and teachers use, the public landing page, and the admin dashboard the content team works in — all on one NestJS API. I led the build as team lead of three developers.

Problem

English learning in Mongolia is fragmented — static content, thin practice, and little to keep students motivated day to day.

Solution

A React Native app with structured lessons, spaced-repetition vocabulary, XP, streaks and leaderboards, plus an AI buddy for text and voice practice — backed by a NestJS API on PostgreSQL and Redis. Teachers get classes, join codes and assignments; the admin dashboard drives content, the AI generation pipelines, buddy configuration and plan limits.

Outcome

The API is deployed on Railway and the admin dashboard on Vercel; the student and teacher app is in active development ahead of its store release. Measured results go here once the app is in users' hands — not before.

Role & ownership

Role
Team Lead · Full-Stack Developer
Team
Three developers, including me. Two built the mobile app while I took the backend and the dashboard.
Owned end to end
  • The NestJS API, and the PostgreSQL and Redis behind it
  • The admin dashboard the content team works in day to day
  • The AI gateway — generation, speech, and the plan limits enforced against it
  • Production deployment: the API on Railway, the dashboard on Vercel

Engineering highlights

  • Three surfaces, one product: the Expo app for students and teachers, the public landing page, and the admin dashboard — all on a single NestJS API.

  • Technical leadership: led a three-person team, owning the backend architecture, admin dashboard and production deployment while guiding two mobile developers.

  • AI runs through a gateway rather than scattered SDK calls — Gemini for vocabulary generation, reading comprehension questions, the in-app dictionary and speech-to-text; OpenAI's Batch API for word and idiom imagery; ElevenLabs for pronunciation audio and lesson-video transcription; Azure for text-to-speech.

  • The AI buddy is a real-time loop — speech in, model, speech out — with monthly voice and STT minutes enforced from the learner's plan, and generated speech cached so a repeated line costs nothing the second time.

  • The buddy's 3D avatar is a rigged GLB uploaded through the admin dashboard to Cloudflare R2 and referenced by URL, so a new character ships without an app release. That same model is the fox watching your cursor on this site.

The buddy avatar

The same GLB the app pulls from Cloudflare R2, re-exported at roughly 0.6 MB. The gaze is spread down the rig — head, neck, chest — clamped and damped, so it reads as looking rather than swivelling.