Projects
Things I've built over the years. Some are doing great, a few quietly shut down, and every one of them taught me something.
Shiguang Ledger
A bookkeeping mini program for people who hate bookkeeping
Log an expense in one sentence: type “lunch 28 noodles” and it files itself under the right category. No budgets to feel guilty about, no red warnings, just a nicely designed summary at the end of each month.
- ▸Natural-language parsing runs on the device, so it works offline
- ▸The monthly summary can be exported as a shareable long image
- ▸Cloud functions with scheduled triggers, so ops cost is close to zero
tidemark
Turn Markdown into HTML you can paste straight into WeChat articles
Writers know the pain: you finish a post in Markdown, paste it into the WeChat editor, and every style disappears. tidemark inlines styles the way that editor expects, and ships with 12 swappable themes.
- ▸Zero config: one command outputs paste-ready HTML
- ▸Themes are plain CSS variables, so a custom one takes a dozen lines
- ▸Code highlighting that survives WeChat's section restrictions
Beacon Status
Status pages and uptime monitoring that small teams can afford
Set up your own status page in three minutes. Beacon checks your endpoints every minute, alerts you first by chat and email, then flips the public page to red. Pricing is per monitor, not per seat.
- ▸Probes run on Cloudflare Workers, checking from several regions at once
- ▸Incident post-mortem templates you can publish in one click
- ▸Two ways to pay: Stripe subscriptions and annual Alipay billing
Zhaixing
Highlight to save, synced to Obsidian
Select a passage on any page, hit a shortcut, and it lands in your Obsidian vault with the source link and date attached. You can set a different folder and template for each site.
- ▸Manifest V3, shipped to Chrome and Edge from one codebase
- ▸Local-first: no page content ever leaves your machine
- ▸Template syntax compatible with Obsidian Templater
Yehang
A lightweight self-hosted RSS reader in a single file
One Go binary and one SQLite file are all it takes to run. Keyboard-first, with full-text fetching and read-it-later, and it sits under 40MB of memory.
- ▸Single binary release; the Docker image is under 15MB
- ▸Full-text extraction with per-site custom selectors
- ▸Reading progress syncs across devices without an account system
Weekly Writer
A weekly report that grows out of GitHub and Linear
Every Friday afternoon it turns your merged PRs, closed tickets and reviews into a readable weekly update. Tweak a sentence or two and send it to your boss. The team plan rolls everyone up into a single page.
- ▸Read-only access, it never touches your source code
- ▸Generated in three parts: what I did, impact, next week
- ▸Scheduled delivery through Feishu and WeCom bots
Experience
- 2022 — Present
Independent developer· Hangzhou
Building products solo, maintaining open source, and taking on a little contract and consulting work.
- 2019 — 2022
Senior frontend engineer· An e-commerce platform company in Hangzhou
Owned the frontend architecture of the merchant console and cut build time from 11 minutes to 90 seconds.
- 2016 — 2019
Backend engineer· A SaaS startup in Hangzhou
Built the order and billing system from scratch. It handled 4 million orders in its first year.
- 2012 — 2016
B.Eng. in Computer Science· A university in Zhejiang
Wrote a mini program before mini programs existed: an SMS reminder for my class schedule, from a dorm room.