All apps
ArenaX app icon

ArenaX

A prize competition platform that brings esports tournaments, talent contests and live quiz shows together in a single app.

  • iOS
  • Android
  • 2024
  • My own product
App Store · archived Google Play · archived

Screenshots

Click any image to enlarge it.

About the app

ArenaX started from the idea of gathering prize competitions into a single app. The goal was to run the biggest online esports tournaments in Turkey, and I added talent contests alongside them — singing, short film, cosplay, photography, screenwriting, drawing. On top of that came giveaways, mini games with prizes and live quiz shows. In total there were six separate competition categories.

The real challenge was this: those six categories have nothing in common. An esports tournament has a platform (Xbox, PlayStation, PC), teams and a bracket; a talent contest has file uploads and judging; a giveaway has a draw; and in a game like “whoever holds their finger down longest wins”, the result is produced by the phone itself. I reduced all of them to one shared “competition” model: every competition has an entry format, a duration, a prize and a rule for determining the winner. Only the contents of those four fields are category-specific; listing, search, entry tracking and prize distribution all run on the same code.

On the talent contest side the work turned into user-generated content. People uploaded song recordings, videos, photos and scripts; these had to be stored, resized and reviewed before being published. In a competition with real prizes, moderation is not an optional feature — it is what keeps the product alive.

The live quiz show turned out to be harder than I expected. Everyone had to see the same question at the same moment, the answer window had to follow server time rather than device time, and answers arriving after the window closed had to be discarded. The prize side needed the same rigor: earning and spending tokens goes through a single accounting flow, and prize distribution could only run once per competition.

I ran the entire product on my own, including the idea, design, development and app store release.

ArenaX is not live today: problems came up on the app store policy side. Apps containing prize competitions are one of the categories the stores treat most carefully; entry, prize distribution and every mechanic involving an element of chance are subject to separate rules. Learning this after the project was well underway proved expensive. Today, when I design anything with a prize or competition mechanic, I read the store guidelines before I write any code — retrofitting compliance is far harder than designing for it from the start.

Key features

  • Six competition categories: esports, talent, giveaways, prize games, quiz shows and physical challenges
  • Esports tournaments: separate Xbox, PlayStation and PC brackets, with individual or team entry
  • Talent contests: singing, short film, cosplay, photography, screenwriting and drawing categories
  • Live quiz shows: multiple choice questions with a server-clocked answer window
  • Token prize economy: a token prize per competition, with earning and spending running through a single accounting flow
  • Content upload and moderation: review of uploaded audio, video and images before publication
  • Popular competitions showcase and search by competition name
  • Entry tracking: follow ongoing and completed competitions
  • Notifications: new competition announcements, result announcements and deadline reminders
  • In-app purchase infrastructure

Technologies used

106 technologies · 12 categories

Languages and Platform

  • Swift (iOS)
  • Java (Android)
  • Kotlin (Android)
  • Native iOS development
  • Native Android development
  • iOS SDK / Android SDK

UI and Application Layer

  • UIKit / SwiftUI
  • Auto Layout
  • Android XML layouts
  • Activity / Fragment lifecycle
  • UICollectionView / RecyclerView
  • List pagination
  • Search and filter UI

Backend and Data

  • Firebase Firestore
  • Firebase Authentication
  • Firestore Security Rules
  • Cloud Functions
  • Firestore transactions
  • Firestore queries and indexes
  • Firebase Storage
  • Firestore offline cache
  • Batch writes
  • Cursor-based pagination
  • Denormalization
  • Counter fields
  • Cloud Functions triggers
  • Scheduled jobs
  • Data migration

Real-Time and Media

  • Firestore realtime listeners
  • Server timestamps
  • Live question synchronization
  • AVFoundation (iOS)
  • PHPickerViewController (iOS)
  • Android media picker
  • Video and audio playback
  • Upload progress tracking

Payments and Revenue

  • StoreKit (iOS)
  • Google Play Billing
  • Server-side purchase validation
  • Token balance accounting
  • Product catalog configuration

Notifications and Announcements

  • Firebase Cloud Messaging
  • APNs
  • UNUserNotificationCenter (iOS)
  • Android notification channels
  • Topic-based notifications
  • Notification permissions

Architecture and Patterns

  • MVC / MVVM
  • Asynchronous programming
  • Kotlin coroutines
  • Swift async/await
  • Role-based moderation flow
  • State management
  • Error and retry handling

Networking and Data Transfer

  • URLSession (iOS)
  • HTTP client (Android)
  • JSON parsing (Codable)
  • Retry and timeout handling
  • Offline state handling
  • Image caching
  • Download and upload queue
  • Multipart file upload
  • Bandwidth-based quality

Security and Privacy

  • Keychain (iOS)
  • EncryptedSharedPreferences (Android)
  • HTTPS and ATS
  • Authentication token management
  • Session refresh
  • Permission usage descriptions
  • Account deletion flow
  • Server-side authorization checks
  • Sensitive data masking

UI States and Accessibility

  • Dark mode support
  • Dynamic Type
  • Safe area handling
  • Empty / loading / error states
  • Skeleton loading
  • Pull to refresh
  • Keyboard and focus management
  • Deep linking (Universal Links)
  • VoiceOver / TalkBack labels

Testing, Debugging and Profiling

  • Xcode Instruments
  • Android Profiler
  • LLDB
  • Logcat
  • Memory leak tracking
  • Network traffic inspection
  • Crash report analysis
  • Testing on real devices
  • Multiple screen size testing

Tools and Release Process

  • Xcode
  • Android Studio
  • App Store Connect
  • Google Play Console
  • CocoaPods
  • Gradle
  • Git
  • Open source libraries (GitHub)
  • TestFlight
  • Play Console internal testing
  • Version and build numbering
  • Signing and provisioning profiles
  • App Store review process
  • App Privacy / Data Safety forms
  • Store assets and ASO copy
  • App size optimization
Solo work

Idea, design, UI, code, app store release and post-launch maintenance — I handled the entire process end to end on my own. No team, no agency, no outsourcing.

Development notes

  • Languages and approachThe iOS side was written in Swift and the Android side in Java and Kotlin. No cross-platform framework was used; both apps were built with their own platform's native tooling. I have been doing mobile development since 2020.
  • No AI assistanceAll the code was written by hand. This project was built before AI coding tools like Claude Code and Codex became widespread — no such tool existed at the time.
  • DependenciesA large number of open source GitHub libraries and CocoaPods packages were used. Dependency management ran through CocoaPods on iOS and Gradle on Android.
  • Content moderationIn prize competitions, user content was reviewed before it went live. Moderation was not an optional feature — it was what kept the product alive.
  • Testing and debuggingTested on real devices, across different screen sizes and under poor network conditions. After launch I read crash reports and shipped fixes release by release.
  • Release processI handled the review process for both stores myself: App Store Connect and Google Play Console setup, privacy declarations (App Privacy / Data Safety), release notes, store assets and fixes based on rejection reasons.
  • Product ownershipIdea, design, development, backend, app store release and post-launch maintenance — I ran the entire process on my own.

Let's talk about ArenaX

I am happy to walk through the technical details, the problems I ran into and how I solved them.