Back to case studies

Social gaming product

Agora — Gaming Social

The social network where gamers build clans, compete in tournaments, and level up. A single codebase that ships to iOS, Android, and web with a real economy, gamification, and community.

Agora competitive mode selection
Agora mobile store
Agora player community

Actively developed application in closed testing; we do not present it as a finished product.

The system

Project Overview

Agora is a social and competition platform built for gaming communities: players form clans, post to a social feed, challenge each other in tournaments, and progress through a complete gamification system (missions, rewards, levels, and cosmetics).

Competition is the heart of the product: double-elimination bracket tournaments with automatic advancement, duels between friends, and a reward system that recognizes real activity within the community.

On top of that core sits a full economy: chests, a shop, coins, a Prime subscription, and in-app purchases (IAP) handled through RevenueCat, plus avatar frames, emblems, and titles that players equip on their profile.

Under the hood: a FastAPI backend over PostgreSQL with an end-to-end typed OpenAPI client, an Ionic 8 + Angular app packaged with Capacitor for iOS and Android from a single codebase, a dedicated admin dashboard, push via OneSignal, and email via Resend. Backend on Railway, frontend on Cloudflare Pages.

Technical decisions

Technical Challenges & Solutions

  1. 01
    Challenge

    Shipping one native app to both iOS and Android without duplicating code or maintaining two separate codebases, while keeping performance and access to device capabilities.

    Solution

    I built the app with Ionic 8 + Angular packaged via Capacitor: a single codebase that compiles to native binaries for both stores, with push (OneSignal), purchases (RevenueCat), and assets managed from one source. The web shares the same bundle through Cloudflare Pages.

  2. 02
    Challenge

    Designing a double-elimination bracket engine that advances on its own as results are reported, with no gaps or inconsistent states.

    Solution

    I modeled the bracket in the backend with automatic advancement and enums for every state (no loose strings), so each result propagates to the next matchup deterministically and auditably. Tournament state is always consistent.

  3. 03
    Challenge

    Integrating a real-money economy (IAP, Prime subscription, chests) while keeping the app-to-backend contract safe from silent errors.

    Solution

    I centralized monetization in RevenueCat and generated the frontend client from the backend's OpenAPI schema with typed Pydantic models. An end-to-end typed contract makes any mismatch fail at build time, not in production in front of a real purchase.

Inside the product

Key Features

01

Social feed

Posts, comments, and native GIFs. The community wall where clans find teammates and share their day-to-day.

02

Arena & tournaments

Double-elimination brackets with automatic advancement, friend duels, and ranking. Competition is the core of the product.

03

Shop & economy

Chests, coins, a Prime subscription, and real IAP handled with RevenueCat. A full economy that rewards activity.

04

Profile & cosmetics

Equippable avatar frames, emblems, and titles. Every player builds an identity and shows it off on their public profile.

05

Progression & missions

Daily missions, levels, and rewards that drive retention. Gamification turns recurring use into tangible progress.

06

Clans & community

Clan creation and management, roles, and events. Agora brings players together around the games they love.

Technologies Used

Technology serves the system.

  • Ionic
  • Angular
  • FastAPI
  • PostgreSQL
  • Capacitor

Next case

Uruk Bartas

Adventures, inventory, economy and ranking inside a mobile-first game product.

Open case