Open-source project
Fechin/reference avatar
Fechin/reference

Fechin/reference: A Hexo Site That Ships Developer Cheat Sheets

⭕ Share quick reference cheat sheet for developers.

10,850 stars1,318 forksEJSGPL-3.0

At a glance

What is it?
Fechin/reference is a Hexo-based static site whose content is a large collection of developer cheat sheets, published at cheatsheets.zip. It is a content project with a build pipeline, not a library you import, and the fastest way to use it is to read the site or fork the repository.
Who is it for?
Adopt it as a reading resource or as a fork you host yourself if you want an offline or internal copy of the sheets; do not adopt it if you need a versioned package, a stable API, or per-sheet provenance. Before forking, check that your Node version satisfies the node:19 build stage in the Dockerfile, that you are comfortable with GPL-3.0 on the whole repository, and that the sheets you care about are in the list the README documents.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 82 days ago.
What is it written in?
Mainly EJS, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Fechin/reference actually is

The README describes Reference as "a collection of cheat sheets contributed by open source angels" that shares quick reference material for developers "in a nice layout." That is the whole product: pages of syntax, commands and shortcuts, rendered as a website. The repository is the source of that website, not a library, CLI or service. The homepage listed in the repository metadata is cheatsheets.zip, and the README states that the original domain for the project was quickref.me, which was acquired by a US-based company, after which cheatsheets.zip became the primary and maintained domain.

The audience is developers who want a lookup page open in a second tab: Bash, C, C++, C#, CSS 3, Dart, Docker, ES6, Go, GraphQL, HTML, INI, Java, JavaScript, jQuery, Kubernetes, LaTeX, Laravel, Markdown, MATLAB, PHP, Python, Rust, Sass, TOML, VHDL and YAML appear under the Programming group, while Toolkit covers ChatGPT prompts, VSCode shortcuts, Mitmproxy, XPath, Emacs and Emmet. The topics list on the repository adds awk, grep, sed, vim and snippets, so the coverage is deliberately broad rather than deep in one language.

Who it is not for: anyone expecting a package they can install and call. There is no published npm package for the sheets, no versioned content artifact, and no API. The unit of consumption is a web page.

Hexo, EJS and the build chain behind cheatsheets.zip

The primary language of the repository is EJS, and package.json names the project CheatSheets.zip with Hexo 7.3.0 pinned under the hexo key. The site generator is Hexo; themes/coo is the theme directory referenced by the scripts. CSS is processed separately by PostCSS from themes/coo/source/css/style.tailwindcss into themes/coo/source/css/style.css, which is why the dev and build scripts both run two things.

The build pipeline is explicit in package.json. build:clean runs hexo clean, build:rm-db.json removes db.json, build:css runs the PostCSS step, build:generate runs hexo generate, and build:gulp runs gulp with --max-old-space-size=4096. The npm-run-all style orchestration shows up as run-s build:* for the build and run-p dev:* for development. The gulp step handles post-processing: the dependency list includes gulp-htmlclean, gulp-htmlmin, gulp-minify-css, gulp-uglify-es and gulp-version-number, so the generated HTML is cleaned, minified, and stamped with a version number before deployment.

The Dockerfile mirrors that flow in three stages. The first stage uses node:19, installs pnpm globally with npm install -g pnpm, runs pnpm install and then pnpm run build. The second stage copies the resulting /app/public into an nginx:alpine image and swaps in the repository's nginx.conf. The third stage is a plain alpine image with nginx installed via apk, the built HTML copied in, port 80 exposed, and a HEALTHCHECK that runs wget against http://localhost:80 every second. The final CMD is nginx -g "daemon off;".

That three-stage layout is worth reading carefully, because the final image does not inherit from the nginx:alpine stage. It installs nginx again on alpine:latest and copies the config and HTML across. It works, but it means the nginx version in the running container is whatever apk resolves at build time, not the one pinned by the nginx:alpine tag used in stage two. If you build this for production, that is a reproducibility detail to decide about deliberately.

Installing and running Fechin/reference locally

There is no install step for using the sheets; the README points readers at https://cheatsheets.zip for the most up-to-date version. What you can install is the site generator, and package.json gives the commands. The scripts use pnpm, and the Dockerfile installs pnpm globally before running the build, so pnpm is the package manager the repository is set up around even though the lockfile here is pnpm-lock.yaml.

The dev script in package.json runs both the Hexo server and the PostCSS watcher in parallel. The two underlying scripts it composes are quoted directly in package.json:

json
"dev:hexo": "npx hexo clean && npx hexo server",
"dev:css": "npx postcss themes/coo/source/css/style.tailwindcss -o themes/coo/source/css/style.css --watch"

