Skip to content

Commit 888e1c6

Browse files
authored
Merge pull request #20 from Mazizova/resources-taxonomy-overhaul
Add structured subcategory + facet taxonomy to the resource catalog
2 parents cf34606 + 13521a5 commit 888e1c6

90 files changed

Lines changed: 1989 additions & 629 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/ISSUE_TEMPLATE/resource-books.yml‎

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,24 @@ body:
3636
attributes:
3737
label: "Publication year"
3838
placeholder: "e.g. 2022"
39+
- type: dropdown
40+
id: subcategory
41+
attributes:
42+
label: "Subcategory"
43+
options:
44+
- Books
45+
- Blogs
46+
- Newsletters
47+
- Reports & Research
48+
- Whitepapers
49+
- Case Studies
50+
- Podcasts & Videos
51+
- Documentation Portals
52+
validations:
53+
required: true
3954
- type: input
4055
id: tags
4156
attributes:
42-
label: "Tags"
43-
description: "Comma-separated. Suggested: beginner, advanced, practical, performance"
44-
placeholder: "advanced, performance"
57+
label: "Additional tags (optional)"
58+
description: "Topic, audience, pricing — see the full list in RESOURCES.md. Comma-separated."
59+
placeholder: "Performance, DBA, Paid"

‎.github/ISSUE_TEMPLATE/resource-community.yml‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,22 @@ body:
2424
description: "1–2 sentences on what it is."
2525
validations:
2626
required: true
27+
- type: dropdown
28+
id: subcategory
29+
attributes:
30+
label: "Subcategory"
31+
options:
32+
- Forums
33+
- "Slack, Discord & IRC"
34+
- Mailing Lists
35+
- Reddit & Social
36+
- Blog Aggregators
37+
- Podcasts & Videos
38+
validations:
39+
required: true
2740
- type: input
2841
id: tags
2942
attributes:
30-
label: "Tags"
31-
description: "Comma-separated. Suggested: blogs, news, forums, chat, support"
32-
placeholder: "blogs, news"
43+
label: "Additional tags (optional)"
44+
description: "Platform, language, access — see the full list in RESOURCES.md. Comma-separated."
45+
placeholder: "Forum, English, Open"

‎.github/ISSUE_TEMPLATE/resource-events.yml‎

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,31 @@ body:
4242
attributes:
4343
label: "City, Country"
4444
placeholder: "e.g. Amsterdam, Netherlands"
45+
- type: dropdown
46+
id: subcategory
47+
attributes:
48+
label: "Subcategory"
49+
options:
50+
- Foundation Events
51+
- Community Calls
52+
- Webinars
53+
- Meetups
54+
- Conferences
55+
- Partner & Member Events
56+
- Past Events & Recordings
57+
validations:
58+
required: true
59+
- type: dropdown
60+
id: organizer
61+
attributes:
62+
label: "Organizer"
63+
options:
64+
- OurSQL Foundation
65+
- Community
66+
- Member & Partner
4567
- type: input
4668
id: tags
4769
attributes:
48-
label: "Tags"
49-
description: "Comma-separated. Suggested: conference, free, open-source"
50-
placeholder: "conference, free"
70+
label: "Additional tags (optional)"
71+
description: "Comma-separated."
72+
placeholder: "Free"

‎.github/ISSUE_TEMPLATE/resource-saas.yml‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,22 @@ body:
2424
description: "1–2 sentences on what it is and why it belongs here."
2525
validations:
2626
required: true
27+
- type: dropdown
28+
id: subcategory
29+
attributes:
30+
label: "Subcategory"
31+
options:
32+
- Managed Databases
33+
- Monitoring SaaS
34+
- Backup & Recovery SaaS
35+
- Migration & Replication SaaS
36+
- Developer Platforms
37+
- Security & Compliance SaaS
38+
validations:
39+
required: true
2740
- type: input
2841
id: tags
2942
attributes:
30-
label: "Tags"
31-
description: "Comma-separated. Suggested: managed, cloud, serverless"
32-
placeholder: "managed, cloud"
43+
label: "Additional tags (optional)"
44+
description: "Cloud provider, compliance, pricing — see the full list in RESOURCES.md. Comma-separated."
45+
placeholder: "AWS, SOC 2, Pay-as-you-go"

