You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4777f9d
Browse filesBrowse the repository at this point in the historyBrowse files
Add structured subcategory + facet taxonomy to the resource catalog
Replaces the old free-form 'tags' list with the OurSQL Universe
structure/tags spec: each of the 8 categories now has a controlled
subcategory list and a small set of tag facets (compatibility,
deployment, pricing, cloud provider, geography, etc.), each rendered
as its own filter row on the category's page.
- data/taxonomy_schema.yaml is the single source of truth: per-category
subcategory list + facet groups (key/path/label/values). Read by the
templates to render filter rows and by RESOURCES.md to document the
vocabulary for contributors.
- hugo.yaml declares one Hugo taxonomy per facet. Some are shared
across categories with identical vocab (compatibility, pricing,
language, country) so browsing a term aggregates matches from every
section that uses it, rather than being siloed per category.
- Geography: the old Events-only 'event_country' becomes a general
'country' taxonomy any section can use (Services now does), at the
same country-level detail, always with a 'Global' option guaranteed
present in the filter regardless of what content currently uses it.
- All 32 existing resources reclassified into the new subcategories
and given real facet values based on their actual descriptions.
- Fixed a Hugo taxonomy gotcha along the way: the front matter field
for a taxonomy must be the *plural* name from hugo.yaml, not the
singular key — using the singular silently indexes zero terms. Also
fixed a related routing issue where layouts/_default/term.html alone
doesn't get selected for individual term pages in this project; each
taxonomy now has a tiny layouts/<plural>/term.html delegating to a
shared partial (tools/generate-taxonomy-term-layouts.sh regenerates
these if a taxonomy is ever added or renamed).
- Mobile: filter rows stack the label above the pills below the md
breakpoint instead of the fixed 72px side label, which overlapped
the pills once labels got longer than 'Tags'/'Country'/'Year'.
- Updated RESOURCES.md and the 7 non-press issue templates (subcategory
dropdown replacing the old freeform tags hint) to document/collect
the new fields.
Known gaps, left for follow-up: a few subcategory assignments were
best-effort judgment calls without a perfect-fit option in the spec
(e.g. single-author blogs and the 3306 initiative under Community's
'Blog Aggregators', which otherwise only fits true aggregators); Member
Directory's facets are wired up but unpopulated since the section has
no content yet.
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,6 +73,8 @@ hugo server -D
73
73
74
74
`tools/generate-resource-dates.sh` builds `data/resource_added.yaml` — the "date added" for each resource, read from git history, used by the Recently Added section on `/resources/`. Re-run it any time you want that section to reflect the latest history; it also runs automatically in CI before every deploy.
75
75
76
+
If you add a new taxonomy to `hugo.yaml`'s `taxonomies:` map, also run `tools/generate-taxonomy-term-layouts.sh` (and add the new plural name to the list inside it first) — Hugo doesn't reliably fall back to `layouts/_default/term.html` for individual term pages in this setup, so each taxonomy needs its own `layouts/<plural>/term.html`. These are committed to the repo, not generated in CI.
77
+
76
78
Open [localhost:1313](http://localhost:1313) in your browser.
Copy file name to clipboardExpand all lines: RESOURCES.md
+58-13Lines changed: 58 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,45 +60,90 @@ aggregator-mysql-events.md ← for aggregator pages without a specific dat
60
60
title: "Resource Name"
61
61
link: "https://example.com"
62
62
description: "One or two sentences describing what it is."
63
-
tags: ["tag1", "tag2"]
63
+
subcategories: ["Database Software"] # pick from the list for this section, see below
64
64
---
65
65
```
66
66
67
-
**Books (leaf bundle with cover image):**
67
+
Every resource also carries a handful of **tag facets** — small, controlled sets of values (not free text) used to power the filters on each category page. The field name in front matter must be the **plural** shown below — Hugo taxonomies require it. The full machine-readable list (including which URL each one filters to) lives in [`data/taxonomy_schema.yaml`](data/taxonomy_schema.yaml); this is the human-readable version of the same thing.
68
+
69
+
Pick a `subcategories` value from your section's list, and set whichever facets apply — all are optional and multi-value (a resource can carry more than one).
**`content/resources/events/`** — subcategories: Foundation Events · Community Calls · Webinars · Meetups · Conferences · Partner & Member Events · Past Events & Recordings — prefix the filename with the date
82
121
```yaml
83
-
author: "Percona"
122
+
date: 2026-09-11
123
+
format: "in-person" # or "online" — drives the card's Online/In-person badge
124
+
city: "Amsterdam" # optional, only for in-person events
125
+
countries: ["Netherlands"] # a country name, or "Global" for an online/worldwide event
> Slashes ("/") aren't safe inside a facet value — Hugo treats them as URL path separators and breaks the filter link. Use "&" or "," instead (e.g. "Slack, Discord & IRC", not "Slack / Discord / IRC").
0 commit comments