Work with me

Small software, built and shipped end to end.

I'm Junhua, an independent developer. Alongside my own products, I take on a small number of freelance projects. Everything below is live, and I designed, built, and still run each one, so the links are the best way to judge the work.

Services

What I can help with

Portfolio

Selected work

My current products →
macOS app · Mac App Store

MarginDeck

A local-first Mac app for revenue, scheduled costs, and estimated contribution profit across software products.

  • Designed and built the whole app; financial data stays on the Mac.
  • Builds monthly revenue history from RevenueCat and Stripe syncs.
  • Version 1.6.0 adds an MCP server so Claude and Codex can query reports and draft records. Drafts are saved only after the user reviews them.
  • macOS
  • MCP
  • RevenueCat
  • Stripe API
Web tools · Paid guide

ClearBaZi

Chinese astrology (BaZi) calculators where the hard part is time: historical time zones, true solar time, and solar-term boundaries.

  • Birth-city search across about 30,000 places, using each city's time-zone history, including daylight saving.
  • Checked against independent reference code: 4,824 solar terms from 1900 to 2100 within one minute, and 0 mismatches in 59,996 pillar comparisons.
  • Stripe checkout unlocks a printable guide. Runs on Cloudflare Workers, with a D1 database for anonymous usage counts.
  • Cloudflare Workers
  • D1
  • Stripe Checkout
  • Structured data
Free web tools

BigDayKit

Wedding planning tools (timeline, checklist, budget calculator, guest list, and seating chart maker) that work without an account.

  • Plans are saved in the browser rather than on a server; share links carry the details themselves.
  • Seating chart maker: seat guests table by table, then print an A-to-Z poster, table numbers, and escort cards.
  • The guest list tracks RSVPs and exports mailing addresses to Excel.
  • Cloudflare Workers
  • Browser storage
  • Print layouts
  • Excel export
Chrome extension · AI

SnapQuizX

Turns a webpage, PDF, or pasted text into a quiz, and keeps a notebook of the questions you get wrong.

  • Works anonymously or with a signed-in account, on a Firebase backend.
  • When installs rose but weekly active users fell, a fresh-account walkthrough found five first-session failures. I fixed them in the client and left the backend alone.
  • Chrome extension
  • Firebase
  • LLM
Case study · Hosting and DNS

Company site migration

Moved my company's website from Firebase Hosting and Amazon Route 53 to Cloudflare without breaking its email, then redesigned it.

  • Two separate steps, DNS first and then the site, each with a tested way back.
  • Mail kept passing SPF, DKIM, and DMARC checks after the switch.
  • Unknown URLs now return a real 404 page instead of the homepage.
  • Redesigned as a plain company page with a billing help page for customers who see the company name on a card statement.
  • Cloudflare Workers
  • DNS
  • Email authentication
Flutter game · iPhone and Android

FiveUp

A 60-second mental-math game with four modes and global leaderboards.

  • One Flutter codebase, released on the App Store and Google Play.
  • Players sign in with Apple, Google, or Facebook to sync scores; Firebase backend.
  • Flutter
  • Dart
  • iOS
  • Android
  • Firebase
Process

How I work

  1. Before I start, I write a short plan: the scope, how we will check the result, and how to undo each risky change.
  2. Fixed-price milestones for well-defined work; hourly only when the scope is genuinely open.
  3. Asynchronous by default. I'm based in China (UTC+8): my evenings overlap with US Eastern mornings, and my afternoons with European mornings.
  4. I use AI coding tools. I review and test everything I deliver, and I'm responsible for it.
  5. Handover notes in plain English, so you can run the result without me.

Start a project

Email me what you want to build, your timeline, and a rough budget. If it looks like a good fit, I'll reply with questions or a short plan.

Email jin@swingcodelab.com