Product engineering, in detail.

Three projects, what was hard about each, and how it was built. Every number comes from the app stores, the repositories or the test runs.

TChess: chess training app with an on-device engine

React Native · Expo · Next.js · Supabase

A chess training app for Android and web, published on Google Play as app.tchess and on the web at tchess.app.

Challenge

Run a strong chess engine on a phone, keep it stable in production, and sell subscriptions across Google Play and the web without letting trials be abused.

Native engine

Stockfish 17.1 is integrated through a custom NDK/JNI native module. Production memory issues were traced through Sentry and fixed by correcting the engine lifecycle handling.

Subscriptions and backend

RevenueCat, Google Play Billing and Paddle, with 11 Supabase Edge Functions and 48 Postgres migrations with row-level security. The server-held trial survives reinstalls and device clock changes.

Testing

1,500+ automated test cases (817 in the app, 704 in the web project) plus an engine check that replays all 60,000 bundled puzzles.

1,000+Play installs
4.8Play rating
500+Monthly active devices
1,500+Automated tests

DareClock: an alarm that needs real exercise to stop

Kotlin · Jetpack Compose · CameraX · ML Kit

A native Android alarm that keeps ringing until a camera-verified exercise is complete, published on Google Play as com.dareclock.

Challenge

Make an alarm that cannot be dismissed lazily, yet stays reliable: it has to fire on time and survive reboots.

Camera and ML

CameraX feeds on-device ML Kit pose detection, which counts push-ups live.

Alarm reliability

Exact alarms, a foreground ringing service, boot recovery and an offline event queue, with Play Billing and RevenueCat for purchases.

Testing and releases

200 JUnit tests and 7 releases in 3 weeks, on Kotlin 2.2.

7Releases
3 weeksFirst commit to 7 releases
200JUnit tests
2.2Kotlin version

Chess content automation: a publishing pipeline

Python · FFmpeg · Remotion · Playwright · Next.js

A pipeline that renders narrated chess reels and publishes them to Instagram, YouTube, Facebook and TikTok on a schedule.

Challenge

A chess app needs a steady stream of short video, and doing it by hand does not scale past a few clips a week.

Pipeline

Python drives FFmpeg and Remotion to render each reel, and Playwright handles publishing. A Next.js control dashboard shows the queue and platform health.

Reliability

237 unit tests cover the pipeline, and every post is logged so failures can be traced.

Output

1,078 published posts logged across 73 days, with 480,000+ recorded plays.

1,078Published posts
73Posting days
480,000+Recorded plays
237Unit tests

Want the short version?

The one-page resume covers the same work. I am open to remote roles.