ORANGEZELYAPP DEVELOPMENT × AI

CASE STUDY / MAHJONG TSUJIGIRU!

One codebase. Four ways to play.

A timed mahjong learning game designed, developed, submitted, monetized, and operated entirely in-house.

Overview

Product
In-house mahjong learning game
Platforms
Browser / LINE Mini App / iOS / Android test distribution
Scope
Concept, UI design, development, store review, subscriptions, advertising, operation, and improvement
Launch
Browser and LINE Mini App: July 2026 / iOS: August 2026
Links
Product page / Play in browser / App Store

Why we built it

Mahjong improvement depends on repeated tile-discard decisions, but a full game takes close to an hour. We isolated that decision and turned it into short drills: a few seconds per question and 60 seconds per session.

The priority was to make meaningful practice possible during a commute or short break.

Core features

One codebase, four entry points

The interface is built with TypeScript and Next.js and exported as static files. Cloudflare Workers serves the browser version. Capacitor wraps the same build for iOS and Android, while the LINE Mini App uses the same screens.

Supabase stores questions and rankings. RevenueCat handles subscriptions and the lifetime ad-removal purchase. Google AdMob provides advertising.

Problems we solved

Store products did not appear

Two issues overlapped: the App Store paid-app agreement was still waiting for tax and banking information, and a Capacitor plugin object was being returned through an asynchronous function in a way that made JavaScript treat it like a Promise. Activating the agreement and referencing the plugin synchronously resolved the problem.

Required subscription information disappeared

Renewal terms, cancellation guidance, and links to terms were originally shown only when pricing loaded successfully. We changed the screen so disclosures and a retry action remain visible even when the store response fails.

An ad appeared after the score

When interstitial loading was slow, the result flashed before the ad. We reordered the flow so the result renders only after the ad attempt completes.

Commercial hosting terms

The first browser host did not permit commercial use on its free plan. We moved the deployment before monetization and now verify commercial-use terms during planning.

What clients gain from this experience

Store review, payments, advertising, and hosting terms can create more launch risk than the feature code itself. Having solved these issues in our own product lets us account for them earlier and reduce rework in client projects.

Build your app with the same practical pace.

From the first prototype to post-launch operation, we can help make the path clear.

Start a conversation