The first line cleans and then serves the site with Hexo; the second watches the Tailwind source file and writes the compiled stylesheet to themes/coo/source/css/style.css. Running pnpm run dev fires both, so you should see Hexo report its local server address while the CSS watcher keeps running in the same terminal session.

For a production build, the build script composes the clean, CSS, generate and gulp steps in sequence. The relevant entries from package.json:

json
"build:clean": "npx hexo clean",
"build:css": "npx postcss themes/coo/source/css/style.tailwindcss -o themes/coo/source/css/style.css",
"build:generate": "npx hexo generate",
"build:gulp": "npx gulp --max-old-space-size=4096"

The generated output lands in the public directory, which is the path the Dockerfile copies from. The gulp step is the memory-hungry one; the script passes --max-old-space-size=4096, so a machine or container with a low memory ceiling is likely to fail there rather than in Hexo itself.

If you prefer containers over a local toolchain, the repository ships a Dockerfile that does the whole build and serves the result. The build stage and the final image's entrypoint are visible in the file:

dockerfile
FROM node:19 AS build-app
RUN npm install -g pnpm
RUN pnpm install
RUN pnpm run build
dockerfile
EXPOSE 80
HEALTHCHECK --interval=1s --timeout=3s CMD wget -q -O - http://localhost:80 || exit 1
CMD ["nginx", "-g", "daemon off;"]

The image exposes port 80 and the healthcheck polls it with wget, so after the container starts you should be able to reach the rendered site on that port. The build stage uses node:19, so if you build outside Docker, check your local Node version against that.

Contributing a sheet: the part the README is thin on

The README invites pull requests: "If you notice a cheat sheet that could be improved, feel free to submit a pull request." It links to a Contributing anchor, but the excerpt does not spell out the format a new sheet has to follow, where sheets live under source/, or how the theme picks them up. The repository layout does show source/ and themes/ as top-level entries, and the site is generated by Hexo, so a contributor's realistic path is to find an existing sheet with the same structure, copy it, and change the content. That is inference from the layout, not a documented workflow, and it is the weakest part of the project's documentation.

The tooling around contributions is stricter than the contributing guide. There is a .commitlintrc.js and a .husky directory, so commits are linted through a hook; .lintstagedrc.js means staged files are checked before commit; Prettier and ESLint configs are present, and the test script runs lint:check and format:check. The commit script is cz, which is Commitizen. In practice that means a first-time contributor should expect the commit message format to be enforced before the code is even pushed, and should run the format and lint scripts locally rather than discovering the rules from a failed hook.

There is also a .gitmessage file and a prepare script that runs husky, so hooks are installed automatically on pnpm install. If you clone and install, you get the hooks whether or not you planned to contribute.

Where Fechin/reference is the wrong choice

The obvious failure mode is treating it as a dependency. Nothing in the README describes a published package, a versioned content bundle, or an API for retrieving a sheet. If you want cheat sheet content inside an editor plugin, a CI job or an internal tool, you are consuming HTML pages and would be scraping or forking rather than importing.

The second issue is content provenance and currency. The sheets are contributed, and the README frames the site as community-maintained. Individual sheets carry their own scope statements: the Laravel sheet is described as a reference for Laravel 8, the Emacs reference was made for Emacs 27, and the Python sheet is described as a one-page reference for Python 3. Those version anchors are stated by the project itself, and there is no per-sheet changelog or freshness marker in the README. For a language or framework that moves quickly, the sheet may be a snapshot rather than a current reference, and nothing on the page tells you which.

The third is licensing scope. The repository is GPL-3.0. If you fork the site and republish it, or embed sheet content in another product, the licence applies to the repository as a whole. That is a distribution question, not a reading question; reading the site at cheatsheets.zip is unaffected. Anyone planning to reuse the content in a commercial product should read the LICENSE file rather than assume the sheets are freely relicensable.

Finally, the build has a resource floor. The gulp step runs with --max-old-space-size=4096, and the Docker build runs pnpm install and a full build inside a single stage. On a small CI runner or a constrained container, that is where the build is most likely to break.

How it compares with a docs generator you already run

The closest alternative in kind is a general static site generator used for documentation, such as Docusaurus or MkDocs. The difference is not the rendering technology, it is the content model. Docusaurus and MkDocs are frameworks you bring your own content to; Fechin/reference is a framework plus a large, already-written corpus of cheat sheets, organized around short lookup pages rather than long-form guides. If your goal is a company handbook, a docs generator is the right tool and this repository is not. If your goal is a printable or offline reference set for a team, forking this repository gives you the corpus on day one, at the cost of inheriting its structure and its GPL-3.0 licence.

