GameUp
GameUp
A gamified coaching mobile application for passionate players developed with React Native!
Description
GameUp is a cross-platform mobile application built using React Native that acts as a personal gaming performance coach. Showcasing simple yet impactful game mode design and user data cloud synchronization with Firebase Authentication. Built from the ground up using JavaScript and JSX, it provides players with interactive reaction-based challenges, progress tracking, and region-specific tournament discovery. Users can create accounts, complete mini-games to earn XP, compare stats on global and friend leaderboards, and view personalized recommendations based on their location and gaming interests
Engine: React Native
Tools: JavaScript, JSX
Project Type: Solo
Duration: 6 Weeks
Genre: 2D Gamified Application
Focus: UI and cloud data synchronization
Secure user login in and out with Firebase Authentication
Color Reaction Game UI
The JavaScript Code for the App.js file that checks for user authentication at all times
My Role
Made sure the app runs smoothly on both Android and iOS simulators, with full navigation implemented using React Navigation. Screens include Sign-In, Home, Challenge, Stats, Leaderboard, and Storage.
Incorporated Local data storage that uses AsyncStorage for saving user notes, and Firestore for structured cloud data such as stats and leaderboard entries. CRUD operations are implemented for both systems.
Implemented native geolocation through Expo Location. The app detects the user’s current city and country to show relevant tournaments, demonstrating GPS and permission handling.
Challenges
Challenge: Managing multiple asynchronous data sources without causing the app to constantly re-render or behave unpredictably.
Solution: Eventually solved this by introducing an initializeUserProfile() caching approach and tightening my useEffect dependencies so the app only refreshed data when it actually needed to
Highlights
Implemented Firebase Authentication supporting email/password sign-up and login, using persistent sessions. Logic is handled in SignInScreen.js with validation and redirection after login.
Integrated a external APIs, RAWG.io for trending game data, which shows the user top rated games, dynamically
ChallengeScreen.js now includes Target Tapping and Color Reaction challenges. Both are animated and track XP, storing data in Firestore with real-time updates.
Resolution
Working on GameUp was a rewarding project that pushed me to grow as both a developer and a designer. Bringing together features like authentication, cloud storage, geolocation, and real-time leaderboards showed me how challenging, but exciting, it can be to build a fully connected mobile experience from the ground up.
IMPORTANT NOTE: To run this app, you must download Expo Go on either IOS or Android, run the base code through Terminal by using commands such as npm install, then npx expo start. All the Terminal steps must be done while inside the repository of the project, in this case it should be cd GameUp-1\GameUp\GameUp\hazardous-green-apples\hazardous-green-apples. Once the code has ran through the Terminal after entering the npx expo start line, there will be a QR code presented, scan the QR code with the Expo Go app, then the actual application will run