Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
2feaeb4
docs: fix Markdown lint issues
davlgd Aug 26, 2026
469d235
addons(cellar): document Object Lock
davlgd Aug 26, 2026
5ce22ad
guides: add Maudit
davlgd Aug 26, 2026
39a836e
addons(metabase): document the official CLI
davlgd Aug 27, 2026
fff6430
develop(build-hooks): fix Pre Build hook behavior on deployments from…
welcoMattic Aug 28, 2026
643bc28
develop(build-hooks): use active voice for hook execution
davlgd Aug 28, 2026
60b5d4b
changelog: Keycloak 26.7.3
davlgd Aug 31, 2026
dbc14b5
postmortem: 2026-08-07
davlgd Sep 1, 2026
457ec85
changelog: MySQL 9.7
davlgd Sep 1, 2026
9259965
changelog: PostgreSQL 18 by default
davlgd Sep 1, 2026
fb51560
changelog: PHP 8.5 by default
davlgd Sep 1, 2026
9dca32e
docs(contributing): align commit conventions with changelog practice
davlgd Sep 2, 2026
65145e5
chore: remove dead files, drafts and stale lint configuration
davlgd Sep 2, 2026
2edaa2e
api: merge the how-to page into the section index
davlgd Sep 2, 2026
7901b30
find-help: merge support into the index and restructure the FAQ
davlgd Sep 2, 2026
9b26b8e
doc: reorder the sidebar and give each page a distinct weight
davlgd Sep 2, 2026
cfd81e3
doc(getting-started): rename the quickstart page and update its labels
davlgd Sep 2, 2026
ccb4e7f
docs(agents): require aliases and link updates when content moves
davlgd Sep 2, 2026
5ffd27c
feat(hugo): shorten the edit page link and reuse the external link arrow
davlgd Sep 2, 2026
0d8b51d
fix(hugo): make the navbar span the full page width
davlgd Sep 2, 2026
4e68eb6
guides: fix external card links broken by angle brackets
davlgd Sep 2, 2026
b6c6ef2
fix(layouts): restore the skip-link anchor and copy-page block in cha…
davlgd Sep 2, 2026
0702556
feat(ci): add an offline internal link and anchor checker
davlgd Sep 2, 2026
f31a6d3
doc: fix internal links pointing at renamed or missing anchors
davlgd Sep 2, 2026
37ffc8e
postmortem(2024-08-02): convert HTML tables to Markdown
davlgd Sep 2, 2026
334bb8b
doc: point redirecting internal links at their destination
davlgd Sep 2, 2026
7eb03ad
fix(layouts): render shortcodes and links in the Markdown output
davlgd Sep 2, 2026
bd8415c
fix(ci): stop linting Hugo templates as Markdown
davlgd Sep 2, 2026
e33e49f
doc: redirect legacy URLs still hit with 404s
davlgd Sep 2, 2026
819630f
addons(jenkins): fix an image title cut short by an apostrophe
davlgd Sep 2, 2026
35cb477
doc: resolve duplicate aliases and redirect Clever Grid URLs
davlgd Sep 2, 2026
212e7dc
doc: reorganise the documentation sidebar into sections
davlgd Sep 2, 2026
8f4a3c3
chore(vale): accept product names used across the documentation
davlgd Sep 9, 2026
244edea
doc: rename the account section and merge billing into its index
davlgd Sep 9, 2026
c1fc8bc
doc: add introductions and icons to the section hubs
davlgd Sep 9, 2026
9a01b59
develop(otoroshi-challenge): document the Otoroshi challenge middleware
davlgd Sep 9, 2026
ed22070
develop(redirectionio): document the Redirection.io middleware
davlgd Sep 9, 2026
ac510af
kubernetes(operator): list the supported add-ons from the operator re…
davlgd Sep 9, 2026
f7a581c
tools(terraform): document the Terraform and OpenTofu provider
davlgd Sep 9, 2026
65e2c33
doc: merge the administrate and reference pages into their hubs
davlgd Sep 9, 2026
a959514
develop(login-with-clever-cloud): document OAuth consumers and custom…
davlgd Sep 9, 2026
6b572d4
develop(mise): document Mise tools, environment and tasks
davlgd Sep 9, 2026
dad52e0
doc(ai-llms): document driving Clever Cloud from an AI agent
davlgd Sep 9, 2026
a4d40aa
changelog: documentation reorganisation and new pages
davlgd Sep 9, 2026
d942b53
guides(docs): rewrite Docs deployment guide
davlgd Aug 27, 2026
d92b2c5
guides(docusaurus): update Docusaurus deployment steps
davlgd Aug 27, 2026
68cd4a4
guides(haskell-metrics): fix EKG StatsD example
davlgd Aug 27, 2026
d9d4f4b
guides(eleventy): simplify Eleventy deployment
davlgd Aug 27, 2026
3466010
guides(fluentd): replace legacy Docker deployment
davlgd Aug 27, 2026
0f5af94
guides(echoip): modernize EchoIP deployment
davlgd Aug 27, 2026
0e2966c
guides(hexo): simplify Hexo deployment
davlgd Aug 27, 2026
76f8534
guides(hugo-cellar): clarify Cellar static hosting limits
davlgd Aug 27, 2026
8edef54
guides(hugo): replace outdated Hugo example
davlgd Aug 27, 2026
7283281
guides(kibana): document managed Kibana deployment
davlgd Aug 27, 2026
ab8bc4a
guides(lume): document required build resources
davlgd Aug 27, 2026
3125564
guides(mdbook): simplify mdBook deployment
davlgd Aug 27, 2026
2715b5d
guides(mkdocs): simplify MkDocs deployment
davlgd Aug 27, 2026
4dbcec1
guides(moodle): rewrite Moodle deployment guide
davlgd Aug 27, 2026
53747f5
guides(node-mongodb): update MongoDB example deployment
davlgd Aug 27, 2026
807b289
guides(node-metrics): replace node-statsd with hot-shots
davlgd Aug 27, 2026
20d7b6e
guides(otree): rewrite oTree deployment guide
davlgd Aug 27, 2026
431e8c9
guides(pgpool): rewrite Pgpool-II configuration guide
davlgd Aug 27, 2026
9e68896
guides(proxysql): update ProxySQL configuration guide
davlgd Aug 27, 2026
a7b832a
guides(django): replace legacy Django example
davlgd Aug 27, 2026
82627e1
guides(rails): replace legacy Rails example
davlgd Aug 27, 2026
a1cfe3a
guides(rack-tutorial): rewrite Rack deployment tutorial
davlgd Aug 27, 2026
6993430
guides(rack): update Ruby Rack deployment
davlgd Aug 27, 2026
efb3893
guides(drupal): rewrite Drupal deployment guide
davlgd Aug 27, 2026
8fa4d0b
guides(laravel): rewrite Laravel deployment guide
davlgd Aug 27, 2026
4f5c980
guides(symfony): rewrite Symfony deployment guide
davlgd Aug 27, 2026
d37bea7
guides(wordpress): rewrite WordPress deployment guide
davlgd Aug 27, 2026
bc30a7b
guides: point internal links at their new destination
davlgd Sep 9, 2026
a682960
security(certifications): document versatile cloud and certifications
davlgd Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 0 additions & 10 deletions .github/styles/Guides/ellipsis.yml