A second comparison is with the per-language official documentation sites the README links to, such as docs.docker.com, go.dev, laravel.com/docs/8.x and python.org. Those are authoritative and versioned; the cheat sheets here are compressed and community-written. The trade-off is speed of lookup against authority. A cheat sheet wins when you already know what you are doing and need the flag name. It loses when the flag changed in a version you are actually running.

Within the repository, Hexo is the load-bearing choice. Hexo is a mature generator with a plugin ecosystem, and the dependency list shows the usual suspects: hexo-generator-index, hexo-generator-sitemap, hexo-pagination, hexo-excerpt, hexo-filter-nofollow. Using Hexo means contributors need to understand Hexo's content conventions and the coo theme's expectations at the same time, which is a steeper entry point than a Markdown-only docs folder. That is a real cost, and it is the main reason a casual contributor might bounce off the repository.

Maintenance signals and upgrade cost

The repository is not archived, and the last push recorded for it is 2026-06-26. That is the only maintenance signal available here; there are no releases retrieved, so there is no changelog to read and no tagged version to pin against. For a content site that is not necessarily a problem, but it does mean you cannot diff between versions to see what changed in a sheet.

Upgrade cost sits mostly in the JavaScript toolchain. package.json pins Hexo at ^7.3.0 under dependencies and declares hexo 7.3.0 in the hexo field, and the dependency list is long enough that a major bump in any one of gulp, postcss, tailwind or hexo will ripple. The repository includes its own upgrade helpers: deps:check runs npx npm-check-updates, deps:update runs npm-check-updates -u followed by pnpm install, and there are audit, audit:fix and security:check scripts built on pnpm audit and pnpm outdated. Those scripts existing in package.json is a reasonable sign that dependency drift is expected and handled, but it also means staying current is an active task rather than a one-time setup.

The Dockerfile adds a second upgrade axis. The build stage uses node:19, which is an older Node line, and the final stage installs nginx from alpine:latest with apk. Neither is pinned by digest, so rebuilding the same commit later can produce a different image. If you self-host, pinning those base images is the first change worth making.

On licensing: the repository is GPL-3.0, and the README links to the LICENSE file in the repository. GPL-3.0 is a copyleft licence, so redistributing a modified version carries obligations. This is a description of the licence, not legal advice; if you plan to redistribute or embed the content, read the LICENSE file and get your own advice.

Editorial conclusion

Adopt it as a reading resource or as a fork you host yourself if you want an offline or internal copy of the sheets; do not adopt it if you need a versioned package, a stable API, or per-sheet provenance. Before forking, check that your Node version satisfies the node:19 build stage in the Dockerfile, that you are comfortable with GPL-3.0 on the whole repository, and that the sheets you care about are in the list the README documents.

Frequently asked questions

What is Fechin/reference and who is it for?

It is a collection of developer cheat sheets, described in the README as contributed by open source angels and presented in a nice layout. It is for developers who want a quick lookup page for a language, tool or command set, not for anyone looking for a library to import.

How do I install Fechin/reference?

You do not install the sheets; the README points readers to https://cheatsheets.zip for the most up-to-date version. To run the site yourself, package.json defines a pnpm-based workflow: install pnpm, run pnpm install, then pnpm run dev for a local server or pnpm run build for the public output.

Which cheat sheets does Fechin/reference include?

The README groups them into Programming (Bash, C, C++, C#, CSS 3, Dart, Docker, ES6, Go, GraphQL, HTML, INI, Java, JavaScript, jQuery, Kubernetes, LaTeX, Laravel, Markdown, MATLAB, PHP, Python, Rust, Sass, TOML, VHDL, YAML) and Toolkit (ChatGPT, VSCode, Mitmproxy, XPath, Emacs, Emmet). The repository topics also list awk, grep, sed, vim and snippets.

Can I run Fechin/reference with Docker?

Yes. The repository includes a Dockerfile that builds the site on node:19 with pnpm, copies the generated public directory into an nginx image, and serves it on port 80 with a wget healthcheck. If you build the image yourself, remember it installs nginx on alpine:latest in the final stage rather than inheriting the nginx:alpine stage.

What licence does Fechin/reference use?

The repository is licensed under GPL-3.0, and the README links to the LICENSE file in the repository. Reading the published site is not affected, but redistributing a modified copy or embedding the content carries copyleft obligations.

Why is cheatsheets.zip the domain instead of quickref.me?

The README states that the original domain for the project was quickref.me, which was acquired by a US-based company, and that cheatsheets.zip is now the primary and maintained domain. The README directs readers to cheatsheets.zip for the most up-to-date cheat sheets.

Official sources

  1. Fechin/reference on GitHub
  2. Issues
  3. License: GPL-3.0
  4. Project website
  5. README
Community notes

Community notes