Skip to content

Commit f6f9c55

Browse files
Mazizovaclaude
andauthored
Add MySQL Adopters page to the Member Directory (#94)
A searchable table of 21 organizations running MySQL in production, each with a public source, plus a featured-link banner at the top of /member-directory/. Uber and Wix reference URLs updated to their current locations. Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
1 parent 4e181a9 commit f6f9c55

6 files changed

Lines changed: 390 additions & 0 deletions

File tree

‎assets/scss/_light-theme.scss‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,32 @@
12021202
}
12031203
}
12041204

1205+
// Member Directory: featured link + adopters table
1206+
.resources-featured-link {
1207+
background: #ffffff;
1208+
border-color: rgba(2, 114, 165, 0.3);
1209+
&:hover { border-color: rgba(2, 114, 165, 0.6); }
1210+
}
1211+
.resources-featured-link-title { color: #0f172a; }
1212+
.resources-featured-link-desc { color: #64748b; }
1213+
.resources-featured-link-cta { color: #0272a5; }
1214+
1215+
.adopters-search {
1216+
background: #ffffff;
1217+
border-color: #dde3ed;
1218+
color: #0f172a;
1219+
}
1220+
.adopters-count { color: #64748b; }
1221+
.adopters-table-wrap { background: #ffffff; border-color: #dde3ed; }
1222+
.adopters-table {
1223+
th { background: #f1f4f9; color: #64748b; border-bottom-color: #dde3ed; }
1224+
td { color: #0f172a; border-bottom-color: #dde3ed; }
1225+
tbody tr:hover td { background: #f6f8fc; }
1226+
.adopters-usecase { color: #334155; }
1227+
.adopters-ref a { color: #0272a5; }
1228+
@media (max-width: 768px) { tr { border-bottom-color: #dde3ed; } }
1229+
}
1230+
12051231
.author-card {
12061232
background: #ffffff;
12071233
border-color: #dde3ed;

‎assets/scss/_resources.scss‎

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1950,3 +1950,162 @@ body.sheet-open {
19501950
overflow: hidden;
19511951
}
19521952
}
1953+
1954+
// ── Member Directory: featured link banner ─────────────────────────────────
1955+
1956+
.resources-featured-link {
1957+
display: flex;
1958+
align-items: center;
1959+
justify-content: space-between;
1960+
gap: 1rem;
1961+
margin: 0 0 2rem;
1962+
padding: 1rem 1.25rem;
1963+
background: $dark-card;
1964+
border: 1px solid rgba($accent, 0.3);
1965+
border-radius: 12px;
1966+
text-decoration: none;
1967+
transition: border-color 0.2s ease, box-shadow 0.2s ease;
1968+
1969+
&:hover {
1970+
border-color: rgba($accent, 0.6);
1971+
box-shadow: 0 6px 24px rgba($accent, 0.07);
1972+
}
1973+
1974+
@media (max-width: $break-md) {
1975+
flex-direction: column;
1976+
align-items: flex-start;
1977+
}
1978+
}
1979+
1980+
.resources-featured-link-text {
1981+
display: flex;
1982+
flex-direction: column;
1983+
gap: 0.2rem;
1984+
}
1985+
1986+
.resources-featured-link-title {
1987+
font-size: 1.0625rem;
1988+
font-weight: 600;
1989+
color: $off-white;
1990+
}
1991+
1992+
.resources-featured-link-desc {
1993+
font-size: 0.9rem;
1994+
color: $muted;
1995+
}
1996+
1997+
.resources-featured-link-cta {
1998+
font-size: 0.9rem;
1999+
font-weight: 600;
2000+
color: $accent;
2001+
white-space: nowrap;
2002+
}
2003+
2004+
// ── Member Directory: MySQL Adopters table ─────────────────────────────────
2005+
2006+
.adopters-toolbar {
2007+
display: flex;
2008+
align-items: center;
2009+
justify-content: space-between;
2010+
gap: 1rem;
2011+
margin-bottom: 1rem;
2012+
flex-wrap: wrap;
2013+
}
2014+
2015+
.adopters-search {
2016+
flex: 1 1 280px;
2017+
max-width: 420px;
2018+
padding: 0.65rem 0.9rem;
2019+
font: inherit;
2020+
font-size: 0.9375rem;
2021+
color: $off-white;
2022+
background: $dark-card;
2023+
border: 1px solid $dark-border;
2024+
border-radius: 8px;
2025+
2026+
&:focus {
2027+
outline: none;
2028+
border-color: rgba($accent, 0.6);
2029+
}
2030+
}
2031+
2032+
.adopters-count {
2033+
font-size: 0.875rem;
2034+
color: $muted;
2035+
}
2036+
2037+
.adopters-table-wrap {
2038+
background: $dark-card;
2039+
border: 1px solid $dark-border;
2040+
border-radius: 12px;
2041+
overflow: hidden;
2042+
}
2043+
2044+
.adopters-table {
2045+
width: 100%;
2046+
border-collapse: collapse;
2047+
font-size: 0.9375rem;
2048+
2049+
th {
2050+
text-align: left;
2051+
padding: 0.85rem 1.1rem;
2052+
font-size: 0.75rem;
2053+
font-weight: 600;
2054+
letter-spacing: 0.08em;
2055+
text-transform: uppercase;
2056+
color: $muted;
2057+
background: $dark-surface;
2058+
border-bottom: 1px solid $dark-border;
2059+
}
2060+
2061+
td {
2062+
padding: 0.95rem 1.1rem;
2063+
vertical-align: top;
2064+
color: $off-white;
2065+
line-height: 1.55;
2066+
border-bottom: 1px solid $dark-border;
2067+
}
2068+
2069+
tbody tr:last-child td { border-bottom: none; }
2070+
tbody tr:hover td { background: rgba($accent, 0.03); }
2071+
tr[hidden] { display: none; }
2072+
2073+
.adopters-company { font-weight: 600; white-space: nowrap; }
2074+
.adopters-industry { white-space: nowrap; }
2075+
.adopters-usecase { color: lighten($muted, 28%); }
2076+
.adopters-ref { white-space: nowrap; }
2077+
2078+
.adopters-ref a {
2079+
color: $accent;
2080+
text-decoration: none;
2081+
&:hover { text-decoration: underline; }
2082+
}
2083+
2084+
@media (max-width: $break-md) {
2085+
thead { display: none; }
2086+
2087+
tbody, tr, td { display: block; }
2088+
2089+
tr {
2090+
padding: 1rem 1.1rem;
2091+
border-bottom: 1px solid $dark-border;
2092+
}
2093+
2094+
tbody tr:last-child { border-bottom: none; }
2095+
2096+
td {
2097+
padding: 0.2rem 0;
2098+
border-bottom: none;
2099+
white-space: normal !important;
2100+
}
2101+
2102+
.adopters-company { font-size: 1.0625rem; }
2103+
.adopters-industry { margin: 0.15rem 0 0.35rem; }
2104+
.adopters-ref { margin-top: 0.4rem; }
2105+
}
2106+
}
2107+
2108+
.adopters-note {
2109+
margin-top: 1.5rem;
2110+
color: $muted;
2111+
}

‎content/resources/member-directory/_index.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@ sort: title
77
title: Member Directory
88
weight: 8
99
count_label: "Members · Adopters · People"
10+
featured_link:
11+
title: "MySQL Adopters"
12+
description: "Organizations running MySQL in production, each backed by a public source."
13+
url: "/member-directory/adopters/"
1014
---
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: "MySQL Adopters"
3+
url: "/member-directory/adopters/"
4+
description: "Organizations that run MySQL in production — each one backed by a public source: an engineering blog, a conference talk, or a case study."
5+
layout: adopters
6+
subcategories:
7+
- Adopters
8+
adopters:
9+
- company: "Airbnb"
10+
industry: "Travel marketplace"
11+
use_case: "Core databases on Aurora MySQL; MySQL replication used to partition the main database"
12+
reference: "MySQL customer page"
13+
url: "https://www.mysql.com/customers/view/?id=1271"
14+
- company: "Backblaze"
15+
industry: "Cloud storage"
16+
use_case: "Runs Vitess (sharded MySQL) in production"
17+
reference: "KubeCon NA 2024 talk"
18+
url: "https://kccncna2024.sched.com/event/1hoxf/vitess-introduction-new-features-and-running-in-production-deepthi-sigireddi-planetscale-derek-perkins-nozzle-sudhi-vijayakumar-backblaze"
19+
- company: "Booking.com"
20+
industry: "Travel"
21+
use_case: "Main relational datastore: thousands of servers in 200+ clusters, 20+ years on MySQL"
22+
reference: "MySQL Global Forum 2025 slides"
23+
url: "https://downloads.mysql.com/events/mysql-global-forum/20_Years_of_Operating_and_Scaling_MySQL_at_Booking.com.pdf"
24+
- company: "Cash App (Block)"
25+
industry: "Fintech"
26+
use_case: "Started on a single MySQL database, scaled out with Vitess"
27+
reference: "Cash App blog"
28+
url: "https://code.cash.app/sharding-cash"
29+
- company: "Dropbox"
30+
industry: "Cloud storage"
31+
use_case: "Edgestore metadata store on thousands of MySQL shards"
32+
reference: "Dropbox Tech blog"
33+
url: "https://dropbox.tech/infrastructure/reintroducing-edgestore"
34+
- company: "Etsy"
35+
industry: "E-commerce"
36+
use_case: "~1,000 MySQL shards (425 TB), migrated to Vitess"
37+
reference: "InfoQ, Apr 2026"
38+
url: "https://www.infoq.com/news/2026/04/etsy-vitess-sharding-migration/"
39+
- company: "GitHub"
40+
industry: "Developer platform"
41+
use_case: "Primary datastore for metadata (issues, PRs, comments); fleet upgraded to MySQL 8.0"
42+
reference: "GitHub Blog"
43+
url: "https://github.blog/engineering/infrastructure/upgrading-github-com-to-mysql-8-0/"
44+
- company: "HubSpot"
45+
industry: "SaaS / CRM"
46+
use_case: "MySQL on Vitess and Kubernetes"
47+
reference: "CNCF case study"
48+
url: "https://www.cncf.io/case-studies/hubspot/"
49+
- company: "Intercom"
50+
industry: "SaaS / customer service"
51+
use_case: "MySQL is the primary datastore; moving from Aurora to Vitess on PlanetScale"
52+
reference: "Intercom blog"
53+
url: "https://www.intercom.com/blog/evolving-intercoms-database-infrastructure-lessons-and-progress/"
54+
- company: "Meta"
55+
industry: "Social media"
56+
use_case: "Social graph tier (UDB) on MySQL with the MyRocks engine"
57+
reference: "Engineering at Meta"
58+
url: "https://engineering.fb.com/2017/09/25/core-data/migrating-a-database-from-innodb-to-myrocks/"
59+
- company: "Nozzle"
60+
industry: "SEO analytics"
61+
use_case: "Vitess on Kubernetes; founder is a Vitess maintainer"
62+
reference: "KubeCon NA 2024 talk"
63+
url: "https://kccncna2024.sched.com/event/1hoxf/vitess-introduction-new-features-and-running-in-production-deepthi-sigireddi-planetscale-derek-perkins-nozzle-sudhi-vijayakumar-backblaze"
64+
- company: "Pinterest"
65+
industry: "Social media"
66+
use_case: "Sharded MySQL as the core store for pins, boards and users"
67+
reference: "High Scalability"
68+
url: "https://highscalability.com/scaling-pinterest-from-0-to-10s-of-billions-of-page-views-a/"
69+
- company: "Pipedrive"
70+
industry: "SaaS / CRM"
71+
use_case: "Schema-per-customer sharded MySQL plus microservice databases"
72+
reference: "Pipedrive R&D blog"
73+
url: "https://medium.com/pipedrive-engineering/database-engineering-in-pipedrive-an-overview-315b40d05282"
74+
- company: "Shopify"
75+
industry: "E-commerce"
76+
use_case: "Every shop's data in MySQL shards inside isolated pods"
77+
reference: "Shopify Engineering"
78+
url: "https://shopify.engineering/mysql-database-shard-balancing-terabyte-scale"
79+
- company: "Slack"
80+
industry: "Workplace communication"
81+
use_case: "All data on MySQL since day one; Vitess serves 99% of query load"
82+
reference: "Slack Engineering"
83+
url: "https://slack.engineering/scaling-datastores-at-slack-with-vitess/"
84+
- company: "Twitter / X"
85+
industry: "Social media"
86+
use_case: "MySQL behind tweets, timelines and user data; moved from in-house fork to community MySQL 5.7"
87+
reference: "SiliconANGLE, 2012"
88+
url: "https://siliconangle.com/2012/04/09/twitter-open-sources-its-secret-mysql-hacks/"
89+
- company: "Uber"
90+
industry: "Mobility"
91+
use_case: "Schemaless trip datastore built on sharded MySQL"
92+
reference: "Uber Engineering"
93+
url: "https://www.uber.com/blog/schemaless-part-one-mysql-datastore/"
94+
- company: "Wix"
95+
industry: "Website builder"
96+
use_case: "MySQL as default engine, including as a key/value store"
97+
reference: "Wix Engineering"
98+
url: "https://www.wix.engineering/post/scaling-to-100m-mysql-is-a-better-nosql"
99+
- company: "Yelp"
100+
industry: "Local reviews"
101+
use_case: "Nearly all data in MySQL (Percona Server), functionally sharded"
102+
reference: "Yelp Engineering"
103+
url: "https://engineeringblog.yelp.com/2015/01/mysql-at-yelp.html"
104+
- company: "YouTube"
105+
industry: "Video streaming"
106+
use_case: "Video metadata on sharded MySQL; Vitess was built here"
107+
reference: "Vitess history"
108+
url: "https://vitess.io/docs/overview/history/"
109+
- company: "Zendesk"
110+
industry: "SaaS / customer service"
111+
use_case: "Aurora MySQL + S3 tiered storage for event data"
112+
reference: "InfoQ, Dec 2023"
113+
url: "https://www.infoq.com/news/2023/12/zendesk-dynamodb-mysql-s3-cost/"
114+
---

‎layouts/resources/adopters.html‎

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{{ define "main" }}
2+
{{/* MySQL Adopters — a table of organizations running MySQL in production,
3+
driven by the `adopters` list in the page's front matter. */}}
4+
<div class="resources-section adopters-page">
5+
<div class="resources-section-header">
6+
<nav class="resources-breadcrumb" aria-label="Breadcrumb">
7+
<a href="/resources/">Resources</a>
8+
<span class="breadcrumb-sep" aria-hidden="true">/</span>
9+
<a href="{{ .Parent.RelPermalink }}">{{ .Parent.Title }}</a>
10+
<span class="breadcrumb-sep" aria-hidden="true">/</span>
11+
<span>{{ .Title }}</span>
12+
</nav>
13+
<h1 class="resources-section-title">{{ .Title }}</h1>
14+
{{ with .Description }}<p class="resources-section-desc">{{ . }}</p>{{ end }}
15+
</div>
16+
17+
{{ $rows := .Params.adopters }}
18+
19+
<div class="adopters-toolbar">
20+
<input type="search" id="adopters-search" class="adopters-search" placeholder="Search by company, industry, or use case…" autocomplete="off" aria-label="Search adopters">
21+
<div class="adopters-count" id="adopters-count" aria-live="polite">{{ len $rows }} organizations</div>
22+
</div>
23+
24+
<div class="adopters-table-wrap">
25+
<table class="adopters-table" id="adopters-table">
26+
<thead>
27+
<tr>
28+
<th scope="col">Company</th>
29+
<th scope="col">Industry</th>
30+
<th scope="col">Use case</th>
31+
<th scope="col">Reference</th>
32+
</tr>
33+
</thead>
34+
<tbody>
35+
{{ range $rows }}
36+
<tr data-search="{{ printf "%s %s %s" .company .industry .use_case | lower }}">
37+
<td class="adopters-company" data-label="Company">{{ .company }}</td>
38+
<td class="adopters-industry" data-label="Industry"><span class="resource-tag">{{ .industry }}</span></td>
39+
<td class="adopters-usecase" data-label="Use case">{{ .use_case }}</td>
40+
<td class="adopters-ref" data-label="Reference"><a href="{{ .url }}" target="_blank" rel="noopener noreferrer">{{ .reference }} →</a></td>
41+
</tr>
42+
{{ end }}
43+
</tbody>
44+
</table>
45+
<div class="empty-state" id="adopters-empty" hidden>
46+
<h3>No organizations match your search</h3>
47+
</div>
48+
</div>
49+
50+
{{ with .Content }}<div class="adopters-note post-content">{{ . }}</div>{{ end }}
51+
52+
<div class="resources-suggest-footer">
53+
<a href="/resources/contribute/" class="resource-suggest-btn">Suggest an adopter</a>
54+
</div>
55+
</div>
56+
57+
<script>
58+
(function () {
59+
var input = document.getElementById('adopters-search');
60+
var rows = document.querySelectorAll('#adopters-table tbody tr');
61+
var count = document.getElementById('adopters-count');
62+
var empty = document.getElementById('adopters-empty');
63+
var table = document.getElementById('adopters-table');
64+
input.addEventListener('input', function () {
65+
var q = input.value.trim().toLowerCase(), n = 0;
66+
rows.forEach(function (r) {
67+
var show = !q || r.getAttribute('data-search').indexOf(q) !== -1;
68+
r.hidden = !show;
69+
if (show) n++;
70+
});
71+
count.textContent = n + (n === 1 ? ' organization' : ' organizations');
72+
empty.hidden = n !== 0;
73+
table.hidden = n === 0;
74+
});
75+
})();
76+
</script>
77+
{{ end }}

0 commit comments

Comments
 (0)