This file was deleted.

26 changes: 26 additions & 0 deletions .github/styles/config/vocabularies/Doc/accept.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
add-on
allowlist
allowlists
ANSI
Ant
APIs
app_id
Astro
AstroWind
auditability
Azimutt
Bao
Blackfire
boto
Bpifrance
Caddy
Caddyfile
callout
Expand All @@ -25,33 +30,43 @@ CRDs
cron
CVE
Cyberduck
cybersecurity
Datadog
declaratively
Deno
DNS
Dockerfile
dotenv
downtimes
Entra
EOL
ESLint
failover
Filestash
FileZilla
Fluentd
FPM
FrankenPHP
FSBucket
Gemfile
GlassFish
Gradle
Grafana
hardcode
hardcoded
hardcoding
healthcheck
Heptapod
Hextra
Hono
hostname
Infinispan
IONOS
IPSec
jarName
JBoss
JSDoc
Kestra
Keycloak
kubectl
Laravel
Expand All @@ -62,9 +77,11 @@ LTS
Lume
Materia
Matomo
Maudit
Maven
Metabase
middleware
misconfiguration
Monolog
monorepo
monorepository
Expand All @@ -78,6 +95,8 @@ Nuxt
OAuth
Okta
Otoroshi
Outline
OVHcloud
packageManager
Payara
Percona
Expand All @@ -92,14 +111,19 @@ rclone
Redict
redirections
RSS
runtime's
runtimes
sbt
scalers
Scaleway
SCMs
serverless
Servlet
SFTPGo
shortcode
Sidekiq
subcommand
subcommands
Symfony
syslog
Telegraf
Expand All @@ -108,6 +132,8 @@ toolchain
tooltip
tooltips
URIs
uv
Veritas
VS Code
WAF
webroot
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ Thumbs.db

# Configuration files
.clever.json
.vale.ini

# Build/cache files/folders
/.hugo_build.lock
Expand Down
7 changes: 0 additions & 7 deletions .gitlab-ci.yml

This file was deleted.

