Skip to content

Commit 793d099

Browse files
authored
Merge pull request #172 from maxrjones/refresh
feat: redesign website
2 parents 9ccdb68 + a82c94b commit 793d099

38 files changed

Lines changed: 2315 additions & 393 deletions

.github/dependabot.yml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,32 @@
11
# .github/dependabot.yml
2+
#
3+
# Bundler was removed in b0cb0f9 (Jekyll/Bundler stripped) — the old
4+
# 'bundler' entry no longer applied. Replaced here with the ecosystems
5+
# this repo actually uses, each with cooldown windows that give time to
6+
# spot a malicious update before merging (per the dependabot-cooldown
7+
# audit guidance).
8+
29
version: 2
310
updates:
4-
- package-ecosystem: 'bundler'
11+
# npm — vitepress and js-yaml live in package.json.
12+
- package-ecosystem: 'npm'
513
directory: '/'
614
schedule:
7-
interval: 'daily'
15+
interval: 'weekly'
16+
cooldown:
17+
default-days: 7
18+
semver-major-days: 30
19+
semver-minor-days: 7
20+
semver-patch-days: 3
21+
22+
# GitHub Actions — workflow uses SHA-pinned actions; dependabot
23+
# rolls forward to newer pinned SHAs over time.
24+
- package-ecosystem: 'github-actions'
25+
directory: '/'
26+
schedule:
27+
interval: 'weekly'
28+
cooldown:
29+
default-days: 7
30+
semver-major-days: 30
31+
semver-minor-days: 7
32+
semver-patch-days: 3

.github/workflows/deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
- uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d # v4
3131
- run: npm ci
3232
- run: npm run docs:build
33+
- run: npm run docs:verify
3334
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
3435
with:
3536
path: .vitepress/dist

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ node_modules/
22
.vitepress/dist/
33
.vitepress/cache/
44
.DS_Store
5+
.superpowers/

