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 2024 | Now | |
|---|---|---|
| Client | Java, one jar per version and OS | C++ over JNI, one jar per version |
| Backend | Four TypeScript services on Fastify | One Go service |
| Data | Three PostgreSQL databases, two Redis caches, InfluxDB, MinIO | One PostgreSQL database, Cloudflare R2 |
| Frontends | Five Next.js apps | One Astro site |
| Hosting | Helm on MicroK8s, Azure Pipelines | Docker Compose, GitHub Actions |
| Plugin builds | One AWS Lambda image | A Cloudflare container per version |