6 changes: 6 additions & 0 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"gitignore": true,
// Hugo templates for the Markdown output format carry a .md suffix but are Go
// templates, not Markdown. See layouts/page.markdown.md and layouts/_partials/.
"ignores": ["layouts/**"]
}
30 changes: 21 additions & 9 deletions .markdownlint.jsonc
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
{
"MD041": false,
"MD013": false,
"MD051": false,
"MD029": false,
// MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md033.md
"MD033": {
"MD004": {
"style": "dash"
},
"MD013": false,
"MD029": false,
// MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md033.md
"MD033": {
// Allowed elements
"allowed_elements": [
"br",
"cc-smart-container",
"cc-pricing-product",
"cite"
]
},
// MD034/no-bare-urls : shortcode attributes such as {{< card link="https://..." >}}
// are not Markdown, but markdownlint reads them as bare URLs. Wrapping the value in
// <> silences the rule and makes Go reject the URL, rendering href="#ZgotmplZ".
// Keep URLs bare in shortcode attributes.
"MD034": false,
"MD041": false,
"MD051": false,
"MD055": {
"style": "leading_and_trailing"
},
"MD060": {
"style": "aligned"
}
}
}
2 changes: 0 additions & 2 deletions .markdownlintignore

This file was deleted.

4 changes: 2 additions & 2 deletions .vale.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ MinAlertLevel = suggestion
Packages = Hugo, Google

[*.md]
BasedOnStyles = Clever, Vale, Google, Guides
BasedOnStyles = Clever, Vale, Google
Google.Headings = NO
Vale.Terms = NO
Google.Parens = NO
Google.Ellipses = NO

[*.xml]
Transform = docbook-xsl-snapshot/html/docbook.xsl
Transform = docbook-xsl-snapshot/html/docbook.xsl
40 changes: 37 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,23 @@ This file provides repository-wide guidance to coding agents working on Clever C
## Common Development Commands

### Hugo Site Development

- **Install development dependencies**: `mise install` - Installs the tools declared in `mise.toml`
- **Local development**: `hugo server` - Serves site at http://localhost:1313 with live reload
- **Local development**: `hugo server` - Serves site at <http://localhost:1313> with live reload
- **Build for production**: `hugo` - Outputs to `public/developers/`
- **Preview drafts**: `hugo server --buildDrafts` - Include draft content in local preview
- **Update CLI reference**: `./update-cli-reference.sh` - Fetches latest clever-tools documentation

### Content Generation

- **New guide**: `hugo new content guides/<framework>.md`
- **New documentation**: `hugo new content/doc/administrate/<feature>.md`
- **New application runtime**: `hugo new content --kind applications doc/applications/<runtime>.md`

## Project Architecture

### Content Organization

This is a Hugo-based documentation site using the Hextra theme with the following structure:

- **`/content/`** - All documentation content:
Expand All @@ -36,7 +39,9 @@ This is a Hugo-based documentation site using the Hextra theme with the followin
- **`/layouts/`** - Hugo templates and shortcodes for content rendering

### Content Types and Front Matter

Content uses Hugo front matter with fields such as:

- `type: docs` - Content layout type
- `weight` - Sidebar ordering (integer)
- `linkTitle` - Short title for sidebar navigation
Expand All @@ -47,18 +52,30 @@ Content uses Hugo front matter with fields such as:
- `excludeSearch: true` - Excludes from search index (recommended for changelog)

For changelog entries, also include:

- `date: YYYY-MM-DD` - Publication date
- `tags` - Array of product tags (lowercase)
- `authors` - Array with `name`, `link`, `image` fields

### Moving or Merging Content

When a page moves to another URL, or when its content is merged into another page:

- Always add the old URL to the destination page's `aliases`, so Hugo keeps serving a redirect
- Carry over every alias the removed page already declared; they must keep resolving
- Update internal links to target the new URL directly instead of relying on the redirect, especially in `shared/` blocks included by many pages
- Check each redirect in the build output before committing

### Shared Content System

- Include shared content: `{{% content "filename" %}}`
- Include shared content with shortcodes: `{{% content-raw "filename" %}}`
- Shared files should not contain headings (breaks ToC generation)

## Quality Standards

### Content Quality Requirements

- Use second person ("you") addressing readers directly
- Write in active voice, avoid passive constructions
- Use `organisation` and `organisations`, rather than `organization` and `organizations`; this isn't a general British-spelling requirement
Expand All @@ -67,45 +84,57 @@ For changelog entries, also include:
- Explain prerequisites and non-obvious behaviour, while keeping the main task path concise

### Prohibited Elements

- First-person pronouns: I, me, my, we, us, our, let's
- Placeholder phrases: "please note", "at this time", "it should be noted"
- Overconfident claims: "simply", "just", "easily", "quickly", "obviously"
- Time-dependent promises: "soon", "in the future", "coming next month"

### Markdown and Editorial Standards

