Tattoo

Cats

Bass

Cooking

True Colors: A Decade

About Me

An engineer who doesn’t look like one

Photos of me with long hair

I’m a front-end developer, sometimes dabbling in product design and a bit of not-so-serious full-stack work.

I grew up in Chaozhou’s ancient town and now live in Guangzhou. I’ve always been surrounded by Lingnan and Hong Kong culture, and I mostly speak Cantonese and Teochew in daily life.

I’m into being on my own, raising cats, long hair, tattoos, rock & metal, and cooking — all the good stuff.

Learn more >

Recent Blog

Tech Insights, Product Design & Life Musings

An Oxc-first workflow package for Oxlint and Oxfmt

An Oxc-first workflow package for Oxlint and Oxfmt

I have been following the Oxc project for quite a while. After seeing it enter the 1.x line some time ago, I had wanted to put together a configuration for it, and over the past few days I finally found time to work on it. At the current stage, however, Oxlint still cannot fully replace ESLint, so for now I simply call this package Integration rather than oxc-config.

2026/4/14 01:30:00

Open Source Projects

Projects that I created or maintaining

@iso-639/data

2
9.34k

Contains code lists for ISO 639-1 and ISO 639-2 as well as multi-language support.

Toolkit

@blackwork/machine

1

Markdown and MDX engine for the Blackwork React UI ecosystem, powering Blackwork-based blogs and documentation sites.

Toolkit

@bassist/eslint-config

11
3
4.65k

A modern flat ESLint configuration for ESLint.

Configuration

@bassist/changelog

11
3
6.70k

Simple CHANGELOG generator.

Toolkit

@bassist/oxc-integration

11
3

An Oxc-first workflow package for projects, while still keeping an ESLint fallback available where framework coverage is not yet enough.

Configuration

@blackwork/docs

1

Next.js-first documentation framework for Blackwork projects, with content discovery, locale-aware routing, metadata, navigation, and theme shells.

UI

chengpeiquan.com

60
9

My personal website, base on React 19 and Next.js 15.

Template

cert-patroller

3
2

A patroller that regularly checks for expiring SSL certificates, based on Node.js and Porkbun APIs.

Server

vite-plugin-banner

113
6
18.94M

A Vite plugin that adds a banner comment to the header of each chunk file.

Bundling

vue3-ts-vite-starter

15
2

A template for Vue with TypeScript, base on Vite.

Template

create-preset

47
3
130.97k

Provides the ability to quickly create preset projects.

Scaffold