Gushi Namer: Chinese baby names assembled from classical poetry
Chinese baby name generator from classical poems and ancient texts
At a glance
- What is it?
- A React and Vite app that pairs characters from the Book of Songs, Tang poetry and other classical anthologies, keeps the source line with every suggestion, and stores favorites in the browser. The v3 rewrite dropped accounts entirely.
- Who is it for?
- Gushi Namer is a small, complete front end that does one thing and keeps its source citations, which is more than most name generators bother with. It suits someone who wants suggestions with a traceable line of verse behind them and does not mind writing down the ones worth keeping.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 26 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A name generator that keeps the line it borrowed from
The premise is unusually specific. Instead of combining syllables from a syllable table, this generator draws characters from named classical anthologies and records which line each suggestion came from, so a name can be traced back to the verse that inspired it. The description calls it a Chinese baby name generator from classical poems and ancient texts, and the project's tagline is about turning pages of the classics and meeting a good name by accident.
Seven sources are supported: the Book of Songs (Shi Jing), Songs of Chu (Chu Ci), Tang poetry, Song lyric poetry in the ci form, the Yuefu ballad anthology, Three Hundred Classical Poems, and a set of famous fu and ci works. That last grouping is the vaguest of the seven, which is worth noting since it is the one category whose scope the project does not spell out.
The repository is TypeScript, sits on a master branch that is not archived, and was last pushed on 2026-09-16. Version 3.0.2 came out on 2026-06-17. The repository topics list chinese, classical-poetry, name-generator, poem, react, typescript and github-pages, which is an accurate summary of what you get.
One search caution: the name reads as a Japanese word to English speakers, so searches for it pull back questions about Japanese personal names. The project itself has nothing to do with those.
What the v3 rewrite actually changed
The release notes for v3.0.0, published on 2026-06-13, describe the most substantial version and they read like a retreat from a previous design rather than a feature pile. The highlights list says the naming experience was redesigned for desktop and mobile, that names are now generated immediately on launch and when switching books, and that share cards were added with a project QR code and highlighted source characters.
The most consequential line is the removal of accounts. The notes say login and registration were removed from the active app flow and that favorites are stored locally in the browser. JSON import and export for the favorites list came with the same release, which is the pragmatic answer to storing user data in a browser without a backend.
Two follow-up patches landed the same week. v3.0.1 fixed the page title, the share card SVG and the about page scroll position, and added a visit counter. v3.0.2 changed the share card to render from the real page DOM and export as PNG, so what you preview and what you download now share the same fonts, layout and QR code rather than being produced by two separate renderers.
The root tree shows why the direction shifted. There is a `_legacy/` directory alongside the current `src/`, a `dist/` directory checked into the repository, and a `SUPABASE_SETUP.md` next to a `DEPLOYMENT.md`. The Supabase client is still a dependency in package.json even though the app no longer requires sign-in, which suggests the backend scaffolding is retained rather than removed.
Running it locally with pnpm and Vite
The build tool is Vite with React 19 and TypeScript, and the package manager the project uses is pnpm. The README gives four commands for a local checkout:
git clone https://github.com/holynova/gushi_namer.git
cd gushi_namer
pnpm install
pnpm devProduction output is a separate step:
pnpm buildThe package.json scripts fill in the rest. `dev` runs vite, `build` runs `tsc -b && vite build`, so the TypeScript project references are checked before the bundle is produced, `lint` runs eslint, and `preview` serves the built output. Styling is Tailwind CSS 3 with a tailwind.config.js and postcss.config.js at the root, and the config files are split three ways with tsconfig.json, tsconfig.app.json and tsconfig.node.json.
The runtime dependencies are worth listing because they explain the feature set. `qrcode.react` draws the QR code on the share card, `html-to-image` is what turns the rendered card into a downloadable PNG, `canvas-confetti` handles the celebration when a name is saved, `lucide-react` provides icons and `clsx` handles conditional class names. Each feature in the README maps to a specific package rather than being hand-built.
There is a deployed demo on GitHub Pages at holynova.github.io/gushi_namer, with a second address at xiaosang.net serving the same app.
Favorites live in the browser, which shapes the whole design
Because there is no account, the favorites list is browser local storage and nothing else. The README states plainly that favorites are saved in the current browser with no login required. The consequence is structural rather than cosmetic: a list you care about exists on one device, in one browser profile, and clearing site data removes it.
That is exactly why JSON export and import exist. You export the favorites list to a file and import it back later, which covers a browser migration and gives you something to back up. It also means the export format is your only interoperability path: there is no documented API for reading or writing favorites from outside the app.
The mobile behavior is handled explicitly rather than left to the browser's address bar. On scroll, the header collapses automatically and keeps three quick actions available, described as regenerating the batch, opening favorites, and reaching the about page. The README ships matching desktop and mobile screenshots for the home, favorites and share card screens, which is a useful signal about how seriously the responsive layout was treated.
The share card is the feature that makes the app worth showing to someone else. It carries the original line of verse, the source attribution, a link to the project and a QR code, with the borrowed characters highlighted. The project publishes one of these cards itself in the assets directory, so you can see the intended output before generating one.
Three loose ends in the repository
None of these are defects in the app. They are things to know before you build on it.
The first is licensing. The repository has no license identifier recorded, and there is no LICENSE file in the tree. Without one, the default is that you do not have permission to reuse the code or the verse data, whatever the public demo and GitHub Pages deployment might suggest. The author is listed as holynova, and the README does point to a GitHub Sponsorship-free credit line and a Star History badge, but that is attribution, not a grant.
The second is the environment files. The tree contains both `.env` and `.env.example`, and the example file is explicitly for Supabase, which means it expects two variables:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyThose are the names a deployment would need if any Supabase-backed feature is still reachable. Since v3.0.0 removed sign-in from the app flow, it is fair to ask what, if anything, still uses them. Anyone forking this should check the committed `.env` before assuming the deployed build depends on a backend.
The third is that `dist/` is tracked. Build output in version control makes diffs noisy and means the published bundle and the source can drift. It is a common accident rather than a decision, but it is the kind of thing that makes `dist/` an unreliable thing to read as an example of the source.
Editorial conclusion
Gushi Namer is a small, complete front end that does one thing and keeps its source citations, which is more than most name generators bother with. It suits someone who wants suggestions with a traceable line of verse behind them and does not mind writing down the ones worth keeping. It does not suit anyone who needs the poem database, because the character data lives in the application rather than behind a documented API, and the repository carries no LICENSE file, so reuse of the code or the verse data needs the author's permission. The practical starting point is pnpm install and pnpm dev on a local checkout, and the practical first check is whether the six suggestions it offers on launch feel worth saving.
Frequently asked questions
What sources does Gushi Namer use to build Chinese baby names?
Seven classical anthologies: the Book of Songs (Shi Jing), Songs of Chu (Chu Ci), Tang poetry, Song lyric poetry in the ci form, the Yuefu ballad anthology, Three Hundred Classical Poems, and a set of famous fu and ci works. Each generated name keeps the verse line it came from, so the suggestion can be traced back to its source.
Do I need an account to save names in Gushi Namer?
No. Version 3.0.0 removed login and registration from the app flow, and favorites are stored locally in the browser instead. Because the data is local, the same release added JSON import and export so you can back up the list or move it to another browser.
How do I run Gushi Namer on my own machine?
Clone the repository, change into the gushi_namer directory, then run pnpm install followed by pnpm dev. The project uses Vite with React 19 and TypeScript, and the build step is pnpm build, which runs `tsc -b` before vite build. A deployed demo is also available on GitHub Pages.
Can I reuse the Gushi Namer code or its poem data?
Not without asking. The repository has no license identifier recorded and no LICENSE file in its tree, which means no permission is granted to reuse the code or the character data. The README credits the author as holynova, so any reuse needs the author's agreement first.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/holynova-gushi-namer)