You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2026/05/21 13:07:12 UTC
(opendal) branch main updated: docs: reshape README around action cards (#7578)
This is an automated email from the ASF dual-hosted git repository.
Xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 0cab0d582 docs: reshape README around action cards (#7578)
0cab0d582 is described below
commit 0cab0d582dd0ac3eea9b8112ac207ba7000d63d0
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Thu May 21 21:07:06 2026 +0800
docs: reshape README around action cards (#7578)
---
README.md | 446 +++++++++++++++-----------
website/static/img/bindings/c.svg | 1 +
website/static/img/bindings/cpp.svg | 1 +
website/static/img/bindings/d.svg | 1 +
website/static/img/bindings/dart.svg | 1 +
website/static/img/bindings/dotnet.svg | 1 +
website/static/img/bindings/go.svg | 1 +
website/static/img/bindings/haskell.svg | 1 +
website/static/img/bindings/java.svg | 1 +
website/static/img/bindings/lua.svg | 1 +
website/static/img/bindings/nodejs.svg | 1 +
website/static/img/bindings/ocaml.svg | 1 +
website/static/img/bindings/php.svg | 1 +
website/static/img/bindings/python.svg | 1 +
website/static/img/bindings/ruby.svg | 1 +
website/static/img/bindings/rust.svg | 1 +
website/static/img/bindings/swift.svg | 1 +
website/static/img/bindings/zig.svg | 1 +
website/static/img/layers/cache.svg | 1 +
website/static/img/layers/content-type.svg | 1 +
website/static/img/layers/layers.svg | 1 +
website/static/img/layers/logging.svg | 1 +
website/static/img/layers/metrics.svg | 1 +
website/static/img/layers/otel.svg | 1 +
website/static/img/layers/prometheus.svg | 1 +
website/static/img/layers/retry.svg | 1 +
website/static/img/layers/route.svg | 1 +
website/static/img/layers/timeout.svg | 1 +
website/static/img/layers/tracing.svg | 1 +
website/static/img/layers/traffic-control.svg | 1 +
website/static/img/services/aliyundrive.png | Bin 0 -> 114378 bytes
website/static/img/services/alluxio.svg | 12 +
website/static/img/services/azure.svg | 1 +
website/static/img/services/backblaze.png | Bin 0 -> 4299 bytes
website/static/img/services/cloudflare.ico | Bin 0 -> 908 bytes
website/static/img/services/cos.svg | 49 +++
website/static/img/services/crates.ico | Bin 0 -> 15086 bytes
website/static/img/services/databricks.png | Bin 0 -> 19725 bytes
website/static/img/services/dropbox.ico | Bin 0 -> 4286 bytes
website/static/img/services/etcd.png | Bin 0 -> 3385 bytes
website/static/img/services/foundationdb.png | Bin 0 -> 3606 bytes
website/static/img/services/gcs.svg | 1 +
website/static/img/services/gdrive.png | Bin 0 -> 2168 bytes
website/static/img/services/github.svg | 3 +
website/static/img/services/hadoop.ico | Bin 0 -> 15406 bytes
website/static/img/services/huggingface.ico | Bin 0 -> 47890 bytes
website/static/img/services/ietf.png | Bin 0 -> 3345 bytes
website/static/img/services/ipfs.ico | Bin 0 -> 15086 bytes
website/static/img/services/koofr.ico | Bin 0 -> 521 bytes
website/static/img/services/lakefs.ico | Bin 0 -> 15406 bytes
website/static/img/services/mdn.svg | 8 +
website/static/img/services/memcached.jpg | Bin 0 -> 37859 bytes
website/static/img/services/mongodb.ico | Bin 0 -> 32988 bytes
website/static/img/services/mysql.ico | Bin 0 -> 1406 bytes
website/static/img/services/obs.png | Bin 0 -> 3500 bytes
website/static/img/services/onedrive.svg | 1 +
website/static/img/services/opendal.svg | 1 +
website/static/img/services/openstack.png | Bin 0 -> 7828 bytes
website/static/img/services/oss.svg | 1 +
website/static/img/services/pcloud.png | Bin 0 -> 2839 bytes
website/static/img/services/postgresql.ico | Bin 0 -> 4846 bytes
website/static/img/services/redis.png | Bin 0 -> 3659 bytes
website/static/img/services/rocksdb.png | Bin 0 -> 3927 bytes
website/static/img/services/s3.svg | 8 +
website/static/img/services/seafile.png | Bin 0 -> 45439 bytes
website/static/img/services/sqlite.ico | Bin 0 -> 318 bytes
website/static/img/services/surrealdb.svg | 1 +
website/static/img/services/tikv.png | Bin 0 -> 14180 bytes
website/static/img/services/upyun.png | Bin 0 -> 2122 bytes
website/static/img/services/vercel.png | Bin 0 -> 466 bytes
website/static/img/services/volcengine.png | Bin 0 -> 3251 bytes
website/static/img/services/yandex.png | Bin 0 -> 7170 bytes
72 files changed, 365 insertions(+), 196 deletions(-)
diff --git a/README.md b/README.md
index b8f64b91e..19cd963aa 100644
--- a/README.md
+++ b/README.md
@@ -1,238 +1,292 @@
# Apache OpenDAL™: *One Layer, All Storage.*
-[](https://github.com/apache/opendal/discussions)
-[](https://opendal.apache.org/discord)
-[](https://deepwiki.com/apache/opendal)
+[](https://github.com/apache/opendal/discussions)
+[](https://opendal.apache.org/discord)
+[](https://deepwiki.com/apache/opendal)
-OpenDAL (`/ˈoʊ.pən.dæl/`, pronounced "OH-puhn-dal") is an Open Data Access Layer that enables seamless interaction with diverse storage services.
+Apache OpenDAL™ (`/ˈoʊ.pən.dæl/`, pronounced "OH-puhn-dal") is an Open Data Access Layer that gives every language a unified way to access object storage, file storage, cloud SaaS, databases, protocols, and key-value services.
-OpenDAL's development is guided by its vision of **One Layer, All Storage** and its core principles: **Open Community**, **Solid Foundation**, **Fast Access**, **Object Storage First**, and **Extensible Architecture**. Read the explained vision at [OpenDAL Vision](https://opendal.apache.org/vision).
+Apache OpenDAL™ is guided by its vision of **One Layer, All Storage** and its core principles: **Open Community**, **Solid Foundation**, **Fast Access**, **Object Storage First**, and **Extensible Architecture**. Read the explained vision at [OpenDAL Vision](https://opendal.apache.org/vision).
<img src="./website/static/img/architectural.png" alt="OpenDAL Architecture" width="100%" />
-## For *ANY* languages
+## At a Glance
+
+- Project: Apache OpenDAL™
+- Vision: **One Layer, All Storage**
+- Core package: Rust crate [`opendal`][Rust Core Link]
+- Main abstraction: `Operator`
+- Extension points: language bindings, layers, and services
+- Common layers: retry, timeout, logging, tracing, metrics, throttling, and concurrency control
+- Access targets: object storage, file systems, cloud SaaS, databases, protocols, and key-value services
+
+## Why OpenDAL
+
+Apache OpenDAL™ turns the vision of **One Layer, All Storage** into a practical data access layer for applications, libraries, and data systems.
+
+- **Zero-cost core**: built in Rust with composable services and layers, so applications only enable the backends and capabilities they use.
+- **Production-ready access**: add retry, timeout, logging, tracing, metrics, throttling, and concurrency limits through reusable layers.
+- **One API, all storage**: access object storage, file systems, cloud SaaS, databases, protocols, and key-value services through the same interface.
+- **Open and extensible**: add new services, layers, and language bindings while keeping the same unified access model.
+
+## Choose Your Language
+
+Start with the binding for your application runtime. Each binding provides access to the same OpenDAL service model while following its language ecosystem.
> **Note**: Each binding has its own independent version number, which may differ from the Rust core version. When checking for updates or compatibility, always refer to the specific binding's version rather than the core version.
-| Name | Release | Docs | Used By |
-| ----------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | ----------------------------------- |
-| [Rust Core] | [![Rust Core Image]][Rust Core Link] | [![Docs Release]][Rust Core Release Docs] [![Docs Dev]][Rust Core Dev Docs] | [![Rust Core Users Image]][Rust Core Users] |
-| [C Binding] | - | [![Docs Dev]][C Binding Dev Docs] | [![C Binding Users Image]][C Binding Users] |
-| [Cpp Binding] | - | [![Docs Dev]][Cpp Binding Dev Docs] | - |
-| [D Binding] | - | - | - |
-| [Dart Binding] | - | - | - |
-| [Dotnet Binding] | - | - | - |
-| [Go Binding] | [![Go Binding Image]][Go Binding Link] | [![Docs Release]][Go Release Docs] | - |
-| [Haskell Binding] | - | - | - |
-| [Java Binding] | [![Java Binding Image]][Java Binding Link] | [![Docs Release]][Java Binding Release Docs] [![Docs Dev]][Java Binding Dev Docs] | [![Java Binding Users Image]][Java Binding Users] |
-| [Lua Binding] | - | - | - |
-| [Node.js Binding] | [![Node.js Binding Image]][Node.js Binding Link] | [![Docs Dev]][Node.js Binding Dev Docs] | - |
-| [OCaml Binding] | - | - | - |
-| [PHP Binding] | - | - | - |
-| [Python Binding] | [![Python Binding Image]][Python Binding Link] | [![Docs Dev]][Python Binding Dev Docs] | [![Python Binding Users Image]][Python Binding Users] |
-| [Ruby Binding] | - | - | - |
-| [Swift Binding] | - | - | - |
-| [Zig Binding] | - | - | - |
-
-[Docs Release]: https://img.shields.io/badge/docs-release-blue
-[Docs Dev]: https://img.shields.io/badge/docs-dev-blue
+| | | | |
+| :---: | :---: | :---: | :---: |
+| <img src="./website/static/img/bindings/rust.svg" width="42" height="42" alt="Rust logo"><br>**[Rust Core]**<br>[Package][Rust Core Link] · [Docs][Rust Core Release Docs] · [Dev Docs][Rust Core Dev Docs] | <img src="./website/static/img/bindings/c.svg" width="42" height="42" alt="C logo"><br>**[C Binding]**<br>[Dev Docs][C Binding Dev Docs] | <img src="./website/static/img/bindings/cpp.svg" width="42" height="42" alt="C++ logo"><br>**[Cpp Binding]**<br>[Dev Docs][Cpp Binding Dev Docs] [...]
+| <img src="./website/static/img/bindings/dart.svg" width="42" height="42" alt="Dart logo"><br>**[Dart Binding]** | <img src="./website/static/img/bindings/dotnet.svg" width="42" height="42" alt=".NET logo"><br>**[Dotnet Binding]** | <img src="./website/static/img/bindings/go.svg" width="42" height="42" alt="Go logo"><br>**[Go Binding]**<br>[Package][Go Binding Link] · [Docs][Go Release Docs] | <img src="./website/static/img/bindings/haskell.svg" width="42" height="42" alt="Haskell logo" [...]
+| <img src="./website/static/img/bindings/java.svg" width="42" height="42" alt="Java logo"><br>**[Java Binding]**<br>[Package][Java Binding Link] · [Docs][Java Binding Release Docs] · [Dev Docs][Java Binding Dev Docs] | <img src="./website/static/img/bindings/lua.svg" width="42" height="42" alt="Lua logo"><br>**[Lua Binding]** | <img src="./website/static/img/bindings/nodejs.svg" width="42" height="42" alt="Node.js logo"><br>**[Node.js Binding]**<br>[Package][Node.js Binding Link] · [Dev [...]
+| <img src="./website/static/img/bindings/php.svg" width="42" height="42" alt="PHP logo"><br>**[PHP Binding]** | <img src="./website/static/img/bindings/python.svg" width="42" height="42" alt="Python logo"><br>**[Python Binding]**<br>[Package][Python Binding Link] · [Dev Docs][Python Binding Dev Docs] | <img src="./website/static/img/bindings/ruby.svg" width="42" height="42" alt="Ruby logo"><br>**[Ruby Binding]** | <img src="./website/static/img/bindings/swift.svg" width="42" height="42" [...]
+| <img src="./website/static/img/bindings/zig.svg" width="42" height="42" alt="Zig logo"><br>**[Zig Binding]** | | | |
+
+## Choose Your Layers
+
+Add layers when your application needs cross-service behavior such as retries, timeouts, observability, or traffic control.
+
+| | | | |
+| :---: | :---: | :---: | :---: |
+| <img src="./website/static/img/layers/retry.svg" width="42" height="42" alt="Retry icon"><br>**[RetryLayer]**<br>Retry temporary failures. | <img src="./website/static/img/layers/timeout.svg" width="42" height="42" alt="Timeout icon"><br>**[TimeoutLayer]**<br>Bound slow or hanging operations. | <img src="./website/static/img/layers/logging.svg" width="42" height="42" alt="Logging icon"><br>**[LoggingLayer]**<br>Emit structured operation logs. | <img src="./website/static/img/layers/tra [...]
+| <img src="./website/static/img/layers/metrics.svg" width="42" height="42" alt="Metrics icon"><br>**[MetricsLayer]**<br>Export operation metrics. | <img src="./website/static/img/layers/prometheus.svg" width="42" height="42" alt="Prometheus icon"><br>**[PrometheusLayer]**<br>Expose Prometheus metrics. | <img src="./website/static/img/layers/otel.svg" width="42" height="42" alt="OpenTelemetry icon"><br>**[OtelMetricsLayer]**<br>Export OpenTelemetry metrics. | <img src="./website/static/i [...]
+| <img src="./website/static/img/layers/content-type.svg" width="42" height="42" alt="Content type icon"><br>**[MimeGuessLayer]**<br>Infer `Content-Type` from paths. | <img src="./website/static/img/layers/route.svg" width="42" height="42" alt="Route icon"><br>**[RouteLayer]**<br>Route operations by path. | <img src="./website/static/img/layers/cache.svg" width="42" height="42" alt="Cache icon"><br>**[FoyerLayer]**<br>Add hybrid cache behavior. | <img src="./website/static/img/layers/lay [...]
+
+Explore all available layers in the [layers documentation][Layers Docs].
+
+## Choose Your Services
+
+Pick the storage services that your application needs. See the full OpenDAL service configuration docs in the [services documentation][Services Docs].
+
+<table>
+ <tr>
+ <th colspan="3" align="left">Object Storage</th>
+ <th colspan="3" align="left">File Storage</th>
+ </tr>
+ <tr>
+ <td width="16.66%"><a href="https://aws.amazon.com/s3/"><img src="./website/static/img/services/s3.svg" width="18" height="18" alt="AWS logo"> s3</a></td>
+ <td width="16.66%"><a href="https://cloud.google.com/storage"><img src="./website/static/img/services/gcs.svg" width="46" height="16" alt="Google Cloud logo"> gcs</a></td>
+ <td width="16.66%"><a href="https://azure.microsoft.com/en-us/services/storage/blobs/"><img src="./website/static/img/services/azure.svg" width="18" height="18" alt="Azure logo"> azblob</a></td>
+ <td width="16.66%"><a href="https://opendal.apache.org/docs/rust/opendal/services/struct.Fs.html"><img src="./website/static/img/services/opendal.svg" width="18" height="18" alt="OpenDAL logo"> fs</a></td>
+ <td width="16.66%"><a href="https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html"><img src="./website/static/img/services/hadoop.ico" width="18" height="18" alt="Apache Hadoop logo"> hdfs</a></td>
+ <td width="16.66%"><a href="https://github.com/Kimahriman/hdfs-native"><img src="./website/static/img/services/hadoop.ico" width="18" height="18" alt="Apache Hadoop logo"> hdfs-native</a></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.aliyun.com/product/oss"><img src="./website/static/img/services/oss.svg" width="46" height="16" alt="Alibaba Cloud logo"> oss</a></td>
+ <td><a href="https://www.huaweicloud.com/intl/en-us/product/obs.html"><img src="./website/static/img/services/obs.png" width="40" height="16" alt="Huawei Cloud logo"> obs</a></td>
+ <td><a href="https://www.tencentcloud.com/products/cos"><img src="./website/static/img/services/cos.svg" width="26" height="18" alt="Tencent Cloud logo"> cos</a></td>
+ <td><a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html"><img src="./website/static/img/services/hadoop.ico" width="18" height="18" alt="Apache Hadoop logo"> webhdfs</a></td>
+ <td><a href="https://lakefs.io/"><img src="./website/static/img/services/lakefs.ico" width="18" height="18" alt="lakeFS logo"> lakefs</a></td>
+ <td><a href="https://ipfs.tech/"><img src="./website/static/img/services/ipfs.ico" width="18" height="18" alt="IPFS logo"> ipfs</a></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.volcengine.com/product/tos"><img src="./website/static/img/services/volcengine.png" width="18" height="18" alt="Volcengine logo"> tos</a></td>
+ <td><a href="https://www.backblaze.com/"><img src="./website/static/img/services/backblaze.png" width="18" height="18" alt="Backblaze logo"> b2</a></td>
+ <td><a href="https://docs.openstack.org/swift/latest/"><img src="./website/static/img/services/openstack.png" width="18" height="18" alt="OpenStack logo"> swift</a></td>
+ <td><a href="https://docs.ipfs.tech/concepts/file-systems/"><img src="./website/static/img/services/ipfs.ico" width="18" height="18" alt="IPFS logo"> ipmfs</a></td>
+ <td><a href="https://learn.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api"><img src="./website/static/img/services/azure.svg" width="18" height="18" alt="Azure logo"> azfile</a></td>
+ <td><a href="https://azure.microsoft.com/en-us/products/storage/data-lake-storage/"><img src="./website/static/img/services/azure.svg" width="18" height="18" alt="Azure logo"> azdls</a></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.upyun.com/"><img src="./website/static/img/services/upyun.png" width="18" height="18" alt="Upyun logo"> upyun</a></td>
+ <td><a href="https://vercel.com/docs/storage/vercel-blob"><img src="./website/static/img/services/vercel.png" width="18" height="18" alt="Vercel logo"> vercel-blob</a></td>
+ <td><a href="https://docs.openstack.org/swift/latest/"><img src="./website/static/img/services/openstack.png" width="18" height="18" alt="OpenStack logo"> openstack_swift</a></td>
+ <td><a href="https://docs.alluxio.io/os/user/stable/en/api/REST-API.html"><img src="./website/static/img/services/alluxio.svg" width="18" height="18" alt="Alluxio logo"> alluxio</a></td>
+ <td><a href="https://github.com/Tencent/GooseFS"><img src="./website/static/img/services/cos.svg" width="26" height="18" alt="Tencent Cloud logo"> goosefs</a></td>
+ <td><a href="https://docs.databricks.com/en/dbfs/index.html"><img src="./website/static/img/services/databricks.png" width="18" height="18" alt="Databricks logo"> dbfs</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://www.mongodb.com/docs/manual/core/gridfs/"><img src="./website/static/img/services/mongodb.ico" width="18" height="18" alt="MongoDB logo"> gridfs</a></td>
+ <td><a href="https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system"><img src="./website/static/img/services/mdn.svg" width="18" height="18" alt="MDN Web Docs logo"> opfs</a></td>
+ <td><a href="https://github.com/bytedance/monoio"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> monoiofs</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://github.com/compio-rs/compio/"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> compfs</a></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <th colspan="3" align="left">Cloud SaaS</th>
+ <th colspan="3" align="left">Standard Protocols</th>
+ </tr>
+ <tr>
+ <td><a href="https://www.google.com/drive/"><img src="./website/static/img/services/gdrive.png" width="18" height="18" alt="Google Drive logo"> gdrive</a></td>
+ <td><a href="https://www.dropbox.com/"><img src="./website/static/img/services/dropbox.ico" width="18" height="18" alt="Dropbox logo"> dropbox</a></td>
+ <td><a href="https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage"><img src="./website/static/img/services/onedrive.svg" width="18" height="18" alt="OneDrive logo"> onedrive</a></td>
+ <td><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP"><img src="./website/static/img/services/mdn.svg" width="18" height="18" alt="MDN Web Docs logo"> http</a></td>
+ <td><a href="https://datatracker.ietf.org/doc/html/rfc959"><img src="./website/static/img/services/ietf.png" width="18" height="18" alt="IETF logo"> ftp</a></td>
+ <td><a href="https://datatracker.ietf.org/doc/html/rfc4918"><img src="./website/static/img/services/ietf.png" width="18" height="18" alt="IETF logo"> webdav</a></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.aliyundrive.com/"><img src="./website/static/img/services/aliyundrive.png" width="18" height="18" alt="Aliyun Drive logo"> aliyun-drive</a></td>
+ <td><a href="https://huggingface.co/"><img src="./website/static/img/services/huggingface.ico" width="18" height="18" alt="Hugging Face logo"> huggingface</a></td>
+ <td><a href="https://github.com/"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> github</a></td>
+ <td><a href="https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02"><img src="./website/static/img/services/ietf.png" width="18" height="18" alt="IETF logo"> sftp</a></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.pcloud.com/"><img src="./website/static/img/services/pcloud.png" width="18" height="18" alt="pCloud logo"> pcloud</a></td>
+ <td><a href="https://koofr.eu/"><img src="./website/static/img/services/koofr.ico" width="18" height="18" alt="Koofr logo"> koofr</a></td>
+ <td><a href="https://www.seafile.com/"><img src="./website/static/img/services/seafile.png" width="18" height="18" alt="Seafile logo"> seafile</a></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a href="https://360.yandex.com/disk/"><img src="./website/static/img/services/yandex.png" width="18" height="18" alt="Yandex Disk logo"> yandex-disk</a></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <th colspan="3" align="left">Databases</th>
+ <th colspan="3" align="left">Key-Value & Embedded</th>
+ </tr>
+ <tr>
+ <td><a href="https://www.sqlite.org/"><img src="./website/static/img/services/sqlite.ico" width="18" height="18" alt="SQLite logo"> sqlite</a></td>
+ <td><a href="https://www.mysql.com/"><img src="./website/static/img/services/mysql.ico" width="18" height="18" alt="MySQL logo"> mysql</a></td>
+ <td><a href="https://www.postgresql.org/"><img src="./website/static/img/services/postgresql.ico" width="18" height="18" alt="PostgreSQL logo"> postgresql</a></td>
+ <td><img src="./website/static/img/services/opendal.svg" width="18" height="18" alt="OpenDAL logo"> memory</td>
+ <td><a href="https://redis.io/"><img src="./website/static/img/services/redis.png" width="18" height="18" alt="Redis logo"> redis</a></td>
+ <td><a href="https://etcd.io/"><img src="./website/static/img/services/etcd.png" width="18" height="18" alt="etcd logo"> etcd</a></td>
+ </tr>
+ <tr>
+ <td><a href="https://www.mongodb.com/"><img src="./website/static/img/services/mongodb.ico" width="18" height="18" alt="MongoDB logo"> mongodb</a></td>
+ <td><a href="https://surrealdb.com/"><img src="./website/static/img/services/surrealdb.svg" width="18" height="18" alt="SurrealDB logo"> surrealdb</a></td>
+ <td><a href="https://developers.cloudflare.com/d1/"><img src="./website/static/img/services/cloudflare.ico" width="18" height="18" alt="Cloudflare logo"> d1</a></td>
+ <td><a href="http://rocksdb.org/"><img src="./website/static/img/services/rocksdb.png" width="18" height="18" alt="RocksDB logo"> rocksdb</a></td>
+ <td><a href="https://memcached.org/"><img src="./website/static/img/services/memcached.jpg" width="56" height="16" alt="Memcached logo"> memcached</a></td>
+ <td><a href="https://developers.cloudflare.com/kv/"><img src="./website/static/img/services/cloudflare.ico" width="18" height="18" alt="Cloudflare logo"> cloudflare-kv</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://tikv.org/"><img src="./website/static/img/services/tikv.png" width="42" height="16" alt="TiKV logo"> tikv</a></td>
+ <td><a href="https://www.foundationdb.org/"><img src="./website/static/img/services/foundationdb.png" width="56" height="12" alt="FoundationDB logo"> foundationdb</a></td>
+ <td><a href="https://crates.io/crates/sled"><img src="./website/static/img/services/crates.ico" width="18" height="18" alt="crates.io logo"> sled</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://crates.io/crates/redb"><img src="./website/static/img/services/crates.ico" width="18" height="18" alt="crates.io logo"> redb</a></td>
+ <td><a href="https://crates.io/crates/persy"><img src="./website/static/img/services/crates.ico" width="18" height="18" alt="crates.io logo"> persy</a></td>
+ <td><a href="https://github.com/xacrimon/dashmap"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> dashmap</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://crates.io/crates/cacache"><img src="./website/static/img/services/crates.ico" width="18" height="18" alt="crates.io logo"> cacache</a></td>
+ <td><a href="https://github.com/moka-rs/moka"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> moka</a></td>
+ <td><a href="https://github.com/moka-rs/mini-moka"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> mini-moka</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td><a href="https://github.com/foyer-rs/foyer"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> foyer</a></td>
+ <td><a href="https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows"><img src="./website/static/img/services/github.svg" width="18" height="18" alt="GitHub logo"> ghac</a></td>
+ <td><a href="https://vercel.com/docs/concepts/monorepos/remote-caching"><img src="./website/static/img/services/vercel.png" width="18" height="18" alt="Vercel logo"> vercel-artifacts</a></td>
+ </tr>
+</table>
+
+## Examples
+
+See [examples](./examples/) for runnable usage examples.
+
+## Documentation
+
+- Website: <https://opendal.apache.org>
+- Vision: <https://opendal.apache.org/vision>
+- Rust release docs: <https://docs.rs/opendal>
+- Rust dev docs: <https://opendal.apache.org/docs/rust/opendal/>
+
+## Contribute
+
+OpenDAL is an active open-source project. We are always open to people who want to use it or contribute to it. Here are some ways to go.
+
+- Start with [Contributing Guide](CONTRIBUTING.md).
+- Submit [Issues](https://github.com/apache/opendal/issues/new) for bug report or feature requests.
+- Start [Discussions](https://github.com/apache/opendal/discussions/new?category=q-a) for questions or ideas.
+- Talk to community directly at [Discord](https://opendal.apache.org/discord).
+- Report security vulnerabilities to [private mailing list](mailto:private@opendal.apache.org)
+
+## Branding
+
+The first and most prominent mentions must use the full form: **Apache OpenDAL™** of the name for any individual usage (webpage, handout, slides, etc.) Depending on the context and writing style, you should use the full form of the name sufficiently often to ensure that readers clearly understand the association of both the OpenDAL project and the OpenDAL software product to the ASF as the parent organization.
+
+For more details, see the [Apache Product Name Usage Guide](https://www.apache.org/foundation/marks/guide).
+
+## License and Trademarks
+
+Licensed under the Apache License, Version 2.0: <http://www.apache.org/licenses/LICENSE-2.0>
+
+Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.
+
+<!-- Link references -->
+
+<!-- Binding references -->
+
[Rust Core]: core/README.md
-[Rust Core Image]: https://img.shields.io/crates/v/opendal.svg
[Rust Core Link]: https://crates.io/crates/opendal
[Rust Core Release Docs]: https://docs.rs/opendal
[Rust Core Dev Docs]: https://opendal.apache.org/docs/rust/opendal/
-[Rust Core Users Image]: https://github.com/user-attachments/assets/2726c336-8509-491d-92d8-1be2040d5136
-[Rust Core Users]: core/users.md
-
[C Binding]: bindings/c/README.md
[C Binding Dev Docs]: https://opendal.apache.org/docs/c/
-[C Binding Users Image]: https://github.com/user-attachments/assets/b1cf4d79-8478-4eac-ae04-0bbe0d6a993d
-[C Binding Users]: bindings/c/users.md
[Cpp Binding]: bindings/cpp/README.md
[Cpp Binding Dev Docs]: https://opendal.apache.org/docs/cpp/
[D Binding]: bindings/d/README.md
[Dart Binding]: bindings/dart/README.md
[Dotnet Binding]: bindings/dotnet/README.md
[Go Binding]: bindings/go/README.md
-[Go Binding Image]: https://badge.fury.io/go/github.com%2Fapache%2Fopendal%2Fbindings%2Fgo.svg
[Go Binding Link]: https://pkg.go.dev/github.com/apache/opendal/bindings/go
[Go Release Docs]: https://pkg.go.dev/github.com/apache/opendal/bindings/go
[Haskell Binding]: bindings/haskell/README.md
[Java Binding]: bindings/java/README.md
-[Java Binding Image]: https://img.shields.io/maven-central/v/org.apache.opendal/opendal-java
[Java Binding Link]: https://central.sonatype.com/artifact/org.apache.opendal/opendal-java
[Java Binding Release Docs]: https://javadoc.io/doc/org.apache.opendal/opendal-java
[Java Binding Dev Docs]: https://opendal.apache.org/docs/java/
-[Java Binding Users Image]: https://github.com/user-attachments/assets/f20a59a9-8f23-4919-a165-980ed4e6e0d0
-[Java Binding Users]: bindings/java/users.md
[Lua Binding]: bindings/lua/README.md
[Node.js Binding]: bindings/nodejs/README.md
-[Node.js Binding Image]: https://img.shields.io/npm/v/opendal
[Node.js Binding Link]: https://www.npmjs.com/package/opendal
[Node.js Binding Dev Docs]: https://opendal.apache.org/docs/nodejs/
[OCaml Binding]: bindings/ocaml/README.md
[PHP Binding]: bindings/php/README.md
[Python Binding]: bindings/python/README.md
-[Python Binding Image]: https://img.shields.io/pypi/v/opendal
[Python Binding Link]: https://pypi.org/project/opendal/
[Python Binding Dev Docs]: https://opendal.apache.org/docs/python/
-[Python Binding Users Image]: https://github.com/user-attachments/assets/6bba7e5b-cada-4cf2-81e3-09d4e4535dcb
-[Python Binding Users]: bindings/python/users.md
[Ruby Binding]: bindings/ruby/README.md
[Swift Binding]: bindings/swift/README.md
[Zig Binding]: bindings/zig/README.md
-## For *ANY* methods
-
-| Name | Description | Release |
-| ----- | ------------------------------------------------------------------ | ------------------------- |
-| [oli] | Access data via Command Line (alternative to s3cmd, s3cli, azcopy) | [![oli image]][oli crate] |
-| [ofs] | Access data via POSIX file system API (alternative to s3fs) | [![ofs image]][ofs crate] |
-
-[oli]: https://github.com/apache/opendal-oli
-[oli image]: https://img.shields.io/crates/v/oli.svg
-[oli crate]: https://crates.io/crates/oli
-[ofs]: https://github.com/apache/opendal-ofs
-[ofs image]: https://img.shields.io/crates/v/ofs.svg
-[ofs crate]: https://crates.io/crates/ofs
-
-## For *ANY* integrations
-
-| Name | Description | Release | Docs |
-| ---------------------- | ----------------------------------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------- |
-| [dav-server-opendalfs] | a [dav-server-rs] implementation using opendal. | [![dav-server image]][dav-server crate] | [![Docs Release]][dav-server release docs] [![Docs Dev]][dav-server dev docs] |
-| [object_store_opendal] | an [object_store] implementation using opendal. | [![object_store image]][object_store crate] | [![Docs Release]][object_store release docs] [![Docs Dev]][object_store dev docs] |
-| [unftp-sbe-opendal] | an [unftp] storage backend implementation using opendal. | [![unftp-sbe image]][unftp-sbe crate] | [![Docs Release]][unftp-sbe release docs] [![Docs Dev]][unftp-sbe dev docs] |
-| [parquet_opendal] | Provides [`parquet`](https://crates.io/crates/parquet) efficient IO utilities | [![parquet image]][parquet crate] | [![Docs Release]][parquet release docs] [![Docs Dev]][parquet dev docs] |
-
-[dav-server-opendalfs]: integrations/dav-server/README.md
-[dav-server-rs]: https://github.com/messense/dav-server-rs
-[dav-server image]: https://img.shields.io/crates/v/dav-server-opendalfs.svg
-[dav-server crate]: https://crates.io/crates/dav-server-opendalfs
-[dav-server release docs]: https://docs.rs/dav-server-opendalfs/
-[dav-server dev docs]: https://opendal.apache.org/docs/dav-server-opendalfs/dav_server_opendalfs/
-
-[object_store_opendal]: integrations/object_store/README.md
-[object_store]: https://docs.rs/object_store
-[object_store image]: https://img.shields.io/crates/v/object_store_opendal.svg
-[object_store crate]: https://crates.io/crates/object_store_opendal
-[object_store release docs]: https://docs.rs/object_store_opendal/
-[object_store dev docs]: https://opendal.apache.org/docs/object-store-opendal/object_store_opendal/
-
-
-[unftp-sbe-opendal]: integrations/unftp-sbe/README.md
-[unftp]: https://crates.io/crates/unftp
-[unftp-sbe image]: https://img.shields.io/crates/v/unftp-sbe-opendal.svg
-[unftp-sbe crate]: https://crates.io/crates/unftp-sbe-opendal
-[unftp-sbe release docs]: https://docs.rs/unftp-sbe-opendal/
-[unftp-sbe dev docs]: https://opendal.apache.org/docs/unftp-sbe-opendal/unftp_sbe_opendal/
-
-[parquet_opendal]: integrations/parquet/README.md
-[parquet image]: https://img.shields.io/crates/v/parquet-opendal.svg
-[parquet crate]: https://crates.io/crates/parquet-opendal
-[parquet release docs]: https://docs.rs/parquet-opendal/
-[parquet dev docs]: https://opendal.apache.org/docs/parquet-opendal/parquet_opendal/
-
-## For *ANY* services
-
-| Type | Services |
-| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
-| Standard Storage Protocols | ftp http [sftp] [webdav] |
-| Object Storage Services | [azblob] [cos] [gcs] [obs] [oss] [s3] <br> [b2] [openstack_swift] [upyun] [vercel-blob] |
-| File Storage Services | fs [alluxio] [azdls] [azfile] [compfs] <br> [dbfs] [gridfs] [hdfs] [hdfs-native] [ipfs] [webhdfs] |
-| Consumer Cloud Storage Service | [aliyun-drive] [gdrive] [onedrive] [dropbox] [koofr] <br> [pcloud] [seafile] [yandex-disk] |
-| Key-Value Storage Services | [cacache] [cloudflare-kv] [dashmap] memory [etcd] <br> [foundationdb] [persy] [redis] [rocksdb] [sled] <br> [redb] [tikv] |
-| Database Storage Services | [d1] [mongodb] [mysql] [postgresql] [sqlite] [surrealdb] |
-| Cache Storage Services | [ghac] [memcached] [mini-moka] [moka] [vercel-artifacts] |
-| Git Based Storage Services | [huggingface] |
-
-[sftp]: https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02
-[webdav]: https://datatracker.ietf.org/doc/html/rfc4918
-
-[azblob]: https://azure.microsoft.com/en-us/services/storage/blobs/
-[cos]: https://www.tencentcloud.com/products/cos
-[gcs]: https://cloud.google.com/storage
-[obs]: https://www.huaweicloud.com/intl/en-us/product/obs.html
-[oss]: https://www.aliyun.com/product/oss
-[s3]: https://aws.amazon.com/s3/
-[b2]: https://www.backblaze.com/
-[openstack_swift]: https://docs.openstack.org/swift/latest/
-[upyun]: https://www.upyun.com/
-[vercel-blob]: https://vercel.com/docs/storage/vercel-blob
-
-[alluxio]: https://docs.alluxio.io/os/user/stable/en/api/REST-API.html
-[azdls]: https://azure.microsoft.com/en-us/products/storage/data-lake-storage/
-[azfile]: https://learn.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api
-[compfs]: https://github.com/compio-rs/compio/
-[dbfs]: https://docs.databricks.com/en/dbfs/index.html
-[gridfs]: https://www.mongodb.com/docs/manual/core/gridfs/
-[hdfs]: https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
-[hdfs-native]: https://github.com/Kimahriman/hdfs-native
-[ipfs]: https://ipfs.tech/
-[webhdfs]: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html
-
-[aliyun-drive]: https://www.aliyundrive.com/
-[gdrive]: https://www.google.com/drive/
-[onedrive]: https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage
-[dropbox]: https://www.dropbox.com/
-[koofr]: https://koofr.eu/
-[pcloud]: https://www.pcloud.com/
-[seafile]: https://www.seafile.com/
-[yandex-disk]: https://360.yandex.com/disk/
-
-[cacache]: https://crates.io/crates/cacache
-[cloudflare-kv]: https://developers.cloudflare.com/kv/
-[dashmap]: https://github.com/xacrimon/dashmap
-[etcd]: https://etcd.io/
-[foundationdb]: https://www.foundationdb.org/
-[persy]: https://crates.io/crates/persy
-[redis]: https://redis.io/
-[rocksdb]: http://rocksdb.org/
-[sled]: https://crates.io/crates/sled
-[redb]: https://crates.io/crates/redb
-[tikv]: https://tikv.org/
-
-[d1]: https://developers.cloudflare.com/d1/
-[mongodb]: https://www.mongodb.com/
-[mysql]: https://www.mysql.com/
-[postgresql]: https://www.postgresql.org/
-[sqlite]: https://www.sqlite.org/
-[surrealdb]: https://surrealdb.com/
-
-[ghac]: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows
-[memcached]: https://memcached.org/
-[mini-moka]: https://github.com/moka-rs/mini-moka
-[moka]: https://github.com/moka-rs/moka
-[vercel-artifacts]: https://vercel.com/docs/concepts/monorepos/remote-caching
-
-[huggingface]: https://huggingface.co/
-
-## Examples
-
-The examples are available at [here](./examples/).
-
-## Documentation
-
-The documentation is available at <https://opendal.apache.org>.
-
-## Contribute
-
-OpenDAL is an active open-source project. We are always open to people who want to use it or contribute to it. Here are some ways to go.
-
-- Start with [Contributing Guide](CONTRIBUTING.md).
-- Submit [Issues](https://github.com/apache/opendal/issues/new) for bug report or feature requests.
-- Start [Discussions](https://github.com/apache/opendal/discussions/new?category=q-a) for questions or ideas.
-- Talk to community directly at [Discord](https://opendal.apache.org/discord).
-- Report security vulnerabilities to [private mailing list](mailto:private@opendal.apache.org)
-
-## Branding
-
-The first and most prominent mentions must use the full form: **Apache OpenDAL™** of the name for any individual usage (webpage, handout, slides, etc.) Depending on the context and writing style, you should use the full form of the name sufficiently often to ensure that readers clearly understand the association of both the OpenDAL project and the OpenDAL software product to the ASF as the parent organization.
-
-For more details, see the [Apache Product Name Usage Guide](https://www.apache.org/foundation/marks/guide).
-
-## License and Trademarks
-
-Licensed under the Apache License, Version 2.0: <http://www.apache.org/licenses/LICENSE-2.0>
-
-Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.
+<!-- Layer references -->
+
+[Layers Docs]: https://opendal.apache.org/docs/rust/opendal/layers/
+[RetryLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.RetryLayer.html
+[TimeoutLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.TimeoutLayer.html
+[LoggingLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.LoggingLayer.html
+[TracingLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.TracingLayer.html
+[MetricsLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.MetricsLayer.html
+[PrometheusLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.PrometheusLayer.html
+[OtelMetricsLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.OtelMetricsLayer.html
+[ThrottleLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.ThrottleLayer.html
+[ConcurrentLimitLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.ConcurrentLimitLayer.html
+[MimeGuessLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.MimeGuessLayer.html
+[RouteLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.RouteLayer.html
+[FoyerLayer]: https://opendal.apache.org/docs/rust/opendal/layers/struct.FoyerLayer.html
+
+<!-- Service references -->
+
+[Services Docs]: https://opendal.apache.org/docs/rust/opendal/services/
diff --git a/website/static/img/bindings/c.svg b/website/static/img/bindings/c.svg
new file mode 100644
index 000000000..e70d71c66
--- /dev/null
+++ b/website/static/img/bindings/c.svg
@@ -0,0 +1 @@
+<svg fill="#A8B9CC" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C</title><path d="M16.5921 9.1962s-.354-3.298-3.627-3.39c-3.2741-.09-4.9552 2.474-4.9552 6.14 0 3.6651 1.858 6.5972 5.0451 6.5972 3.184 0 3.5381-3.665 3.5381-3.665l6.1041.365s.36 3.31-2.196 5.836c-2.552 2.5241-5.6901 2.9371-7.8762 2.9201-2.19-.017-5.2261.034-8.1602-2.97-2.938-3.0101-3.436-5.9302-3.436-8.8002 0-2.8701.556-6.6702 4.047-9.5502C7.444.72 9.849 0 12.254 0c10.0422 0 10.7172 9.2602 10.71 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/cpp.svg b/website/static/img/bindings/cpp.svg
new file mode 100644
index 000000000..3d1b49e21
--- /dev/null
+++ b/website/static/img/bindings/cpp.svg
@@ -0,0 +1 @@
+<svg fill="#00599C" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C++</title><path d="M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016. [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/d.svg b/website/static/img/bindings/d.svg
new file mode 100644
index 000000000..9095fd148
--- /dev/null
+++ b/website/static/img/bindings/d.svg
@@ -0,0 +1 @@
+<svg fill="#B03931" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>D</title><path d="M22.635 3.883a1.364 1.25 0 0 0-1.363 1.25 1.364 1.25 0 0 0 1.363 1.25A1.364 1.25 0 0 0 24 5.133a1.364 1.25 0 0 0-1.365-1.25zm-16.004.418-6.027.008c-.026 0-.051-.003-.076 0-.296.036-.527.273-.528.558l.018 14.574c0 .22.06.676.682.676l5.58-.021c1.595-.003 2.664-.031 3.3-.112h.016a11.43 11.43 0 0 0 1.955-.469c1.22-.38 2.3-.944 3.23-1.697a7.854 7.854 0 0 0 2.114-2.562 6.716 6.716 0 0 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/dart.svg b/website/static/img/bindings/dart.svg
new file mode 100644
index 000000000..990da5554
--- /dev/null
+++ b/website/static/img/bindings/dart.svg
@@ -0,0 +1 @@
+<svg fill="#0175C2" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dart</title><path d="M4.105 4.105S9.158 1.58 11.684.316a3.079 3.079 0 0 1 1.481-.315c.766.047 1.677.788 1.677.788L24 9.948v9.789h-4.263V24H9.789l-9-9C.303 14.5 0 13.795 0 13.105c0-.319.18-.818.316-1.105l3.789-7.895zm.679.679v11.787c.002.543.021 1.024.498 1.508L10.204 23h8.533v-4.263L4.784 4.784zm12.055-.678c-.899-.896-1.809-1.78-2.74-2.643-.302-.267-.567-.468-1.07-.462-.37.014-.87.195-.87.195L6.3 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/dotnet.svg b/website/static/img/bindings/dotnet.svg
new file mode 100644
index 000000000..c4b482ecc
--- /dev/null
+++ b/website/static/img/bindings/dotnet.svg
@@ -0,0 +1 @@
+<svg fill="#512BD4" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>.NET</title><path d="M24 8.77h-2.468v7.565h-1.425V8.77h-2.462V7.53H24zm-6.852 7.565h-4.821V7.53h4.63v1.24h-3.205v2.494h2.953v1.234h-2.953v2.604h3.396zm-6.708 0H8.882L4.78 9.863a2.896 2.896 0 0 1-.258-.51h-.036c.032.189.048.592.048 1.21v5.772H3.157V7.53h1.659l3.965 6.32c.167.261.275.442.323.54h.024c-.04-.233-.06-.629-.06-1.185V7.529h1.372zm-8.703-.693a.868.829 0 0 1-.869.829.868.829 0 0 1-.868-.83 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/go.svg b/website/static/img/bindings/go.svg
new file mode 100644
index 000000000..51990bd01
--- /dev/null
+++ b/website/static/img/bindings/go.svg
@@ -0,0 +1 @@
+<svg fill="#00ADD8" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Go</title><path d="M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.0 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/haskell.svg b/website/static/img/bindings/haskell.svg
new file mode 100644
index 000000000..8bd8e24df
--- /dev/null
+++ b/website/static/img/bindings/haskell.svg
@@ -0,0 +1 @@
+<svg fill="#5D4F85" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Haskell</title><path d="M0 3.535L5.647 12 0 20.465h4.235L9.883 12 4.235 3.535zm5.647 0L11.294 12l-5.647 8.465h4.235l3.53-5.29 3.53 5.29h4.234L9.883 3.535zm8.941 4.938l1.883 2.822H24V8.473zm2.824 4.232l1.882 2.822H24v-2.822z"/></svg>
\ No newline at end of file
diff --git a/website/static/img/bindings/java.svg b/website/static/img/bindings/java.svg
new file mode 100644
index 000000000..d946516fb
--- /dev/null
+++ b/website/static/img/bindings/java.svg
@@ -0,0 +1 @@
+<svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenJDK</title><path d="M11.915 0 11.7.215C9.515 2.4 7.47 6.39 6.046 10.483c-1.064 1.024-3.633 2.81-3.711 3.551-.093.87 1.746 2.611 1.55 3.235-.198.625-1.304 1.408-1.014 1.939.1.188.823.011 1.277-.491a13.389 13.389 0 0 0-.017 2.14c.076.906.27 1.668.643 2.232.372.563.956.911 1.667.911.397 0 .727-.114 1.024-.264.298-.149.571-.33.91-.5.68-.34 1.634-.666 3.53-.604 1.903.062 2.872.39 3.559.704.687.314 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/lua.svg b/website/static/img/bindings/lua.svg
new file mode 100644
index 000000000..5f4c65216
--- /dev/null
+++ b/website/static/img/bindings/lua.svg
@@ -0,0 +1 @@
+<svg fill="#000080" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lua</title><path d="M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.12 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/nodejs.svg b/website/static/img/bindings/nodejs.svg
new file mode 100644
index 000000000..3cc5893e0
--- /dev/null
+++ b/website/static/img/bindings/nodejs.svg
@@ -0,0 +1 @@
+<svg fill="#5FA04E" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node.js</title><path d="M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.82 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/ocaml.svg b/website/static/img/bindings/ocaml.svg
new file mode 100644
index 000000000..41b2d39de
--- /dev/null
+++ b/website/static/img/bindings/ocaml.svg
@@ -0,0 +1 @@
+<svg fill="#EC6813" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OCaml</title><path d="M12.178 21.637c-.085-.17-.187-.524-.255-.676-.067-.135-.27-.506-.37-.625-.22-.253-.27-.27-.338-.608-.12-.574-.405-1.588-.76-2.296-.187-.372-.49-.677-.761-.947-.236-.236-.777-.624-.878-.607-.895.169-1.166 1.046-1.587 1.739-.237.388-.473.71-.66 1.115-.167.371-.151.793-.439 1.115a2.952 2.952 0 00-.624 1.097c-.034.084-.101.929-.186 1.131l1.318-.084c1.233.085.877.557 2.787.456l3. [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/php.svg b/website/static/img/bindings/php.svg
new file mode 100644
index 000000000..92bdc7de4
--- /dev/null
+++ b/website/static/img/bindings/php.svg
@@ -0,0 +1 @@
+<svg fill="#777BB4" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PHP</title><path d="M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/python.svg b/website/static/img/bindings/python.svg
new file mode 100644
index 000000000..e1b14ec64
--- /dev/null
+++ b/website/static/img/bindings/python.svg
@@ -0,0 +1 @@
+<svg fill="#3776AB" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Python</title><path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/ruby.svg b/website/static/img/bindings/ruby.svg
new file mode 100644
index 000000000..6acadc0ee
--- /dev/null
+++ b/website/static/img/bindings/ruby.svg
@@ -0,0 +1 @@
+<svg fill="#CC342D" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ruby</title><path d="M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/rust.svg b/website/static/img/bindings/rust.svg
new file mode 100644
index 000000000..faa8c3a34
--- /dev/null
+++ b/website/static/img/bindings/rust.svg
@@ -0,0 +1 @@
+<svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rust</title><path d="M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/swift.svg b/website/static/img/bindings/swift.svg
new file mode 100644
index 000000000..ce06dc55f
--- /dev/null
+++ b/website/static/img/bindings/swift.svg
@@ -0,0 +1 @@
+<svg fill="#F05138" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swift</title><path d="M7.508 0c-.287 0-.573 0-.86.002-.241.002-.483.003-.724.01-.132.003-.263.009-.395.015A9.154 9.154 0 0 0 4.348.15 5.492 5.492 0 0 0 2.85.645 5.04 5.04 0 0 0 .645 2.848c-.245.48-.4.972-.495 1.5-.093.52-.122 1.05-.136 1.576a35.2 35.2 0 0 0-.012.724C0 6.935 0 7.221 0 7.508v8.984c0 .287 0 .575.002.862.002.24.005.481.012.722.014.526.043 1.057.136 1.576.095.528.25 1.02.495 1.5a5.03 [...]
\ No newline at end of file
diff --git a/website/static/img/bindings/zig.svg b/website/static/img/bindings/zig.svg
new file mode 100644
index 000000000..d8504941a
--- /dev/null
+++ b/website/static/img/bindings/zig.svg
@@ -0,0 +1 @@
+<svg fill="#F7A41D" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zig</title><path d="m23.53 1.02-7.686 3.45h-7.06l-2.98 3.452h7.173L.47 22.98l7.681-3.607h7.065v-.002l2.978-3.45-7.148-.001 12.482-14.9zM0 4.47v14.901h1.883l2.98-3.45H3.451v-8h.942l2.824-3.45H0zm22.117 0-2.98 3.608h1.412v7.844h-.942l-2.98 3.45H24V4.47h-1.883z"/></svg>
\ No newline at end of file
diff --git a/website/static/img/layers/cache.svg b/website/static/img/layers/cache.svg
new file mode 100644
index 000000000..27da31733
--- /dev/null
+++ b/website/static/img/layers/cache.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="7" ry="3"/><path d="M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"/><path d="M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"/></svg>
diff --git a/website/static/img/layers/content-type.svg b/website/static/img/layers/content-type.svg
new file mode 100644
index 000000000..3067a16c8
--- /dev/null
+++ b/website/static/img/layers/content-type.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3h9l3 3v15H6z"/><path d="M15 3v4h4"/><path d="M9 13h6"/><path d="M11 17h2"/><path d="M10 10h4"/></svg>
diff --git a/website/static/img/layers/layers.svg b/website/static/img/layers/layers.svg
new file mode 100644
index 000000000..455ed2a00
--- /dev/null
+++ b/website/static/img/layers/layers.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3 9 5-9 5-9-5z"/><path d="m3 12 9 5 9-5"/><path d="m3 16 9 5 9-5"/></svg>
diff --git a/website/static/img/layers/logging.svg b/website/static/img/layers/logging.svg
new file mode 100644
index 000000000..359b2035a
--- /dev/null
+++ b/website/static/img/layers/logging.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3h9l3 3v15H6z"/><path d="M15 3v4h4"/><path d="M9 11h6"/><path d="M9 15h6"/><path d="M9 19h4"/></svg>
diff --git a/website/static/img/layers/metrics.svg b/website/static/img/layers/metrics.svg
new file mode 100644
index 000000000..ad226d62b
--- /dev/null
+++ b/website/static/img/layers/metrics.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20V10"/><path d="M10 20V4"/><path d="M16 20v-7"/><path d="M22 20H2"/></svg>
diff --git a/website/static/img/layers/otel.svg b/website/static/img/layers/otel.svg
new file mode 100644
index 000000000..4e7db4a9e
--- /dev/null
+++ b/website/static/img/layers/otel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 2v4"/><path d="M12 18v4"/><path d="M2 12h4"/><path d="M18 12h4"/><path d="m4.9 4.9 2.8 2.8"/><path d="m16.3 16.3 2.8 2.8"/><path d="m19.1 4.9-2.8 2.8"/><path d="m7.7 16.3-2.8 2.8"/></svg>
diff --git a/website/static/img/layers/prometheus.svg b/website/static/img/layers/prometheus.svg
new file mode 100644
index 000000000..f56b4f267
--- /dev/null
+++ b/website/static/img/layers/prometheus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3c2 3 2 5 0 8"/><path d="M8 5c-2 3-1 6 2 8"/><path d="M16 5c2 3 1 6-2 8"/><path d="M7 14a5 5 0 1 0 10 0"/><path d="M9 21h6"/></svg>
diff --git a/website/static/img/layers/retry.svg b/website/static/img/layers/retry.svg
new file mode 100644
index 000000000..f5135abec
--- /dev/null
+++ b/website/static/img/layers/retry.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 0 1-15.5 6.2"/><path d="M3 12a9 9 0 0 1 15.5-6.2"/><path d="M18 2v4h-4"/><path d="M6 22v-4h4"/></svg>
diff --git a/website/static/img/layers/route.svg b/website/static/img/layers/route.svg
new file mode 100644
index 000000000..08f57cc07
--- /dev/null
+++ b/website/static/img/layers/route.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2"/><circle cx="18" cy="6" r="2"/><circle cx="18" cy="18" r="2"/><path d="M8 6h6"/><path d="M18 8v6"/><path d="M6 8v4a6 6 0 0 0 6 6h4"/></svg>
diff --git a/website/static/img/layers/timeout.svg b/website/static/img/layers/timeout.svg
new file mode 100644
index 000000000..a8a929fa3
--- /dev/null
+++ b/website/static/img/layers/timeout.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/><path d="M5 3 2 6"/><path d="m19 3 3 3"/></svg>
diff --git a/website/static/img/layers/tracing.svg b/website/static/img/layers/tracing.svg
new file mode 100644
index 000000000..de92d4e81
--- /dev/null
+++ b/website/static/img/layers/tracing.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="12" r="2"/><circle cx="12" cy="5" r="2"/><circle cx="19" cy="12" r="2"/><circle cx="12" cy="19" r="2"/><path d="M7 11 11 7"/><path d="m13 7 4 4"/><path d="m17 13-4 4"/><path d="m11 17-4-4"/></svg>
diff --git a/website/static/img/layers/traffic-control.svg b/website/static/img/layers/traffic-control.svg
new file mode 100644
index 000000000..496827f4d
--- /dev/null
+++ b/website/static/img/layers/traffic-control.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14a8 8 0 0 1 16 0"/><path d="M12 14l4-4"/><path d="M5 20h14"/><path d="M8 20v-3"/><path d="M16 20v-3"/></svg>
diff --git a/website/static/img/services/aliyundrive.png b/website/static/img/services/aliyundrive.png
new file mode 100644
index 000000000..504bb3832
Binary files /dev/null and b/website/static/img/services/aliyundrive.png differ
diff --git a/website/static/img/services/alluxio.svg b/website/static/img/services/alluxio.svg
new file mode 100644
index 000000000..3f956939f
--- /dev/null
+++ b/website/static/img/services/alluxio.svg
@@ -0,0 +1,12 @@
+<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="256" height="256" rx="20" fill="#030021"/>
+<g clip-path="url(#clip0_2577_2862)">
+<path d="M249.677 151.136L244.324 163.829H236.929L255.581 119.35H264.687L284.333 163.829H276.386L270.812 151.136H249.677ZM268.55 145.011C263.418 133.201 260.934 127.573 259.941 124.427H259.886C258.948 127.462 256.078 134.912 251.829 145.011H268.55ZM297.191 119.35H304.53V157.703H330.908L329.86 163.829H297.246V119.35H297.191ZM343.766 119.35H351.106V157.703H377.484L376.435 163.829H343.821V119.35H343.766ZM395.088 119.35V144.569C395.088 155.717 401.489 158.752 407.89 158.752C415.506 158.752 4 [...]
+<path d="M147.362 163.553H106.747L110.334 156.71H143.72L147.362 163.553Z" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_2577_2862">
+<rect width="150" height="111.818" fill="white" transform="translate(53 72)"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/website/static/img/services/azure.svg b/website/static/img/services/azure.svg
new file mode 100644
index 000000000..49ebfea9f
--- /dev/null
+++ b/website/static/img/services/azure.svg
@@ -0,0 +1 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.33492 1.37491C5.44717 1.04229 5.75909 0.818359 6.11014 0.818359H11.25L5.91513 16.6255C5.80287 16.9581 5.49095 17.182 5.13991 17.182H1.13968C0.579936 17.182 0.185466 16.6325 0.364461 16.1022L5.33492 1.37491Z" fill="url(#paint0_linear_6102_134469)" /><path d="M13.5517 11.4546H5.45126C5.1109 11.4546 4.94657 11.8715 5.19539 12.1037L10.4005 16.9618C10.552 17.1032 10.7515 17.1819 10.9587 [...]
\ No newline at end of file
diff --git a/website/static/img/services/backblaze.png b/website/static/img/services/backblaze.png
new file mode 100644
index 000000000..c892c1cc7
Binary files /dev/null and b/website/static/img/services/backblaze.png differ
diff --git a/website/static/img/services/cloudflare.ico b/website/static/img/services/cloudflare.ico
new file mode 100644
index 000000000..a000261dc
Binary files /dev/null and b/website/static/img/services/cloudflare.ico differ
diff --git a/website/static/img/services/cos.svg b/website/static/img/services/cos.svg
new file mode 100644
index 000000000..91c2e239e
--- /dev/null
+++ b/website/static/img/services/cos.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 1053 719.6" style="enable-background:new 0 0 1053 719.6;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#949495;}
+ .st1{fill:#00A3FF;}
+ .st2{fill:#00C8DC;}
+ .st3{fill:#006EFF;}
+</style>
+<path class="st0" d="M665.2,619.1c-7.2,8.2-17.6,12.9-28.5,13c-18.4,0-30.2-12.7-30.2-32.3c0-20,11.3-32.4,29.5-32.4
+ c10.6,0.2,20.7,4.5,28.2,12c0.2,0.2,0.6,0.2,0.8,0c0,0,0,0,0,0c0.1-0.1,0.2-0.3,0.2-0.4v-10.1c-7.4-6.7-18.2-10.7-29.2-10.7
+ c-11.4,0-21.1,4-28,11.6s-10.4,17.9-10.4,30.2c0,25,15.7,41.8,39.1,41.8c11.2,0,22.1-4.1,29.5-11v-11.1c0-0.3-0.3-0.6-0.6-0.6
+ C665.5,618.9,665.3,619,665.2,619.1 M231.4,560.1H167v8.7h27.4v70.7h9.5v-70.7h27.4L231.4,560.1z M858,632.3
+ c-9,0-18.8-6.7-18.8-21.4c0-10.8,5.7-22.4,18.2-22.4c13.9,0,18.9,11.8,18.9,21.9C876.3,621.4,870,632.3,858,632.3z M876.6,560.2v27
+ c-4.9-5.3-13.1-7.3-19-7.3c-7.5-0.2-14.8,2.8-20,8.3c-5.1,5.5-7.8,13.1-7.8,22c0,21.2,14.1,30.7,28,30.7c8.1,0,14.8-2.9,18.8-8.1
+ v6.7h9.4v-79.4L876.6,560.2L876.6,560.2z M678.8,639.7h9.6v-79.4h-9.6V639.7z M352.1,610.5c0,18.3,11.8,30.5,29.4,30.5
+ c7.3,0.1,14.5-2.1,20.6-6.3V625c0-0.3-0.3-0.6-0.6-0.6c-0.1,0-0.3,0-0.4,0.1c-6.2,5.6-15.2,7.8-19.1,7.8c-12.7,0-21-8.5-21-21.8
+ s8.2-21.8,21-21.8c3.9,0,12.6,1.1,19.1,6.7c0.2,0.2,0.6,0.2,0.8,0c0.1-0.1,0.1-0.2,0.1-0.4v-8.8c-3.9-2.5-12.1-6.2-20.6-6.2
+ C363.9,580,352.1,592.3,352.1,610.5 M236.1,605v-0.2c0.3-4.9,2.6-9.5,6.4-12.6c3.2-2.6,7.3-4,11.4-3.9c10.4,0,17.1,6.3,17.6,16.5
+ v0.2H236.1z M254.2,580c-16.6,0-27.4,11.9-27.4,30.3c0.6,19.2,11.5,30.6,29.1,30.6c8.1,0.1,15.9-2.9,21.9-8.4v-9.5
+ c0-0.3-0.3-0.6-0.6-0.5c-0.1,0-0.3,0.1-0.4,0.2c-4.2,5.6-14.3,10.1-20.5,10.1c-5.9,0-11.5-2-14.6-5.1c-3.7-3.9-5.7-9.1-5.7-14.5
+ h44.4v-0.7c0-12.5-2.1-19.6-7.6-25.3C268.4,582.5,262.1,580.1,254.2,580L254.2,580z M809.5,611c0,15.8-9.1,21.4-16.9,21.4
+ c-7.6,0-15.6-5.2-15.6-14.9v-36.2h-9v36c0,13.9,10,23.7,24.2,23.7c7.9,0,14-2.7,18-7.7v6.3h8.6v-58.3h-9.2L809.5,611z M317.9,580
+ c-7.3,0-13.4,2.4-17.6,6.9v-5.6h-9v58.3h9.2v-33.2c0-5.5,1.7-10.2,4.7-13.1c3.3-3.2,7.8-4.9,12.4-4.6c7.2,0.2,14.4,5,14.4,15.1v35.8
+ h9.2v-36.2c0-7.2-2.3-13.2-6.6-17.3C330.5,582.1,324.7,580,317.9,580 M420.2,605v-0.2c0.3-4.9,2.6-9.5,6.5-12.6
+ c3.2-2.6,7.3-4,11.4-3.9c10.4,0,17.1,6.3,17.6,16.5v0.2L420.2,605z M438.3,580c-16.6,0-27.4,11.9-27.4,30.3
+ c0.6,19.2,11.5,30.6,29.1,30.6c8.1,0.1,15.9-2.9,21.9-8.4v-9.5c0-0.3-0.3-0.6-0.6-0.5c-0.2,0-0.3,0.1-0.4,0.2
+ c-4.2,5.6-14.3,10.1-20.5,10.1c-5.9,0-11.5-2-14.6-5.1c-3.7-3.9-5.7-9.1-5.7-14.5h44.4v-0.7c0-12.5-2.1-19.6-7.6-25.3
+ C452.5,582.5,446.2,580,438.3,580L438.3,580z M501.8,580c-7.3,0-13.4,2.4-17.6,6.9v-5.6h-9v58.3h9.2v-33.2c0-5.5,1.7-10.2,4.7-13.1
+ c3.3-3.2,7.8-4.9,12.4-4.6c7.2,0.2,14.4,5,14.4,15.1v35.8h9.2v-36.2c0-7.2-2.3-13.2-6.6-17.3C514.4,582.1,508.6,580,501.8,580
+ M553.4,565.8H544v15.6h-9.6v8.5h9.6v40.1c0,3.5,1,6.1,3.1,7.9c2.3,1.8,5.2,2.7,8.1,2.6c4.1-0.4,8.1-1.3,12-2.7v-8.8
+ c0-0.3-0.3-0.6-0.6-0.6c-0.1,0-0.1,0-0.2,0c-3.2,1.1-6.5,2-9.8,2.7c-1,0.2-1.8,0.3-2.4-0.2c-0.5-0.5-0.7-1.2-0.6-1.8v-39.2h16.8
+ v-8.5h-16.8L553.4,565.8z M729.2,632.2c-11.7,0-19.5-8.8-19.5-21.7l0,0c0-12.9,7.9-21.6,19.5-21.6s19.5,8.7,19.5,21.7
+ S740.9,632.2,729.2,632.2 M729.2,580.2c-16.9,0-28.2,12.2-28.2,30.4s11.4,30.4,28.3,30.4s28.3-12.2,28.3-30.4
+ S746.2,580.1,729.2,580.2"/>
+<path class="st1" d="M724.4,396.5c-8.7,8.7-26.1,21.7-56.5,21.7h-187c56.5-54.1,104.4-99.6,108.8-104c8.3-8.4,17-16.3,26.1-23.8
+ c21.8-19.5,39.1-21.7,54.4-21.7c21.7,0,39.1,8.7,54.4,21.6C754.9,318.5,754.9,368.4,724.4,396.5z M761.4,255.6
+ c-23-24.8-55.3-39-89.2-39c-30.4,0-56.5,10.9-80.5,28.2c-8.8,8.7-21.8,17.3-32.7,30.3c-8.7,8.7-195.7,190.7-195.7,190.7
+ c10.9,2.2,23.9,2.2,34.8,2.2h237.1c17.4,0,30.5,0,43.5-2.2c30-2.2,58.3-14.4,80.5-34.7C809.2,383.5,809.2,303.4,761.4,255.6
+ L761.4,255.6z"/>
+<path class="st2" d="M456.9,242.6c-23.9-17.3-47.9-26-76.1-26c-33.9,0-66.2,14.2-89.2,39c-48.4,49.7-47.4,129.2,2.2,177.7
+ c21.7,19.5,43.5,30.3,69.6,32.5l50-47.7h-28.3c-28.3-2.1-45.7-10.8-56.5-21.6c-30-29.6-30.9-77.6-2.2-108.3
+ c15.2-15.2,32.6-21.7,54.4-21.7c13.1,0,32.6,2.1,52.2,21.6c8.7,8.7,32.6,26,41.3,34.7h2.1l32.6-32.5v-2.2
+ C493.9,273,470,253.5,456.9,242.6"/>
+<path class="st3" d="M685.3,188.5c-24.7-66.3-88-110.4-158.8-110.5c-84.8,0-152.2,62.8-165.3,140.8c6.5,0,13.1-2.1,21.8-2.1
+ c8.7,0,19.6,2.1,28.3,2.1c10.9-54.2,58.7-93.2,115.3-93.2c47.8,0,89.2,28.2,108.7,69.3c0,0,2.2,2.2,2.2,0
+ C652.6,192.8,670,188.5,685.3,188.5L685.3,188.5"/>
+</svg>
diff --git a/website/static/img/services/crates.ico b/website/static/img/services/crates.ico
new file mode 100644
index 000000000..47c8f628f
Binary files /dev/null and b/website/static/img/services/crates.ico differ
diff --git a/website/static/img/services/databricks.png b/website/static/img/services/databricks.png
new file mode 100644
index 000000000..00d79561d
Binary files /dev/null and b/website/static/img/services/databricks.png differ
diff --git a/website/static/img/services/dropbox.ico b/website/static/img/services/dropbox.ico
new file mode 100644
index 000000000..fc6ca2b61
Binary files /dev/null and b/website/static/img/services/dropbox.ico differ
diff --git a/website/static/img/services/etcd.png b/website/static/img/services/etcd.png
new file mode 100644
index 000000000..f76795599
Binary files /dev/null and b/website/static/img/services/etcd.png differ
diff --git a/website/static/img/services/foundationdb.png b/website/static/img/services/foundationdb.png
new file mode 100644
index 000000000..378734f2f
Binary files /dev/null and b/website/static/img/services/foundationdb.png differ
diff --git a/website/static/img/services/gcs.svg b/website/static/img/services/gcs.svg
new file mode 100644
index 000000000..70687103f
--- /dev/null
+++ b/website/static/img/services/gcs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Google_Cloud_logo" data-name="Google Cloud logo" viewBox="0 0 138.35 24"><path d="M89.75,18.62A8.36,8.36,0,0,1,81.2,10,8.33,8.33,0,0,1,83.63,3.9a8.25,8.25,0,0,1,6.12-2.48,7.62,7.62,0,0,1,6,2.69L94.28,5.58a5.64,5.64,0,0,0-4.53-2.14,6.22,6.22,0,0,0-4.57,1.84A6.38,6.38,0,0,0,83.36,10a6.38,6.38,0,0,0,1.82,4.74,6.18,6.18,0,0,0,4.57,1.84,6.44,6.44,0,0,0,5-2.42l1.54,1.5a8,8,0,0,1-2.87,2.17A8.67,8.67,0,0,1,89.75,18.62ZM100.12,1.79V18.26H98V1.79Zm1.82,1 [...]
diff --git a/website/static/img/services/gdrive.png b/website/static/img/services/gdrive.png
new file mode 100644
index 000000000..2b64d3c9d
Binary files /dev/null and b/website/static/img/services/gdrive.png differ
diff --git a/website/static/img/services/github.svg b/website/static/img/services/github.svg
new file mode 100644
index 000000000..bf1081a0e
--- /dev/null
+++ b/website/static/img/services/github.svg
@@ -0,0 +1,3 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M16 0C7.16 0 0 7.16 0 16C0 23.08 4.58 29.06 10.94 31.18C11.74 31.32 12.04 30.84 12.04 30.42C12.04 30.04 12.02 28.78 12.02 27.44C8 28.18 6.96 26.46 6.64 25.56C6.46 25.1 5.68 23.68 5 23.3C4.44 23 3.64 22.26 4.98 22.24C6.24 22.22 7.14 23.4 7.44 23.88C8.88 26.3 11.18 25.62 12.1 25.2C12.24 24.16 12.66 23.46 13.12 23.06C9.56 22.66 5.84 21.28 5.84 15.16C5.84 13.42 6.46 11.98 7.48 10.86C7.32 10.46 6.76 8.82 7.64 6.62C7.64 6.62 8.98 6.2 12.04 8.26C [...]
+</svg>
diff --git a/website/static/img/services/hadoop.ico b/website/static/img/services/hadoop.ico
new file mode 100644
index 000000000..a7e00a51c
Binary files /dev/null and b/website/static/img/services/hadoop.ico differ
diff --git a/website/static/img/services/huggingface.ico b/website/static/img/services/huggingface.ico
new file mode 100644
index 000000000..424101de7
Binary files /dev/null and b/website/static/img/services/huggingface.ico differ
diff --git a/website/static/img/services/ietf.png b/website/static/img/services/ietf.png
new file mode 100644
index 000000000..62a858cf8
Binary files /dev/null and b/website/static/img/services/ietf.png differ
diff --git a/website/static/img/services/ipfs.ico b/website/static/img/services/ipfs.ico
new file mode 100644
index 000000000..a23747b4b
Binary files /dev/null and b/website/static/img/services/ipfs.ico differ
diff --git a/website/static/img/services/koofr.ico b/website/static/img/services/koofr.ico
new file mode 100644
index 000000000..9be0b76da
Binary files /dev/null and b/website/static/img/services/koofr.ico differ
diff --git a/website/static/img/services/lakefs.ico b/website/static/img/services/lakefs.ico
new file mode 100644
index 000000000..9dd66cf1b
Binary files /dev/null and b/website/static/img/services/lakefs.ico differ
diff --git a/website/static/img/services/mdn.svg b/website/static/img/services/mdn.svg
new file mode 100644
index 000000000..64920e95a
--- /dev/null
+++ b/website/static/img/services/mdn.svg
@@ -0,0 +1,8 @@
+<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <title>MDN Logo</title>
+ <rect width="56" height="56" fill="#15141A" />
+ <path d="M22.4203 12.5367L12.8529 43.4192H8.91937L18.4879 12.5322L22.4203 12.5367Z" fill="white" />
+ <path d="M25.9079 12.5369V43.4193H22.4282V12.5369H25.9079Z" fill="white" />
+ <path d="M39.4393 12.5367L29.8719 43.4192H25.9349L35.5024 12.5322L39.4393 12.5367Z" fill="white" />
+ <path d="M42.919 12.5369V43.4193H39.4393V12.5369H42.919Z" fill="white" />
+</svg>
diff --git a/website/static/img/services/memcached.jpg b/website/static/img/services/memcached.jpg
new file mode 100644
index 000000000..0b4fecc42
Binary files /dev/null and b/website/static/img/services/memcached.jpg differ
diff --git a/website/static/img/services/mongodb.ico b/website/static/img/services/mongodb.ico
new file mode 100644
index 000000000..237f3bbf4
Binary files /dev/null and b/website/static/img/services/mongodb.ico differ
diff --git a/website/static/img/services/mysql.ico b/website/static/img/services/mysql.ico
new file mode 100644
index 000000000..34d65bbe2
Binary files /dev/null and b/website/static/img/services/mysql.ico differ
diff --git a/website/static/img/services/obs.png b/website/static/img/services/obs.png
new file mode 100644
index 000000000..394e8c58f
Binary files /dev/null and b/website/static/img/services/obs.png differ
diff --git a/website/static/img/services/onedrive.svg b/website/static/img/services/onedrive.svg
new file mode 100644
index 000000000..dff0b7711
--- /dev/null
+++ b/website/static/img/services/onedrive.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M28 27s8.854-6.054 9.045-6.041A13.126 13.126 0 0 0 13.366 17h.134z" fill="#0364b8"/><path d="M19.016 18.564A10.447 10.447 0 0 0 13.5 17h-.134a10.5 10.5 0 0 0-8.479 16.5L19 32l8.833-8.155z" fill="#0f78d4"/><path d="M37.045 20.959a8.455 8.455 0 0 0-.576-.021 8.506 8.506 0 0 0-3.382.7l-5.254 2.21L34 31l9.98 2.517a8.532 8.532 0 0 0-6.935-12.558z" fill="#1490df"/><path d="M36.529 29.054l-2.178-1.3-4.994-2.991-1.524-.913-4.01 [...]
\ No newline at end of file
diff --git a/website/static/img/services/opendal.svg b/website/static/img/services/opendal.svg
new file mode 100644
index 000000000..4cba085ed
--- /dev/null
+++ b/website/static/img/services/opendal.svg
@@ -0,0 +1 @@
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 293.03 95.53"><defs><style>.cls-1{fill:#fff;}</style></defs><title>OpenDAL Logo</title><rect x="3.85" width="161.34" height="29.75"/><path d="M203.56,37.91a19.84,19.84,0,0,1,8.08,7.77,22.85,22.85,0,0,1,2.86,11.55,22.83,22.83,0,0,1-2.86,11.51,19.67,19.67,0,0,1-8.12,7.81,25.79,25.79,0,0,1-12.17,2.76H174.8V35.14h16.55A25.7,25.7,0,0,1,203.56,37.91Zm-3.4,28.76q3.39-3.35,3.4-9.44t-3.4-9.5q-3.41-3.4-9.5-3.4h-5.1V70h [...]
\ No newline at end of file
diff --git a/website/static/img/services/openstack.png b/website/static/img/services/openstack.png
new file mode 100644
index 000000000..f254f828a
Binary files /dev/null and b/website/static/img/services/openstack.png differ
diff --git a/website/static/img/services/oss.svg b/website/static/img/services/oss.svg
new file mode 100644
index 000000000..ddb7c7dcd
--- /dev/null
+++ b/website/static/img/services/oss.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 295.93 37.28" fill="#ff6a00" width="296" height="37"><rect x="19.94" y="16.3" width="19.92" height="4.49"></rect><path d="M49.84,0H36.66l3.18,4.5,9.61,3a4.15,4.15,0,0,1,2.9,4V25.84h0a4.17,4.17,0,0,1-2.9,4l-9.61,2.94-3.18,4.5H49.84a9.94,9.94,0,0,0,9.95-10V10A10,10,0,0,0,49.84,0Z"></path><path d="M10,0H23.14L20,4.5l-9.61,3a4.16,4.16,0,0,0-2.91,4V25.84h0a4.18,4.18,0,0,0,2.91,4L20,32.78l3.18,4.5H10a10,10,0,0,1-10-10V10A10,10,0,0,1,10,0Z">< [...]
diff --git a/website/static/img/services/pcloud.png b/website/static/img/services/pcloud.png
new file mode 100644
index 000000000..131b39e2a
Binary files /dev/null and b/website/static/img/services/pcloud.png differ
diff --git a/website/static/img/services/postgresql.ico b/website/static/img/services/postgresql.ico
new file mode 100644
index 000000000..cc0376628
Binary files /dev/null and b/website/static/img/services/postgresql.ico differ
diff --git a/website/static/img/services/redis.png b/website/static/img/services/redis.png
new file mode 100644
index 000000000..118478ddf
Binary files /dev/null and b/website/static/img/services/redis.png differ
diff --git a/website/static/img/services/rocksdb.png b/website/static/img/services/rocksdb.png
new file mode 100644
index 000000000..7f668f38f
Binary files /dev/null and b/website/static/img/services/rocksdb.png differ
diff --git a/website/static/img/services/s3.svg b/website/static/img/services/s3.svg
new file mode 100644
index 000000000..c4a24d080
--- /dev/null
+++ b/website/static/img/services/s3.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Icon-Architecture-Group/32/AWS-Cloud-logo_32</title>
+ <g id="Icon-Architecture-Group/32/AWS-Cloud-logo_32" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <rect id="Rectangle" fill="#242F3E" x="0" y="0" width="40" height="40"></rect>
+ <path d="M32.6982,23.9008 C33.0592,24.3698 32.2982,26.2998 31.9572,27.1638 C31.8532,27.4258 32.0752,27.5288 32.3072,27.3318 C33.8202,26.0478 34.2122,23.3568 33.9012,22.9688 C33.5942,22.5828 30.9502,22.2518 29.3382,23.4008 C29.0892,23.5778 29.1322,23.8218 29.4072,23.7898 C30.3152,23.6778 32.3382,23.4328 32.6982,23.9008 L32.6982,23.9008 Z M31.8562,25.9098 C32.3742,25.5318 31.9302,24.9688 31.4022,25.1898 C27.8892,26.6538 24.0752,27.3628 20.6022,27.3628 C15.4592,27.3628 10.4752,25.97 [...]
+ </g>
+</svg>
\ No newline at end of file
diff --git a/website/static/img/services/seafile.png b/website/static/img/services/seafile.png
new file mode 100644
index 000000000..a2d10eb33
Binary files /dev/null and b/website/static/img/services/seafile.png differ
diff --git a/website/static/img/services/sqlite.ico b/website/static/img/services/sqlite.ico
new file mode 100644
index 000000000..ddca3106e
Binary files /dev/null and b/website/static/img/services/sqlite.ico differ
diff --git a/website/static/img/services/surrealdb.svg b/website/static/img/services/surrealdb.svg
new file mode 100644
index 000000000..0ff629c29
--- /dev/null
+++ b/website/static/img/services/surrealdb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 840 979.9"><linearGradient id="a" x1="203.348" x2="636.696" y1="-25.413" y2="725.168" gradientTransform="translate(0 140.11)" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#ff00a0"/><stop offset="1" style="stop-color:#9600ff"/></linearGradient><path d="M420 257.8 653.3 387v-51.8L420 206.3c-34.7 19.2-202.4 111.9-233.3 128.9 28.7 15.9 330.1 182.4 513.3 283.6v51.6c-24.9 13.8-280 154.7-280 154.7-69. [...]
\ No newline at end of file
diff --git a/website/static/img/services/tikv.png b/website/static/img/services/tikv.png
new file mode 100644
index 000000000..790425865
Binary files /dev/null and b/website/static/img/services/tikv.png differ
diff --git a/website/static/img/services/upyun.png b/website/static/img/services/upyun.png
new file mode 100644
index 000000000..87c23cc42
Binary files /dev/null and b/website/static/img/services/upyun.png differ
diff --git a/website/static/img/services/vercel.png b/website/static/img/services/vercel.png
new file mode 100644
index 000000000..cc13700e3
Binary files /dev/null and b/website/static/img/services/vercel.png differ
diff --git a/website/static/img/services/volcengine.png b/website/static/img/services/volcengine.png
new file mode 100644
index 000000000..87017b545
Binary files /dev/null and b/website/static/img/services/volcengine.png differ
diff --git a/website/static/img/services/yandex.png b/website/static/img/services/yandex.png
new file mode 100644
index 000000000..737efe33f
Binary files /dev/null and b/website/static/img/services/yandex.png differ