OriginMint

OriginMint


I’ve been building OriginMint on my own since 2021. The product is Mint Client, a Minecraft mod that records gameplay and plays it back, which users can extend with their own plugins and scripts.

In numbers

  • About 3,000 users
  • Around $50k in revenue
  • Roughly 140 years of playtime saved by replays
  • 14 Minecraft releases supported from one codebase
  • About 150,000 lines of code (C++, Java, Go, TypeScript)
  • Close to 3,000 automated test cases that run inside a real game client
  • 3 payment providers, 4 desktop platforms for Plugin Studio

Client

A C++20 core loaded through JNI, with a thin Java layer for each of the five supported game versions. The interface is Dear ImGui, user scripts run on GraalJS, and each version has an automated test suite of about 590 cases.

Backend

One Go service (Echo, PostgreSQL, Cloudflare R2) for accounts, device-based licensing, cloud storage, the plugin marketplace and payments. Rate limiting, Cloudflare Turnstile and Prometheus metrics are built in.

Payments

Stripe, PayPal and crypto through NOWPayments. A purchase is only granted after the provider’s webhook is verified, and there’s support for coupons and referrals.

Plugin pipeline

Users write Java plugins in Plugin Studio and publish them without any build setup. The backend sends the source to a Cloudflare Worker, which compiles it in a container for the right game version, each with its own JDK and a pre-warmed Gradle cache. Finished plugins are stored in R2 and shared through a marketplace.

Plugin Studio

A desktop editor built with Wails (Go and React), using Monaco for code and React Flow for visual scripts. It runs on Windows, Linux and macOS and updates itself.

Websites

Store, checkout and account panel in Astro and React. Docs in Starlight.

Infrastructure

Docker Compose on one server behind Nginx and Cloudflare. GitHub Actions builds and releases every component, client releases are checksum-verified in R2 before going live, and clients update automatically. Monitoring runs on VictoriaMetrics, VictoriaLogs, Vector and Grafana.

Using AI

The product is finished, so the work now is mostly interface changes and support for new Minecraft versions. AI coding agents do most of that, guided by instruction files in the repo, and the test suite catches what they get wrong.

How the stack changed

The previous version, from 2023 to 2024, was split into many services. I simplified it so one person can run it:

2023 to 2024Now
ClientJava, one jar per version and OSC++ over JNI, one jar per version
BackendFour TypeScript services on FastifyOne Go service
DataThree PostgreSQL databases, two Redis caches, InfluxDB, MinIOOne PostgreSQL database, Cloudflare R2
FrontendsFive Next.js appsOne Astro site
HostingHelm on MicroK8s, Azure PipelinesDocker Compose, GitHub Actions
Plugin buildsOne AWS Lambda imageA Cloudflare container per version

Website
Wiki