Client
The PUBG Stats Tracker mobile application is built using React Native with Expo. The app provides players with real-time statistics about their PUBG gameplay, including metrics such as total kills, wins, and matches played.
I originally built the client as a web-based React application, but later decided to create a mobile app using React Native and Expo for experimentation.
Rate Limits
One of the main challenges I faced during development was handling the PUBG API's strict rate limiting. To address this, I implemented a backend server that acts as an intermediary between the mobile app and the PUBG API. This server caches player statistics in a MongoDB database, reducing the number of direct requests to the PUBG API and ensuring compliance with its rate limits.
Server
The server functions as a focused data-aggregation layer for the application. It authenticates with the PUBG API using a secret key, fetches raw player-stat data, and transforms the responses into compact, strongly-typed objects suitable for frontend consumption.
Before responding to the client, the processed player stats are persisted in a MongoDB database. Because the PUBG API enforces a rate limit of 10 requests per minute, the server only issues a new API request if the stored stats are older than two minutes; otherwise, the cached data from MongoDB is returned directly to the client.
Technologies used:
- React Native
- Expo
- Typescript
- Express
- MongoDB