.vitepress/config.mts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const base = rtdUrl ? new URL(rtdUrl).pathname : '/'
1111
export default defineConfig({
1212
base,
1313
title: 'Zarr',
14-
description: 'Zarr is a community project to develop specifications and software for storage of large N-dimensional typed arrays, also commonly known as tensors.',
14+
description: 'A specification, implementations in 10 languages, and an ecosystem of datasets and tools, built by an open community.',
1515
cleanUrls: true,
1616
lastUpdated: true,
1717
sitemap: { hostname: 'https://zarr.dev' },
@@ -28,12 +28,12 @@ export default defineConfig({
2828
['meta', { property: 'og:type', content: 'website' }],
2929
['meta', { property: 'og:site_name', content: 'Zarr' }],
3030
['meta', { property: 'og:title', content: 'Zarr' }],
31-
['meta', { property: 'og:description', content: 'An open, community-driven format for storing large arrays in any key-value store, including cloud object storage.' }],
31+
['meta', { property: 'og:description', content: 'A specification, implementations in 10 languages, and an ecosystem of datasets and tools, built by an open community.' }],
3232
['meta', { property: 'og:image', content: 'https://zarr.dev/android-chrome-512x512.png' }],
3333
['meta', { property: 'og:url', content: 'https://zarr.dev/' }],
3434
['meta', { name: 'twitter:card', content: 'summary' }],
3535
['meta', { name: 'twitter:title', content: 'Zarr' }],
36-
['meta', { name: 'twitter:description', content: 'An open, community-driven format for storing large arrays in any key-value store, including cloud object storage.' }],
36+
['meta', { name: 'twitter:description', content: 'A specification, implementations in 10 languages, and an ecosystem of datasets and tools, built by an open community.' }],
3737
['meta', { name: 'twitter:image', content: 'https://zarr.dev/android-chrome-512x512.png' }],
3838
['script', { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=G-BCRR9QE7Z0' }],
3939
['script', {}, `window.dataLayer = window.dataLayer || [];
@@ -53,20 +53,25 @@ gtag('config', 'G-BCRR9QE7Z0');`],
5353
logo: '/android-chrome-192x192.png',
5454
search: { provider: 'local' },
5555
nav: [
56-
{ text: 'Adopters', link: '/adopters' },
57-
{ text: 'Community', link: '/community' },
58-
{ text: 'Conventions', link: '/conventions' },
59-
{ text: 'Datasets', link: '/datasets' },
6056
{ text: 'Implementations', link: '/implementations' },
61-
{ text: 'Office Hours', link: '/office-hours' },
62-
{ text: 'Slides', link: '/slides' },
57+
{ text: 'Datasets', link: '/datasets' },
58+
{ text: 'Adopters', link: '/adopters' },
6359
{
64-
text: 'External',
60+
text: 'Community',
6561
items: [
66-
{ text: 'Blog', link: 'https://zarr.dev/blog/' },
67-
{ text: 'Specification', link: 'https://zarr-specs.readthedocs.io/' },
62+
{ text: 'Overview', link: '/community' },
63+
{ text: 'Office Hours', link: '/office-hours' },
6864
{ text: 'ZEPs', link: 'https://zarr.dev/zeps/' },
65+
{ text: 'Slides', link: '/slides' },
66+
],
67+
},
68+
{
69+
text: 'Resources',
70+
items: [
71+
{ text: 'Specification', link: 'https://zarr-specs.readthedocs.io/' },
6972
{ text: 'Documentation', link: 'https://zarr.readthedocs.io/en/stable/' },
73+
{ text: 'Conventions', link: '/conventions' },
74+
{ text: 'Blog', link: 'https://zarr.dev/blog/' },
7075
],
7176
},
7277
],
@@ -93,7 +98,8 @@ gtag('config', 'G-BCRR9QE7Z0');`],
9398
text: 'Edit this page on GitHub',
9499
},
95100
footer: {
96-
message: 'Released under the MIT License.',
101+
message:
102+
'Site content released under <a href="https://github.com/zarr-developers/zarr-developers.github.io/blob/main/LICENSE.txt">CC BY 3.0</a>. Logos are trademarks of their respective owners; use here is for identification only and does not imply endorsement (see <a href="https://github.com/zarr-developers/zarr-developers.github.io/blob/main/NOTICE.md">NOTICE</a>).',
97103
copyright: 'Copyright © Zarr contributors',
98104
},
99105
},

.vitepress/data/adopters.ts

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
// .vitepress/data/adopters.ts
2+
//
3+
// Cross-domain balance is required. Current per-domain counts:
4+
// bio : 5 (DANDI, HHMI Janelia, OME, scalableminds, WEBKNOSSOS)
5+
// geo : 8 (CarbonPlan, ESA, NASA, Pangeo, Unidata, LEAP, LDEO, NCAR)
6+
// ml-hpc : 0
7+
// genomics : 0
8+
// other : 3 (Google Research, Microsoft, Columbia)
9+
// When adding entries, prefer domains under-represented above. An NGFF /
10+
// bio-imaging community member must review before merge.
11+
12+
import type { Adopter } from './types'
13+
14+
export const adopters: Adopter[] = [
15+
{
16+
name: 'CarbonPlan',
17+
logo: '/adopters/logos/carbonplan.svg',
18+
href: 'https://carbonplan.org/',
19+
blurb: 'Storage format for analysis and visualization of climate data.',
20+
domain: 'geo',
21+
},
22+
{
23+
name: 'DANDI',
24+
logo: '/adopters/logos/dandi.svg',
25+
href: 'https://dandiarchive.org/',
26+
blurb: 'Lightsheet microscopy and ex-vivo MRI datasets; backend candidate for Neurodata Without Borders.',
27+
domain: 'bio',
28+
},
29+
{
30+
name: 'ESA',
31+
logo: '/adopters/logos/esa.png',
32+
href: 'https://esa.int/',
33+
blurb: 'Copernicus Sentinel data and future Expansion missions via the EOPF (Earth observation processing Framework).',
34+
domain: 'geo',
35+
},
36+
{
37+
name: 'Google Research',
38+
logo: '/adopters/logos/google_research.png',
39+
href: 'https://research.google/',
40+
blurb: 'Open-source projects (Neuroglancer, TensorStore, Xarray-Beam, Xarray-TensorStore) and large-scale weather datasets such as ARCO-ERA5.',
41+
domain: 'other',
42+
},
43+
{
44+
name: 'HHMI Janelia',
45+
logo: '/adopters/logos/hhmi.png',
46+
href: 'https://www.janelia.org/',
47+
blurb: 'Storing and accessing large imaging datasets across the Janelia Research Campus.',
48+
domain: 'bio',
49+
},
50+
{
51+
name: 'LEAP',
52+
logo: '/adopters/logos/leap.webp',
53+
href: 'https://leap.columbia.edu/',
54+
blurb: 'Data format for the LEAP-Pangeo data library used in climate-modeling analytics and machine learning.',
55+
domain: 'geo',
56+
},
57+
{
58+
name: 'Microsoft Planetary Computer',
59+
logo: '/adopters/logos/microsoft.png',
60+
href: 'https://planetarycomputer.microsoft.com/catalog?filter=zarr',
61+
blurb: 'Cloud-native storage format for chunked, N-dimensional arrays of geospatial data.',
62+
domain: 'other',
63+
},
64+
{
65+
name: 'NASA',
66+
logo: '/adopters/logos/nasa.webp',
67+
href: 'https://www.nasa.gov/',
68+
blurb: 'Analysis-ready data store for chunked, N-dimensional arrays of geospatial data.',
69+
domain: 'geo',
70+
},
71+
{
72+
name: 'OME',
73+
logo: '/adopters/logos/ome_logo.svg',
74+
href: 'https://www.openmicroscopy.org/',
75+
blurb: 'OME-Zarr stores large, n-dimensional biological images as part of the Next-generation file format (NGFF) effort.',
76+
domain: 'bio',
77+
},
78+
{
79+
name: 'Pangeo',
80+
logo: '/adopters/logos/pangeo.png',
81+
href: 'https://pangeo.io/',
82+
blurb: 'Cloud-native storage format for ocean, weather, climate, and geospatial data.',
83+
domain: 'geo',
84+
},
85+
{
86+
name: 'scalable minds',
87+
logo: '/adopters/logos/scalableminds.svg',
88+
href: 'https://scalableminds.com/',
89+
blurb: 'Storing and processing peta-scale 3D images of brain tissue for connectomics analyses.',
90+
domain: 'bio',
91+
},
92+
{
93+
name: 'Unidata',
94+
logo: '/adopters/logos/unidata.png',
95+
href: 'https://www.unidata.ucar.edu/',
96+
blurb: 'Developing the netCDF libraries to support Zarr datasets across atmospheric and geoscientific communities.',
97+
domain: 'geo',
98+
},
99+
{
100+
name: 'WEBKNOSSOS',
101+
logo: '/adopters/logos/webknossos.svg',
102+
href: 'https://webknossos.org/',
103+
blurb: 'Web-based platform for visualizing and collaboratively annotating large 3D images.',
104+
domain: 'bio',
105+
},
106+
{
107+
name: 'Columbia University',
108+
logo: '/adopters/logos/columbia.png',
109+
href: 'https://www.columbia.edu/',
110+
blurb: 'Research use across geosciences and computational climate.',
111+
domain: 'other',
112+
},
113+
{
114+
name: 'LDEO',
115+
logo: '/adopters/logos/ldeo.png',
116+
href: 'https://lamont.columbia.edu/',
117+
blurb: 'Lamont-Doherty Earth Observatory at Columbia.',
118+
domain: 'geo',
119+
},
120+
{
121+
name: 'NCAR',
122+
logo: '/adopters/logos/ncar.svg',
123+
href: 'https://ncar.ucar.edu/',
124+
blurb: 'National Center for Atmospheric Research.',
125+
domain: 'geo',
126+
},
127+
]

.vitepress/data/backing.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// .vitepress/data/backing.ts
2+
//
3+
// Institutional backing shown in the home "Sponsored by" band.
4+
// Standards bodies (e.g. OGC GeoZarr SWG) are represented in the
5+
// /community/ "Related communities" section instead, since they relate
6+
// to specific conventions rather than sponsoring Zarr core.
7+
8+
import type { BackingEntry } from './types'
9+
10+
export const backing: BackingEntry[] = [
11+
{
12+
name: 'NumFOCUS',
13+
logo: '/backing/logos/numfocus.svg',
14+
href: 'https://numfocus.org/sponsored-projects',
15+
kind: 'fiscal-host',
16+
},
17+
]

.vitepress/data/datasets.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// .vitepress/data/datasets.ts
2+
//
3+
// Cross-domain balance required. Current per-domain counts:
4+
// bio : 1 (IDR)
5+
// geo : 5 (CMIP6, MUR SST, NASA POWER, NWM, Planetary Computer)
6+
// ml-hpc : 0
7+
// genomics : 0
8+
// other : 1 (webKnossos)
9+
// Adding bio / genomics datasets is a priority for the next content PR.
10+
11+
import type { Dataset } from './types'
12+
13+
export const datasets: Dataset[] = [
14+
{
15+
name: 'CMIP6',
16+
href: 'https://console.cloud.google.com/marketplace/details/noaa-public/cmip6',
17+
blurb: 'Coupled Model Intercomparison Project Phase 6 climate model output.',
18+
hosting: 'Google Cloud',
19+
size: '1 PB',
20+
domain: 'geo',
21+
},
22+
{
23+
name: 'Image Data Resource (IDR)',
24+
href: 'https://idr.github.io/ome-ngff-samples/',
25+
blurb: 'Bio-image samples in OME-Zarr from EBI/IDR.',
26+
hosting: 'EBI',
27+
size: '3 TB',
28+
domain: 'bio',
29+
},
30+
{
31+
name: 'Microsoft Planetary Computer',
32+
href: 'https://planetarycomputer.microsoft.com/catalog?filter=zarr',
33+
blurb: 'Cloud-native catalog of geospatial Zarr datasets.',
34+
hosting: 'Microsoft Azure',
35+
domain: 'geo',
36+
},
37+
{
38+
name: 'MUR Sea Surface Temperature',
39+
href: 'https://registry.opendata.aws/mur',
40+
blurb: 'Multi-scale Ultra-high Resolution sea-surface temperature.',
41+
hosting: 'AWS Open Data',
42+
size: '54 TB',
43+
domain: 'geo',
44+
},
45+
{
46+
name: 'NASA POWER',
47+
href: 'https://registry.opendata.aws/nasa-power/',
48+
blurb: 'Solar and meteorological data for renewable-energy and agricultural applications.',
49+
hosting: 'AWS Open Data',
50+
domain: 'geo',
51+
},
52+
{
53+
name: 'National Water Model',
54+
href: 'https://discourse.pangeo.io/t/the-national-water-model-reanalysis-zarr-dataset-on-aws/1449',
55+
blurb: 'NOAA National Water Model reanalysis.',
56+
hosting: 'AWS',
57+
size: '5 TB',
58+
domain: 'geo',
59+
},
60+
{
61+
name: 'webKnossos',
62+
href: 'https://zarr.webknossos.org/',
63+
blurb: 'Connectomics datasets exposed as Zarr.',
64+
hosting: 'scalableminds GmbH',
65+
size: '70 TB',
66+
domain: 'other',
67+
},
68+
]

.vitepress/data/implementations.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// .vitepress/data/implementations.ts
2+
//
3+
// Each entry includes a shields.io URL (`activity`) so the grid card
4+
// can show the latest release date / last commit inline. Pick whichever
5+
// of `release-date`, `release-date-pre`, or `last-commit` best reflects
6+
// the project's actual release cadence.
7+
8+
import type { Implementation } from './types'
9+
10+
export const implementations: Implementation[] = [
11+
// Python
12+
{ language: 'Python', name: 'Zarr-Python', href: 'https://github.com/zarr-developers/zarr-python', v2: true, v3: true,
13+
activity: 'https://img.shields.io/github/release-date-pre/zarr-developers/zarr-python' },
14+
{ language: 'Python', name: 'Zarrita', href: 'https://github.com/scalableminds/zarrita', v2: true, v3: true,
15+
activity: 'https://img.shields.io/github/last-commit/scalableminds/zarrita' },
16+
// Rust / Rust+Python+C
17+
{ language: 'Rust', name: 'zarrs', href: 'https://github.com/LDeakin/zarrs', v2: true, v3: true,
18+
activity: 'https://img.shields.io/github/release-date-pre/LDeakin/zarrs' },
19+
// C / C++
20+
{ language: 'C', name: 'NetCDF-C', href: 'https://github.com/Unidata/netcdf-c', v2: true, v3: false,
21+
activity: 'https://img.shields.io/github/release-date-pre/Unidata/netcdf-c' },
22+
{ language: 'C++', name: 'TensorStore', href: 'https://github.com/google/tensorstore', v2: true, v3: true,
23+
activity: 'https://img.shields.io/github/last-commit/google/tensorstore' },
24+
{ language: 'C++', name: 'GDAL', href: 'https://gdal.org/drivers/raster/zarr.html', v2: true, v3: false,
25+
activity: 'https://img.shields.io/github/release-date-pre/OSGeo/gdal' },
26+
{ language: 'C++', name: 'cpp-zarr', href: 'https://github.com/abcucberkeley/cpp-zarr', v2: true, v3: false,
27+
activity: 'https://img.shields.io/github/release-date/abcucberkeley/cpp-zarr' },
28+
{ language: 'C++', name: 'z5', href: 'https://github.com/constantinpape/z5', v2: true, v3: false,
29+
activity: 'https://img.shields.io/github/release-date/constantinpape/z5' },
30+
{ language: 'C++', name: 'xtensor-zarr', href: 'https://github.com/xtensor-stack/xtensor-zarr', v2: true, v3: false,
31+
activity: 'https://img.shields.io/github/last-commit/xtensor-stack/xtensor-zarr' },
32+
// Java
33+
{ language: 'Java', name: 'JZarr', href: 'https://github.com/bcdev/jzarr', v2: true, v3: true,
34+
activity: 'https://img.shields.io/github/last-commit/bcdev/jzarr' },
35+
{ language: 'Java', name: 'zarr-java', href: 'https://github.com/zarr-developers/zarr-java', v2: true, v3: true,
36+
activity: 'https://img.shields.io/github/release-date-pre/zarr-developers/zarr-java' },
37+
{ language: 'Java', name: 'n5-zarr', href: 'https://github.com/saalfeldlab/n5-zarr', v2: true, v3: false,
38+
activity: 'https://img.shields.io/github/last-commit/saalfeldlab/n5-zarr' },
39+
{ language: 'Java', name: 'netCDF-Java', href: 'https://github.com/Unidata/netcdf-java', v2: true, v3: false,
40+
activity: 'https://img.shields.io/github/release-date-pre/Unidata/netcdf-java' },
41+
// JavaScript
42+
{ language: 'JavaScript', name: 'zarrita.js', href: 'https://github.com/manzt/zarrita.js', v2: true, v3: true,
43+
activity: 'https://img.shields.io/github/release-date-pre/manzt/zarrita.js' },
44+
{ language: 'JavaScript', name: 'Zarr.js', href: 'https://github.com/gzuidhof/zarr.js', v2: true, v3: false,
45+
activity: 'https://img.shields.io/github/release-date-pre/gzuidhof/zarr.js' },
46+
// Julia / R / OCaml / Elixir
47+
{ language: 'Julia', name: 'Zarr.jl', href: 'https://github.com/JuliaIO/Zarr.jl', v2: true, v3: false,
48+
activity: 'https://img.shields.io/github/release-date-pre/JuliaIO/Zarr.jl' },
49+
{ language: 'R', name: 'pizzarr', href: 'https://github.com/keller-mark/pizzarr', v2: true, v3: false,
50+
activity: 'https://img.shields.io/github/last-commit/keller-mark/pizzarr' },
51+
{ language: 'R', name: 'Rarr', href: 'https://github.com/grimbough/Rarr', v2: true, v3: false,
52+
activity: 'https://img.shields.io/github/last-commit/grimbough/Rarr' },
53+
{ language: 'OCaml', name: 'zarr-ml', href: 'https://github.com/zoj613/zarr-ml', v2: false, v3: true,
54+
activity: 'https://img.shields.io/github/release-date-pre/zoj613/zarr-ml' },
55+
{ language: 'Elixir', name: 'ExZarr', href: 'https://github.com/thanos/ExZarr', v2: true, v3: true,
56+
activity: 'https://img.shields.io/github/last-commit/thanos/ExZarr' },
57+
]

0 commit comments

Comments
 (0)