A privacy-first static web app for finding and copying Unicode emojis. It uses native HTML, CSS, and JavaScript in the browser, generates a real static route for every emoji, and deploys to GitHub Pages without a backend, trackers, cookies, or third-party runtime code.
Requirements: Node.js 22 or newer.
npm ci
npm run devOpen http://localhost:4173/ or a detail route such as http://localhost:4173/waving-hand/. The development server rebuilds when source data, templates, styles, scripts, or build code changes.
Useful commands:
npm run data:validatevalidates catalogue and route invariants.npm testruns unit and build integration tests with coverage.npm run buildcreates the deployabledist/directory.npm run verify:buildchecks generated routes, assets, metadata, and sitemap entries.npm run checkruns formatting, linting, validation, tests, build, and output verification.
Test a GitHub project-site base path with:
SITE_URL=https://owner.github.io/emoji-copy/ npm run buildThe canonical catalogue is data/emojis.json. Curated aliases are merged from
data/overrides.json, and approved legacy paths are declared in data/redirects.json. A successful
build writes the browser catalogue and generates /<slug>/index.html for every canonical record.
The controlled importer accepts reviewed local Unicode emoji-test.txt and English CLDR annotation
JSON files. It imports fully-qualified sequences, preserves published slugs and aliases, records
SHA-256 provenance, and never fetches live data during a normal build. Run npm run data:import --
without parameters to see the required options, or use the manual Update emoji data workflow with
pinned HTTPS URLs and expected digests; that workflow opens a pull request and never deploys or
auto-merges.
Do not edit or commit dist/. See CONTRIBUTING.md and
ARCHITECTURE.md for the maintainer contract and complete design.
Set Settings → Pages → Build and deployment → Source to GitHub Actions. Pushes to main run
the quality suite, build with the Pages-provided base URL, upload dist/, and deploy through the
protected github-pages environment. Pull-request CI has read-only repository permissions.
Emoji names, categories, and annotation terminology are based on the Unicode Emoji and Unicode CLDR projects. Unicode data files and software are governed by the Unicode License. Native emoji glyph artwork is supplied by the user's operating system and is not distributed by this repository.
Source provenance is recorded in data/sources.lock.json. The seed catalogue is deliberately small;
a controlled, pinned upstream import should record release URLs and cryptographic digests before a
full data refresh is merged.
Source code is available under the MIT License.