The source for the Amezmo docs: everything on
zero-downtime PHP hosting, from your first git push to tuning Nginx, OPcache,
and Redis on a production instance. Published at
amezmo.com/docs.
This repo is Markdown and nothing else. No framework, no package manager,
no build step, no dependencies to install. Clone it, open a .md file in your
editor's preview, and you are looking at the page. That means the distance
between "this paragraph is wrong" and a merged fix is about four minutes.
You already know something we got wrong. Ship it:
$ git clone git@github.com:amezmo/docs.git
$ cd docs
$ git checkout -b fix-cron-timezone-note
$ $EDITOR cron/index.md
$ python3 .github/scripts/check_links.pyThen open a pull request. Typo fixes, a missing flag, a code sample that no longer runs, an entire new how-to guide: all of it is welcome, and small PRs get merged fast.
Good first contributions:
- Fix a code sample you tried and found stale.
- Add the gotcha that cost you an hour, as a
> [!WARNING]callout. - Write the how-to guide for your framework in how-to-guides/.
- Document an endpoint the REST API section is missing.
Read the contributor rulebook before a larger change. It covers page layout, the API reference format, the changelog format, and the house writing style. It's written for Claude Code, and it's the same rulebook a human needs.
CI runs these four on every push and pull request. Run them from the repo root first:
$ python3 .github/scripts/check_links.py # internal links resolve
$ python3 .github/scripts/check_image_paths.py # images use absolute URLs
$ codespell --config .codespellrc # spelling
$ python3 .github/scripts/check_backlinks.py # backlinks (warn-only)The first three gate the build. The backlink check only reports.
Internal links are relative and keep their .md suffix, so they work in the
GitHub file browser and on the rendered site: releases.md for a sibling,
../instances/scaling.md across sections. Never use a /docs/-absolute or
extensionless path.
Links are reciprocal. When one content page links to another, the target links
back. Landing pages are exempt, and deliberate one-way links are recorded in
.github/backlink-ignore.txt
with a comment explaining why.
Pages render through league/commonmark with the attributes and description list extensions, plus GitHub alert callouts:
> [!WARNING]
> Restoring a backup overwrites the target database.New pages are linked from their section's index.md. Nothing is
auto-discovered by a nav generator.
index.md is the home page. The big sections:
| Section | What's in it |
|---|---|
| Instances | Dedicated and full-stack servers, scaling, private networking |
| Deployments | Atomic zero-downtime releases, hooks, instant rollbacks |
| Databases | Managed MySQL, backups, restores between environments |
| REST API | Endpoint reference for automating the dashboard |
| How-to guides | Laravel, Craft CMS, Drupal, and friends |
| Domains, Cron, Workers | The rest of the platform surface |
Built by the people who use it.
Your avatar goes here on your first merged PR.