- **Markdown linting**: Run `markdownlint-cli2 "**/*.md"` with config in `.markdownlint.jsonc`
- **Editorial checks**: Run Vale with `vale <files>` for style and terminology
- **Build verification**: Always test with `hugo` before committing
- **Structure**: Use 2-4 well-developed paragraphs per section, minimize bullet lists
- **Paragraphs**: Aim for 3-6 lines for optimal readability

### Callouts

- Prefer GitHub-style callouts with a concise title on the marker line, as supported by the theme:

```markdown
> [!NOTE] Current behaviour
> This information helps readers understand the current behaviour

> [!WARNING] Back up your data
> Back up your application database before upgrading
```

- Use the Hugo `{{< callout >}}` shortcode only when GitHub-style syntax can't provide the required rendering or behaviour
- Limit callouts to one or two per page

### Commit Messages

- For content updates, use `section(page): commit message`, for example:
- `addons(postgresql): document pg_partman support`
- `applications(nodejs): clarify pnpm configuration`
- `changelog(metabase): announce 0.63.14 security update`
- `guides: add SvelteKit` for a new deployment guide
- For changelog entries, use `changelog: what you announce`. Name the product and its version, or the change itself, instead of starting with a verb:
- `changelog: Keycloak 26.7.3`
- `changelog: MySQL 8.0.46 and 8.4.10`
- `changelog: PostgreSQL 18 by default`
- `changelog: images updates, 2026W34`
- Commit a changelog entry with the documentation pages and data files it relies on, so an announcement never lands before the pages it links to
- For documentation structure, Hugo, deployment, CI, tooling, or dependency changes, use standard Conventional Commits, for example:
- `feat(hugo): add a shortcode for version tables`
- `fix(ci): run Vale on shared content`
- `refactor(layouts): simplify changelog rendering`
- `chore(deps): update the Hextra theme`
- Split content and structural changes into separate commits when possible
- Start the subject with a lowercase imperative verb
- Start the subject with a lowercase imperative verb, except for changelog entries

### Code and Technical Examples

- Always provide complete, runnable code examples
- Keep commands literally copyable: don't put shell-invalid placeholders or bracketed optional arguments in executable code blocks
- Show optional flags in separate examples or explain where to add them
Expand Down Expand Up @@ -145,11 +174,13 @@ The site is configured for Clever Cloud hosting with the `static` runtime and th
`CC_DISABLE_MISE` prevents Clever Cloud from installing the local development dependencies because the platform manages the deployment tools directly.

## Data Management

Runtime versions and software compatibility information is maintained in `/data/runtime_versions.yml` and should be kept current with platform capabilities. The site generates various output formats including standard HTML and a special LLMS output format at `/llms.txt` for AI consumption.

## Hugo Shortcodes and Features

### Content Shortcodes

- `{{% content "filename" %}}` - Include shared content from `/shared/` directory
- `{{% content-raw "filename" %}}` - Include shared content containing shortcodes
- `{{% steps %}}` - Create step-by-step instructions for guides
Expand All @@ -159,17 +190,20 @@ Runtime versions and software compatibility information is maintained in `/data/
- `{{< hextra/hero-subtitle >}}` - Add engaging subtitles in guides

### Hugo Content Types

- **Documentation pages**: Use `type: docs` in front matter
- **Guides**: Use step-by-step structure, hero subtitles, and cards when they improve the guide
- **Changelog entries**: Include date, tags, and author information
- **API documentation**: Structured reference content

### Hextra Theme Features

- **Search**: Full-text search using FlexSearch
- **Dark mode**: Automatic theme switching
- **Responsive navigation**: Sidebar and mobile-friendly menus
- **Edit links**: Direct GitHub editing integration
- **Syntax highlighting**: Code block highlighting with copy functionality

## File Standards

All text files must end with a newline.
12 changes: 11 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,22 @@ For content updates, use `section(page): commit message`. The section and page i
```text
addons(postgresql): document pg_partman support
applications(nodejs): clarify pnpm configuration
changelog(metabase): announce 0.63.14 security update
guides: add SvelteKit
```

Use `guides: add Product` when adding a deployment guide. Start the subject with a lowercase imperative verb.

Changelog entries are the exception. Use `changelog: what you announce`, naming the product and its version or the change itself rather than starting with a verb:

```text
changelog: Keycloak 26.7.3
changelog: MySQL 8.0.46 and 8.4.10
changelog: PostgreSQL 18 by default
changelog: images updates, 2026W34
```

Commit a changelog entry together with the documentation pages and data files it relies on, so an announcement never lands before the pages it links to.

For changes to the documentation structure, Hugo configuration or templates, deployment, CI, tooling, or dependencies, use the standard Conventional Commits format `type(scope): commit message`:

```text
Expand Down
Loading
Loading