‎.github/ISSUE_TEMPLATE/resource-services.yml‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,25 @@ body:
2424
description: "1–2 sentences on what they offer."
2525
validations:
2626
required: true
27+
- type: dropdown
28+
id: subcategory
29+
attributes:
30+
label: "Subcategory"
31+
options:
32+
- Consulting
33+
- Support
34+
- Managed Services
35+
- Migration Services
36+
- Performance Tuning
37+
- Architecture & HA Design
38+
- Cloud & Kubernetes
39+
- Security & Compliance
40+
- Training Providers
41+
validations:
42+
required: true
2743
- type: input
2844
id: tags
2945
attributes:
30-
label: "Tags"
31-
description: "Comma-separated. Suggested: consulting, support, enterprise"
32-
placeholder: "consulting, support"
46+
label: "Additional tags (optional)"
47+
description: "Delivery, geography, technology — see the full list in RESOURCES.md. Comma-separated."
48+
placeholder: "Remote, Global, MySQL"

‎.github/ISSUE_TEMPLATE/resource-software.yml‎

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,28 @@ body:
2525
placeholder: "A drop-in MySQL replacement that..."
2626
validations:
2727
required: true
28+
- type: dropdown
29+
id: subcategory
30+
attributes:
31+
label: "Subcategory"
32+
options:
33+
- Database Software
34+
- Monitoring & Observability
35+
- Backup & Recovery
36+
- Replication & High Availability
37+
- Proxies & Traffic Management
38+
- Connectors & Drivers
39+
- Database Management & GUI
40+
- DevOps & Deployment
41+
- Schema Management & Migration
42+
- Testing & Benchmarking
43+
- Security
44+
- AI & Ecosystem Skills
45+
validations:
46+
required: true
2847
- type: input
2948
id: tags
3049
attributes:
31-
label: "Tags"
32-
description: "Comma-separated. Suggested: open-source, server, proxy, sharding"
33-
placeholder: "open-source, server"
50+
label: "Additional tags (optional)"
51+
description: "Compatibility, deployment, license — see the full list in RESOURCES.md. Comma-separated."
52+
placeholder: "MySQL, Kubernetes, Open Source"

‎.github/ISSUE_TEMPLATE/resource-training.yml‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,21 @@ body:
2929
attributes:
3030
label: "Author or organization"
3131
placeholder: "e.g. Kedar Vaijanapurkar"
32+
- type: dropdown
33+
id: subcategory
34+
attributes:
35+
label: "Subcategory"
36+
options:
37+
- Courses
38+
- Workshops
39+
- Certifications
40+
- Academic Resources
41+
- Training Providers
42+
validations:
43+
required: true
3244
- type: input
3345
id: tags
3446
attributes:
35-
label: "Tags"
36-
description: "Comma-separated. Suggested: free, online, video, dba, developer, certification"
37-
placeholder: "free, online, developer"
47+
label: "Additional tags (optional)"
48+
description: "Format, level, pricing, language — see the full list in RESOURCES.md. Comma-separated."
49+
placeholder: "Self-Paced, Beginner, Free"

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ hugo server -D
7373

