Created Kotoba-inspired Discord bot to render pinyin for Chinese text

The Kotoba Discord bot has a useful command to take input Japanese text and render PNG images with furigana. Looking up furigana within Discord is convenient and has advantages like keeping a history of lookups, which is useful for review. Wouldn’t it be nice to do the same thing for Chinese? I repurposed the API supporting my pinyin lookup webapp and connected it with another API that reuses Kotoba’s furigana rendering library to overlay pinyin on Chinese text. I then hook up this API with a slash command provided by my Discord bot, which kicks off a job to render the image and post it back to the channel by webhook message. The bot and supporting backend all run serverless, and I learned a lot by building on AWS Lambda and Cloudflare Workers.
Figured out API Gateway streaming with Lambda
AWS Lambda is a good option to build backend APIs, is made pretty accessible with SAM, and with Lambda Web Adapter acting as a reverse proxy to your app server, you can just write in your framework of choice knowing that it will just work on Lambda without worrying about the details. However, the devil is in the details as you’d have to jump through hoops with Lambda Function URLs if you want to make use of response streaming e.g. for serving LLM tokens. As of November 2025, API Gateway supports response streaming and solves this issue, but while there are a number of configuration methods, setting this up with SAM was a bit of a mystery. To clear things up, I put together a starter SAM project that demonstrates a minimal template to set up a REST API with streaming endpoint handled by FastAPI. The project is a good starting point for building backend APIs. Here’s a link to the Github repository.
Created app to lookup pinyin and jyutping

As a Chinese language learner, being able to look up Chinese words is essential, and while the resources available make it easier than ever, a lot of relevant information is fragmented and introduces friction in the learning process. I created a React app that lets you transliterate a snippet of Chinese text, breaking up the individual words and displaying the phonetic reading underneath each word as a reading aid. The app allows toggling between Mandarin Pinyin and Cantonese Jyutping readings. The app also allows toggling between traditional and simplified scripts. When combined with an OCR tool like Google Lens and a mouseover dictionary extension like Zhongwen, this app makes for a great reading aid. Try the app out here.