Search the portfolio
↑ ↓↵ESC
Back to projects
CASE STUDYMOBILE GAME

Mental Math Challenge

Every answer counts.

Project · Individual development · local application
React NativeExpoTypeScriptAsyncStorageAndroid

Overview

Practice mental arithmetic through questions, timing and personal progress.

Three question formats, configurable difficulty and independent profiles in an Android application. History, rankings and preferences stay on the device.

Problem

Combine varied exercises with timing rules and clear feedback on accuracy, mistakes and response speed.

My role

I developed the mobile application: game configuration and flow, local profiles, persistence, rankings, statistics, and audio and haptic feedback.

Architecture

React Native screens and shared components use AppContext for profiles and state. TypeScript utilities separate question generation, scoring and storage; AsyncStorage keeps data per profile. Expo integrates audio, haptics and the Android project.

Technical decisions

History per profile

The name index and each profile’s data use separate AsyncStorage keys. Switching players gives access to their own history and preferences without a remote account.

Two distinct timing rules

Time Attack adds or removes time according to the answer; Dynamic Difficulty progressively reduces each question’s limit. Configuration keeps these modes mutually exclusive, while scoring considers speed, accuracy and difficulty.

Challenges and solutions

Closing a question coordinates answers, timeouts and game progress. The gameplay screen uses references and timer cleanup, while utilities centralize timing and scoring rules. The summary keeps individual answers to explain the result.

Outcomes

Classic, True/False and Multiple Choice provide configurable games with Time Attack or dynamic difficulty. Profiles retain local history and rankings; game summaries and statistics show answers, points and result distributions. No backend or remote authentication is required.

Gallery and resources