7474
`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.
7575

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+
7678
Open [localhost:1313](http://localhost:1313) in your browser.
7779

7880
---

‎RESOURCES.md‎

Lines changed: 58 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,45 +60,90 @@ aggregator-mysql-events.md ← for aggregator pages without a specific dat
6060
title: "Resource Name"
6161
link: "https://example.com"
6262
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
6464
---
6565
```
6666

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).
70+
71+
**`content/resources/software/`** — subcategories: Database Software · Monitoring & Observability · Backup & Recovery · Replication & High Availability · Proxies & Traffic Management · Connectors & Drivers · Database Management & GUI · DevOps & Deployment · Schema Management & Migration · Testing & Benchmarking · Security · AI & Ecosystem Skills
72+
```yaml
73+
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitess, HeatWave, Galera, Group Replication
74+
deployment: ["Self-Hosted"] # Self-Hosted, Kubernetes, Docker, Cloud-Native, On-Premises
75+
pricing: ["Open Source"] # Open Source, Commercial, Free, Paid, Enterprise
76+
```
77+
78+
**`content/resources/saas/`** — subcategories: Managed Databases · Monitoring SaaS · Backup & Recovery SaaS · Migration & Replication SaaS · Developer Platforms · Security & Compliance SaaS
79+
```yaml
80+
cloud-providers: ["AWS"] # AWS, Azure, GCP, Multi-Cloud, Private Cloud
81+
compliance: ["SOC 2"] # SOC 2, HIPAA, GDPR, PCI DSS
82+
pricing: ["Pay-as-you-go"] # Pay-as-you-go, Subscription, Free Tier Available
83+
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitess
84+
```
85+
86+
**`content/resources/services/`** — subcategories: Consulting · Support · Managed Services · Migration Services · Performance Tuning · Architecture & HA Design · Cloud & Kubernetes · Security & Compliance · Training Providers
87+
```yaml
88+
delivery: ["Remote"] # Remote, On-Site, Hybrid
89+
countries: ["Global"] # a country name (e.g. "Germany"), or "Global" if not region-specific
90+
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitess, Galera
91+
foundation-status: ["Sponsor"] # Foundation Member, Sponsor, Partner — only if it actually applies
92+
```
93+
94+
**`content/resources/training/`** — subcategories: Courses · Workshops · Certifications · Academic Resources · Training Providers
95+
```yaml
96+
training-formats: ["Self-Paced"] # Self-Paced, Instructor-Led, Workshop, Certification, Practice Lab
97+
levels: ["Beginner"] # Beginner, Intermediate, Advanced
98+
pricing: ["Free"] # Free, Paid, Free Trial Available
99+
languages: ["English"] # English, Spanish, Portuguese, German, Chinese, Other
100+
author: "Percona" # optional
101+
```
102+
103+
**`content/resources/books/`** (leaf bundle with cover image) — subcategories: Books · Blogs · Newsletters · Reports & Research · Whitepapers · Case Studies · Podcasts & Videos · Documentation Portals
68104
```yaml
69105
---
70106
title: "High Performance MySQL, 4th Edition"
71107
link: "https://..."
72108
description: "One or two sentences."
73109
authors: ["Silvia Botros", "Jeremy Tinley"]
74110
year: 2021
75-
tags: ["advanced", "performance"]
111+
subcategories: ["Books"]
112+
topics: ["Performance"] # Administration, Development, Architecture, Replication, Performance, Security, Migration, Scaling, Other
113+
audiences: ["Advanced"] # DBA, Developer, Architect, Beginner, Advanced
114+
pricing: ["Paid"] # Free, Paid
76115
images:
77116
- cover.jpeg
78117
---
79118
```
80119

81-
**Training — optional author field:**
120+
**`content/resources/events/`** — subcategories: Foundation Events · Community Calls · Webinars · Meetups · Conferences · Partner & Member Events · Past Events & Recordings — prefix the filename with the date
82121
```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
126+
event_year: ["2026"]
127+
event-formats: ["In-Person"] # In-Person, Online, Hybrid
128+
organizers: ["Community"] # OurSQL Foundation, Community, Member & Partner
84129
```
85130

86-
**Events — additional fields:**
131+
**`content/resources/community/`** — subcategories: Forums · Slack, Discord & IRC · Mailing Lists · Reddit & Social · Blog Aggregators · Podcasts & Videos
87132
```yaml
88-
date: 2026-09-11
89-
format: "in-person" # or "online"
90-
city: "Amsterdam"
91-
country: "Netherlands"
92-
event_country: ["Netherlands"]
93-
event_year: ["2026"]
133+
platforms: ["Forum"] # Forum, Slack, Discord, Mailing List, Reddit, Meetup, YouTube, Podcast
134+
languages: ["English"] # English, Spanish, Portuguese, German, Chinese, Other
135+
access: ["Open"] # Open, Registration Required
136+
listing-status: ["Active"] # Active, Archived
94137
```
95138

96-
**Press & News — additional fields:**
139+
**`content/resources/press/`** — additional fields:
97140
```yaml
98141
date: 2026-05-27
99142
source: "Publication Name"
100143
```
101144

145+
> 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").
146+
102147
---
103148

104149
## Option 2 — Open an issue

0 commit comments

Comments
 (0)