You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluss.apache.org by ab...@apache.org on 2026/09/23 23:22:39 UTC
(fluss-blog) branch main updated: [Blog] Prepare article cards with categories and banners (#17)
This is an automated email from the ASF dual-hosted git repository.
fresh-borzoni pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss-blog.git
The following commit(s) were added to refs/heads/main by this push:
new a33ec80 [Blog] Prepare article cards with categories and banners (#17)
a33ec80 is described below
commit a33ec806b506d85e3f3b0c4e1a047d5c1910e888
Author: Jark Wu <ja...@apache.org>
AuthorDate: Thu Sep 24 07:22:34 2026 +0800
[Blog] Prepare article cards with categories and banners (#17)
Organize 31 posts into four reader-facing categories, add concise summaries and dedicated banner assets, and document the contribution guidelines for the new blog homepage.
AI-Model: gpt-6-astra
AI-Contributed/Feature: 195/195
AI-Contributed/UT: 0/0
Co-authored-by: Codex <no...@openai.com>
---
README.md | 32 ++++++++++++-----
blog/2024-11-29-fluss-open-source.md | 3 ++
blog/2024-12-11-why-fluss.md | 3 ++
blog/2024-12-12-fluss-intro.md | 3 ++
blog/2025-01-28-towards-stream-lake-arch.md | 3 ++
blog/2025-05-28-unveil-fluss-logo.md | 3 ++
blog/2025-06-01-partial-updates.md | 4 ++-
blog/2025-07-01-tiering-service.md | 2 ++
blog/2025-07-07-fluss-java-client.md | 3 ++
blog/2025-07-10-fluss-joins-asf.md | 4 ++-
blog/2025-07-23-hands-on-fluss-lakehouse.md | 4 ++-
blog/2025-08-07-taobao-practice.md | 3 ++
...2025-09-01-pk-key-tables-log-cache-streaming.md | 3 ++
...rg-why-your-lakehouse-is-not-streamhouse-yet.md | 4 ++-
blog/2026-02-01-fluss-fraud-detection.md | 15 ++++----
blog/2026-03-05-fluss-for-ai.md | 3 ++
blog/2026-04-06-fluss-rust-python-cpp-release.md | 5 +--
blog/2026-04-09-fluss-rust-sdk.md | 5 +--
blog/2026-04-16-roaringbitmap-uv-deduplication.md | 3 ++
...0-taobao-instant-commerce-real-time-decision.md | 3 ++
.../2026-04-22-column-pruning-streaming-storage.md | 5 +--
blog/2026-06-02-fluss-storage-hierarchy.md | 4 ++-
blog/2026-06-04-tiering-service-part1.md | 4 ++-
blog/2026-06-09-tiering-service-part2.md | 4 ++-
blog/2026-06-10-tiering-service-part3.md | 4 ++-
...-apache-fluss-graduates-to-top-level-project.md | 4 ++-
...18-rednote-kafka-to-fluss-real-time-indexing.md | 4 +--
blog/assets/0.6/banner-1200x510.webp | Bin 0 -> 98062 bytes
blog/assets/0.7/banner-1200x510.webp | Bin 0 -> 190206 bytes
blog/assets/0.8/banner-1200x510.webp | Bin 0 -> 184076 bytes
blog/assets/0.9/banner-1200x510.webp | Bin 0 -> 131790 bytes
blog/assets/1.0/banner-1200x510.webp | Bin 0 -> 123894 bytes
blog/assets/column_pruning/banner-1200x510.webp | Bin 0 -> 55914 bytes
blog/assets/fluss-x-iceberg/banner-1200x510.webp | Bin 0 -> 39740 bytes
.../assets/fluss_announcement/banner-1200x510.webp | Bin 0 -> 35770 bytes
blog/assets/fluss_asf/banner-1200x510.webp | Bin 0 -> 43476 bytes
blog/assets/fluss_for_ai/banner-1200x510.webp | Bin 0 -> 112304 bytes
.../fluss_fraud_detection/banner-1200x510.webp | Bin 0 -> 39542 bytes
blog/assets/fluss_intro/banner-1200x510.webp | Bin 0 -> 49888 bytes
blog/assets/fluss_logo/banner-1200x510.webp | Bin 0 -> 30096 bytes
blog/assets/fluss_rust/banner-1200x510.webp | Bin 0 -> 83100 bytes
.../assets/fluss_rust_release/banner-1200x510.webp | Bin 0 -> 55146 bytes
blog/assets/fluss_tlp/banner-1200x510.webp | Bin 0 -> 39002 bytes
.../hands_on_fluss_lakehouse/banner-1200x510.webp | Bin 0 -> 35008 bytes
blog/assets/java_client/banner-1200x510.webp | Bin 0 -> 206574 bytes
blog/assets/partial_updates/banner-1200x510.webp | Bin 0 -> 68056 bytes
blog/assets/pk_tables/banner-1200x510.webp | Bin 0 -> 23238 bytes
blog/assets/realtime_uv/banner-1200x510.webp | Bin 0 -> 62642 bytes
.../banner-1200x510.webp | Bin 0 -> 38534 bytes
blog/assets/storage_hierarchy/banner-1200x510.webp | Bin 0 -> 119534 bytes
blog/assets/taobao_practice/banner-1200x510.webp | Bin 0 -> 110974 bytes
.../taobao_realtime_decisions/banner-1200x510.webp | Bin 0 -> 77172 bytes
.../tiering_service_dd_part1/banner-1200x510.webp | Bin 0 -> 94066 bytes
.../tiering_service_dd_part2/banner-1200x510.webp | Bin 0 -> 81208 bytes
.../tiering_service_dd_part3/banner-1200x510.webp | Bin 0 -> 75140 bytes
.../unified_lake_stream_arch/banner-1200x510.webp | Bin 0 -> 42016 bytes
blog/assets/why_fluss/banner-1200x510.webp | Bin 0 -> 53658 bytes
blog/releases/0.6.md | 4 ++-
blog/releases/0.7.md | 4 ++-
blog/releases/0.8.md | 4 ++-
blog/releases/0.9.md | 4 ++-
blog/releases/1.0.md | 4 ++-
blog/tags.yml | 38 +++++++++------------
63 files changed, 136 insertions(+), 59 deletions(-)
diff --git a/README.md b/README.md
index f933b2e..7ed2583 100644
--- a/README.md
+++ b/README.md
@@ -51,15 +51,17 @@ slug: my-post-slug
title: "My Blog Post Title"
date: YYYY-MM-DD
authors: [jark]
-tags: [apache-fluss]
+tags: [engineering]
+description: "A short summary explaining what readers will learn from this post."
image: ./assets/my_post/banner.png
---
```
- **slug**: URL path for the post (e.g., `/blog/my-post-slug`)
- **authors**: List of author keys defined in `blog/authors.yml`
-- **tags**: List of tag keys defined in `blog/tags.yml`
-- **image**: (Optional) Cover image used for social sharing (Open Graph)
+- **tags**: One or two category keys from the four categories below
+- **description**: One concise sentence (roughly 120–200 characters) for the homepage card and social sharing
+- **image**: Cover image used on the homepage and for social sharing (Open Graph). Prefer an explicit path to the post banner, rather than a diagram from the article. For posts in `blog/releases/`, use `./../assets/<my_post>/banner.png` so Docusaurus bundles the relative image.
### 3. Add Images
@@ -83,14 +85,26 @@ your_key:
Then place your avatar image in `blog/static/avatars/`.
-### 5. Register New Tags
+### 5. Choose Categories
-If your post uses a new tag, define it in `blog/tags.yml`:
+Use one primary category and, when it adds useful context, one secondary category. Keep the taxonomy limited to these four categories; technology names such as Flink, Iceberg, Rust, or Arrow belong in the title, summary, or article text.
-```yaml
-my-new-tag:
- label: 'My New Tag'
-```
+| Key | Label | Use for |
+| --- | --- | --- |
+| `announcement` | Announcement | Releases, project milestones, and official announcements |
+| `case-study` | Case Study | Enterprise case studies and production practices |
+| `engineering` | Engineering | Architecture, system internals, and technical deep dives |
+| `guides` | Guides | Getting started, how-to guides, application patterns, and best practices |
+
+For example, a graduation announcement uses `[announcement]`; a production tuning deep dive can use `[engineering, guides]`.
+
+### 6. Prepare the Banner
+
+- **Canvas:** 1200 × 510 px (40:17, approximately 2.35:1). A 2400 × 1020 px export is also suitable for high-density screens. Use the same ratio for the featured article and regular cards.
+- **Composition:** Keep titles and logos at least 60 px from every edge on the 1200 × 510 canvas. Use a short headline and large type that remain legible at a card width of about 400 px.
+- **Export:** Use PNG for text-heavy artwork or WebP/JPEG for photographic images. Aim for a file size below 300 KB where possible.
+- **Existing artwork:** The homepage fits the whole image inside the banner frame without stretching or cropping. Images with other ratios have padding. For a full-bleed cover, create a separate banner composed for this canvas and point `image` to it; keep the original illustration in the article body. Simply resizing a 3:2 or square image does not make it 40:17 without distortion or cropping.
+- **Missing cover:** The homepage uses the Fluss default cover until a dedicated banner is available. Do not promote a dense technical diagram to a cover just to fill the space.
## Build
diff --git a/blog/2024-11-29-fluss-open-source.md b/blog/2024-11-29-fluss-open-source.md
index 3e3effb..375ce89 100644
--- a/blog/2024-11-29-fluss-open-source.md
+++ b/blog/2024-11-29-fluss-open-source.md
@@ -2,6 +2,9 @@
slug: fluss-open-source
title: Fluss is Now Open Source
authors: [jark, giannis]
+tags: [announcement]
+description: "Fluss is now open source: meet the columnar streaming storage system built for real-time analytics and the Lakehouse."
+image: ./assets/fluss_announcement/banner-1200x510.webp
---
Earlier this year at Flink Forward 2024 Berlin we [announced Fluss](https://www.ververica.com/blog/introducing-fluss) and today we are thrilled to announce open-sourcing the project.
diff --git a/blog/2024-12-11-why-fluss.md b/blog/2024-12-11-why-fluss.md
index f6120c0..ea6158c 100644
--- a/blog/2024-12-11-why-fluss.md
+++ b/blog/2024-12-11-why-fluss.md
@@ -3,6 +3,9 @@ slug: why-fluss
title: "Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics"
sidebar_label: "Why Fluss? Top 4 Challenges of Kafka"
authors: [jark]
+tags: [engineering]
+description: "Explore four challenges of using Kafka for real-time analytics, and why analytical workloads need a different approach to streaming storage."
+image: ./assets/why_fluss/banner-1200x510.webp
---
The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.
diff --git a/blog/2024-12-12-fluss-intro.md b/blog/2024-12-12-fluss-intro.md
index 1cb76fb..343d153 100644
--- a/blog/2024-12-12-fluss-intro.md
+++ b/blog/2024-12-12-fluss-intro.md
@@ -3,6 +3,9 @@ slug: fluss-intro
title: "Introducing Fluss: Streaming Storage for Real-Time Analytics"
sidebar_label: "Introducing Fluss"
authors: [jark]
+tags: [engineering]
+description: "An introduction to Fluss architecture, columnar streams, primary-key tables, and the design choices behind real-time analytical storage."
+image: ./assets/fluss_intro/banner-1200x510.webp
---
We have discussed the challenges of using Kafka for real-time analytics in our previous [blog post](/blog/why-fluss/).
diff --git a/blog/2025-01-28-towards-stream-lake-arch.md b/blog/2025-01-28-towards-stream-lake-arch.md
index 4c24c09..241fe0b 100644
--- a/blog/2025-01-28-towards-stream-lake-arch.md
+++ b/blog/2025-01-28-towards-stream-lake-arch.md
@@ -3,6 +3,9 @@ slug: unified-streaming-lakehouse
title: "Towards A Unified Streaming & Lakehouse Architecture"
sidebar_label: "Toward Streaming Lakehouse"
authors: [yuxia]
+tags: [engineering]
+description: "How Fluss connects streaming storage with the Lakehouse to combine fresh data, historical analysis, and a unified processing architecture."
+image: ./assets/unified_lake_stream_arch/banner-1200x510.webp
---
The unification of Lakehouse and streaming storage represents a major trend in the future development of modern data lakes and streaming storage systems. Designed specifically for real-time analytics, Fluss has embraced a unified Streaming and Lakehouse architecture from its inception, enabling seamless integration into existing Lakehouse architectures.
diff --git a/blog/2025-05-28-unveil-fluss-logo.md b/blog/2025-05-28-unveil-fluss-logo.md
index c4b12b5..eafeb80 100644
--- a/blog/2025-05-28-unveil-fluss-logo.md
+++ b/blog/2025-05-28-unveil-fluss-logo.md
@@ -2,6 +2,9 @@
slug: unveil-fluss-logo
title: "The Story of Fluss Logo"
authors: [jark]
+tags: [announcement]
+description: "Meet the Fluss surfing otter and follow the design journey, community feedback, and more than 30 iterations behind the project logo."
+image: ./assets/fluss_logo/banner-1200x510.webp
---

diff --git a/blog/2025-06-01-partial-updates.md b/blog/2025-06-01-partial-updates.md
index d5e8d69..356cc54 100644
--- a/blog/2025-06-01-partial-updates.md
+++ b/blog/2025-06-01-partial-updates.md
@@ -2,7 +2,9 @@
slug: partial-updates
title: "Understanding Partial Updates"
authors: [giannis]
-image: ./assets/partial_updates/banner.png
+image: ./assets/partial_updates/banner-1200x510.webp
+tags: [engineering, guides]
+description: "Learn how partial updates combine independent data streams into a wide table, reducing the state and complexity of streaming joins."
---

diff --git a/blog/2025-07-01-tiering-service.md b/blog/2025-07-01-tiering-service.md
index 2e69da1..dbd16b6 100644
--- a/blog/2025-07-01-tiering-service.md
+++ b/blog/2025-07-01-tiering-service.md
@@ -3,6 +3,8 @@ slug: tiering-service
title: "Tiering Service Deep Dive"
authors: [gyang94]
toc_max_heading_level: 5
+tags: [engineering]
+description: "A deep dive into the Fluss Tiering Service: how Flink moves streaming data into lakehouse storage and commits consistent snapshots."
---
# Tiering Service Deep Dive
diff --git a/blog/2025-07-07-fluss-java-client.md b/blog/2025-07-07-fluss-java-client.md
index 24e5385..999feab 100644
--- a/blog/2025-07-07-fluss-java-client.md
+++ b/blog/2025-07-07-fluss-java-client.md
@@ -2,6 +2,9 @@
slug: fluss-java-client
title: "Apache Fluss Java Client: A Deep Dive"
authors: [giannis]
+tags: [guides]
+description: "Build an IoT example with the Fluss Java client, from managing tables and writing records to scanning streams and looking up keys."
+image: ./assets/java_client/banner-1200x510.webp
---

diff --git a/blog/2025-07-10-fluss-joins-asf.md b/blog/2025-07-10-fluss-joins-asf.md
index 3e887b5..5fedcf0 100644
--- a/blog/2025-07-10-fluss-joins-asf.md
+++ b/blog/2025-07-10-fluss-joins-asf.md
@@ -3,7 +3,9 @@ slug: fluss-joins-asf
title: "Fluss Joins the Apache Incubator"
sidebar_label: "Fluss Joins the Apache Incubator"
authors: [jark]
-image: ./assets/fluss_asf/asf.png
+image: ./assets/fluss_asf/banner-1200x510.webp
+tags: [announcement]
+description: "Fluss joins the Apache Incubator, opening a new chapter in community governance, open development, and real-time data infrastructure."
---
On June 5th, Fluss, the next-generation streaming storage project open-sourced and donated by Alibaba, successfully passed the [vote](https://lists.apache.org/thread/mnol4wxovpz6klt196d3x239t4mp6z5o) and officially became an incubator project of the Apache Software Foundation (ASF). This marks a significant milestone in the development of the Fluss community, symbolizing that the project has entered a new phase that is more open,
diff --git a/blog/2025-07-23-hands-on-fluss-lakehouse.md b/blog/2025-07-23-hands-on-fluss-lakehouse.md
index a32ef50..0eb6dab 100644
--- a/blog/2025-07-23-hands-on-fluss-lakehouse.md
+++ b/blog/2025-07-23-hands-on-fluss-lakehouse.md
@@ -2,8 +2,10 @@
slug: hands-on-fluss-lakehouse
title: "From Stream to Lake: Hands-On with Fluss Tiering into Paimon on Minio"
authors: [gyang94]
-image: ./assets/hands_on_fluss_lakehouse/streamhouse.png
+image: ./assets/hands_on_fluss_lakehouse/banner-1200x510.webp
toc_max_heading_level: 5
+tags: [guides]
+description: "Set up Fluss tiering into Paimon on MinIO and try unified queries across real-time streams and historical lakehouse data."
---
# From Stream to Lake: Hands-On with Fluss Tiering into Paimon on Minio
diff --git a/blog/2025-08-07-taobao-practice.md b/blog/2025-08-07-taobao-practice.md
index 42481bc..be7cf3a 100644
--- a/blog/2025-08-07-taobao-practice.md
+++ b/blog/2025-08-07-taobao-practice.md
@@ -3,6 +3,9 @@ slug: taobao-practice
title: "How Taobao uses Apache Fluss (Incubating) for Real-Time Processing in Search and RecSys"
sidebar_label: "Apache Fluss (Incubating) at Taobao"
authors: [zhangxinyu, wanglilei]
+tags: [case-study]
+description: "How Taobao uses Fluss for search and recommendation workloads, reducing resource usage and streaming state in its real-time data warehouse."
+image: ./assets/taobao_practice/banner-1200x510.webp
---
## Streaming Storage More Suitable for Real-Time OLAP
diff --git a/blog/2025-09-01-pk-key-tables-log-cache-streaming.md b/blog/2025-09-01-pk-key-tables-log-cache-streaming.md
index c06a3e1..5425486 100644
--- a/blog/2025-09-01-pk-key-tables-log-cache-streaming.md
+++ b/blog/2025-09-01-pk-key-tables-log-cache-streaming.md
@@ -3,6 +3,9 @@ slug: pk-key-tables-log-cache-streaming
date: 2025-09-01
title: "Primary Key Tables: Unifying Log and Cache for 🚀 Streaming"
authors: [giannis]
+tags: [engineering]
+description: "Inside Fluss primary-key tables: how one storage layer combines a durable log, current-state lookups, and continuous change streams."
+image: ./assets/pk_tables/banner-1200x510.webp
---
Modern data platforms have traditionally relied on two foundational components: a **log** for durable, ordered event storage and a **cache** for low-latency access.
diff --git a/blog/2025-12-02-fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet.md b/blog/2025-12-02-fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet.md
index ba92871..12b615f 100644
--- a/blog/2025-12-02-fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet.md
+++ b/blog/2025-12-02-fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet.md
@@ -2,7 +2,9 @@
title: "Fluss × Iceberg (Part 1): Why Your Lakehouse Isn’t a Streamhouse Yet"
authors: [mehulbatra, yuxia]
date: 2025-12-11
-tags: [streaming-lakehouse, apache-iceberg, real-time-analytics, apache-fluss]
+tags: [engineering]
+description: "Why a Lakehouse needs a streaming layer, and how Fluss and Iceberg combine hot data with historical storage in a Streamhouse architecture."
+image: ./assets/fluss-x-iceberg/banner-1200x510.webp
---
diff --git a/blog/2026-02-01-fluss-fraud-detection.md b/blog/2026-02-01-fluss-fraud-detection.md
index 62dd023..c323920 100644
--- a/blog/2026-02-01-fluss-fraud-detection.md
+++ b/blog/2026-02-01-fluss-fraud-detection.md
@@ -1,9 +1,12 @@
----
-slug: fluss_fraud_detection
-date: 2026-02-01
-title: "A fraud detection pipeline with Streamhouse"
-authors: [jacopogardini]
-toc_max_heading_level: 5
+---
+slug: fluss_fraud_detection
+date: 2026-02-01
+title: "A fraud detection pipeline with Streamhouse"
+authors: [jacopogardini]
+toc_max_heading_level: 5
+tags: [guides]
+description: "Build a real-time fraud detection pipeline with Fluss, Flink, and Iceberg, combining fast transaction processing with historical analytics."
+image: ./assets/fluss_fraud_detection/banner-1200x510.webp
---
# A fraud detection pipeline with Streamhouse.
diff --git a/blog/2026-03-05-fluss-for-ai.md b/blog/2026-03-05-fluss-for-ai.md
index 5d57447..306c461 100644
--- a/blog/2026-03-05-fluss-for-ai.md
+++ b/blog/2026-03-05-fluss-for-ai.md
@@ -3,6 +3,9 @@ slug: fluss-for-ai
date: 2026-03-05
title: "What does Apache Fluss mean in the context of AI?"
authors: [giannis]
+tags: [engineering]
+description: "Explore how Fluss provides fresh features, user profiles, and continuously updated context for real-time intelligent systems."
+image: ./assets/fluss_for_ai/banner-1200x510.webp
---
### The Data Foundation for Real-Time Intelligent Systems
diff --git a/blog/2026-04-06-fluss-rust-python-cpp-release.md b/blog/2026-04-06-fluss-rust-python-cpp-release.md
index e9751aa..b91b451 100644
--- a/blog/2026-04-06-fluss-rust-python-cpp-release.md
+++ b/blog/2026-04-06-fluss-rust-python-cpp-release.md
@@ -4,8 +4,9 @@ date: 2026-04-06
title: "Announcing Apache Fluss (Incubating) Rust, Python, and C++ Client 0.1.0 Release"
authors: [yuxia, keithlee, anton]
toc_max_heading_level: 5
-tags: [releases, fluss-rust, fluss-rs, pyfluss, fluss-cpp, arrow]
-image: ./assets/fluss_rust_release/banner.png
+tags: [announcement]
+image: ./assets/fluss_rust_release/banner-1200x510.webp
+description: "Introducing the first Fluss Rust, Python, and C++ clients, built on a shared Rust core for native performance and consistent capabilities."
---

diff --git a/blog/2026-04-09-fluss-rust-sdk.md b/blog/2026-04-09-fluss-rust-sdk.md
index 7b12fd2..e9373be 100644
--- a/blog/2026-04-09-fluss-rust-sdk.md
+++ b/blog/2026-04-09-fluss-rust-sdk.md
@@ -3,8 +3,9 @@ slug: why-fluss-chose-rust-for-multi-language-sdk
title: "Why Apache Fluss Chose Rust for Its Multi-Language SDK"
date: 2026-04-09
authors: [yuxia, keithlee, anton]
-tags: [fluss-rust, fluss-rs, pyfluss, fluss-cpp, arrow]
-image: ./assets/fluss_rust/banner.jpg
+tags: [engineering]
+image: ./assets/fluss_rust/banner-1200x510.webp
+description: "Why Fluss chose a shared Rust core for its multi-language SDK, and how thin bindings bring consistent capabilities to Python and C++."
---

diff --git a/blog/2026-04-16-roaringbitmap-uv-deduplication.md b/blog/2026-04-16-roaringbitmap-uv-deduplication.md
index f8a391c..f8e508b 100644
--- a/blog/2026-04-16-roaringbitmap-uv-deduplication.md
+++ b/blog/2026-04-16-roaringbitmap-uv-deduplication.md
@@ -3,6 +3,9 @@ slug: roaringbitmap-uv-deduplication
date: 2026-04-16
title: "Real-Time Multi-Dimensional Unique Visitor Deduplication in Practice"
authors: [yangwang]
+tags: [guides]
+description: "Use Fluss aggregation tables and RoaringBitmap to count unique visitors across multiple dimensions with accurate, real-time deduplication."
+image: ./assets/realtime_uv/banner-1200x510.webp
---

diff --git a/blog/2026-04-20-taobao-instant-commerce-real-time-decision.md b/blog/2026-04-20-taobao-instant-commerce-real-time-decision.md
index 2868d89..170b234 100644
--- a/blog/2026-04-20-taobao-instant-commerce-real-time-decision.md
+++ b/blog/2026-04-20-taobao-instant-commerce-real-time-decision.md
@@ -3,6 +3,9 @@ slug: taobao-instant-commerce-real-time-decision
title: "Taobao Instant Commerce: Real-Time Decisions at Scale with Apache Fluss"
sidebar_label: "Taobao Instant Commerce: Real-Time Decisions at Scale with Apache Fluss"
authors: [matrixsparse]
+tags: [case-study]
+description: "How Taobao Instant Commerce uses Fluss for real-time decisions, from Delta Join and partial updates to lakehouse integration and UV statistics."
+image: ./assets/taobao_realtime_decisions/banner-1200x510.webp
---

diff --git a/blog/2026-04-22-column-pruning-streaming-storage.md b/blog/2026-04-22-column-pruning-streaming-storage.md
index 568be1c..5cf464d 100644
--- a/blog/2026-04-22-column-pruning-streaming-storage.md
+++ b/blog/2026-04-22-column-pruning-streaming-storage.md
@@ -3,8 +3,9 @@ slug: column-pruning-streaming-storage
title: "How Apache Fluss Achieves True Pruning in Streaming Storage"
date: 2026-04-22
authors: [yunhongzheng]
-tags: [fluss, column-pruning, arrow, streaming, kafka, performance]
-image: ./assets/column_pruning/banner.png
+tags: [engineering]
+image: ./assets/column_pruning/banner-1200x510.webp
+description: "How Arrow IPC storage, server-side pruning, and client-side batching let Fluss read only the columns that streaming applications need."
---

diff --git a/blog/2026-06-02-fluss-storage-hierarchy.md b/blog/2026-06-02-fluss-storage-hierarchy.md
index 484189e..5ed2a11 100644
--- a/blog/2026-06-02-fluss-storage-hierarchy.md
+++ b/blog/2026-06-02-fluss-storage-hierarchy.md
@@ -3,7 +3,9 @@ slug: fluss-storage-hierarchy
title: "The Storage Hierarchy: Hot, Remote, and Lake"
date: 2026-06-02
authors: [giannis]
-image: ./assets/storage_hierarchy/banner.png
+image: ./assets/storage_hierarchy/banner-1200x510.webp
+tags: [engineering]
+description: "Understand the Fluss storage hierarchy: what lives on local disk, in remote object storage, and in the Lakehouse, and how recovery works."
---

diff --git a/blog/2026-06-04-tiering-service-part1.md b/blog/2026-06-04-tiering-service-part1.md
index df02755..c3b3bcf 100644
--- a/blog/2026-06-04-tiering-service-part1.md
+++ b/blog/2026-06-04-tiering-service-part1.md
@@ -3,7 +3,9 @@ slug: fluss-tiering-service-deep-dive-part1
title: "Tiering Service Deep Dive Part 1: The Mental Model"
date: 2026-06-04
authors: [giannis]
-image: ./assets/tiering_service_dd_part1/banner.png
+image: ./assets/tiering_service_dd_part1/banner-1200x510.webp
+tags: [engineering]
+description: "Follow a lake-tiering round from its timer to the committed snapshot, and understand the processes and table states that make it work."
---

diff --git a/blog/2026-06-09-tiering-service-part2.md b/blog/2026-06-09-tiering-service-part2.md
index 183c1a2..2fdabaa 100644
--- a/blog/2026-06-09-tiering-service-part2.md
+++ b/blog/2026-06-09-tiering-service-part2.md
@@ -3,7 +3,9 @@ slug: fluss-tiering-service-deep-dive-part2
title: "Tiering Service Deep Dive Part 2: Tuning"
date: 2026-06-09
authors: [giannis]
-image: ./assets/tiering_service_dd_part2/banner.png
+image: ./assets/tiering_service_dd_part2/banner-1200x510.webp
+tags: [engineering]
+description: "Tune lake tiering with a practical guide to parallelism, table types, freshness, multi-table scheduling, and scaling out tiering jobs."
---

diff --git a/blog/2026-06-10-tiering-service-part3.md b/blog/2026-06-10-tiering-service-part3.md
index 454989e..fa0f0e6 100644
--- a/blog/2026-06-10-tiering-service-part3.md
+++ b/blog/2026-06-10-tiering-service-part3.md
@@ -3,7 +3,9 @@ slug: fluss-tiering-service-deep-dive-part3
title: "Tiering Service Deep Dive Part 3: In Production"
date: 2026-06-10
authors: [giannis]
-image: ./assets/tiering_service_dd_part3/banner.png
+image: ./assets/tiering_service_dd_part3/banner-1200x510.webp
+tags: [engineering]
+description: "Run lake tiering in production: identify failure modes, avoid deployment pitfalls, and monitor the signals that reveal operational health."
---

diff --git a/blog/2026-08-06-apache-fluss-graduates-to-top-level-project.md b/blog/2026-08-06-apache-fluss-graduates-to-top-level-project.md
index 627d4eb..ffcbfec 100644
--- a/blog/2026-08-06-apache-fluss-graduates-to-top-level-project.md
+++ b/blog/2026-08-06-apache-fluss-graduates-to-top-level-project.md
@@ -3,7 +3,9 @@ slug: apache-fluss-graduates-to-top-level-project
title: "Apache Fluss Graduates to a Top Level Project"
date: 2026-08-06
authors: [jark]
-tags: [apache-fluss, lakestream, real-time-analytics]
+tags: [announcement]
+description: "Apache Fluss graduates to a Top-Level Project, marking a milestone in community growth and the evolution of real-time Lakehouse infrastructure."
+image: ./assets/fluss_tlp/banner-1200x510.webp
---

diff --git a/blog/2026-08-18-rednote-kafka-to-fluss-real-time-indexing.md b/blog/2026-08-18-rednote-kafka-to-fluss-real-time-indexing.md
index 3f9e50e..d01015b 100644
--- a/blog/2026-08-18-rednote-kafka-to-fluss-real-time-indexing.md
+++ b/blog/2026-08-18-rednote-kafka-to-fluss-real-time-indexing.md
@@ -4,8 +4,8 @@ title: "From Kafka to Fluss: How Rednote Migrated a Core Real-Time Indexing Pipe
sidebar_label: "From Kafka to Fluss: Rednote's Real-Time Indexing Migration"
date: 2026-08-18
authors: [hanliu]
-tags: [apache-fluss, real-time-analytics, streaming-lakehouse]
-image: ./assets/rednote_real_time_indexing/banner.png
+tags: [case-study]
+image: ./assets/rednote_real_time_indexing/banner-1200x510.webp
description: "A production case study in columnar streaming, cold-data isolation, and lakehouse integration."
---
diff --git a/blog/assets/0.6/banner-1200x510.webp b/blog/assets/0.6/banner-1200x510.webp
new file mode 100644
index 0000000..9cb616a
Binary files /dev/null and b/blog/assets/0.6/banner-1200x510.webp differ
diff --git a/blog/assets/0.7/banner-1200x510.webp b/blog/assets/0.7/banner-1200x510.webp
new file mode 100644
index 0000000..4337aea
Binary files /dev/null and b/blog/assets/0.7/banner-1200x510.webp differ
diff --git a/blog/assets/0.8/banner-1200x510.webp b/blog/assets/0.8/banner-1200x510.webp
new file mode 100644
index 0000000..1f0d7c2
Binary files /dev/null and b/blog/assets/0.8/banner-1200x510.webp differ
diff --git a/blog/assets/0.9/banner-1200x510.webp b/blog/assets/0.9/banner-1200x510.webp
new file mode 100644
index 0000000..2d3f2df
Binary files /dev/null and b/blog/assets/0.9/banner-1200x510.webp differ
diff --git a/blog/assets/1.0/banner-1200x510.webp b/blog/assets/1.0/banner-1200x510.webp
new file mode 100644
index 0000000..8038e71
Binary files /dev/null and b/blog/assets/1.0/banner-1200x510.webp differ
diff --git a/blog/assets/column_pruning/banner-1200x510.webp b/blog/assets/column_pruning/banner-1200x510.webp
new file mode 100644
index 0000000..ee258e6
Binary files /dev/null and b/blog/assets/column_pruning/banner-1200x510.webp differ
diff --git a/blog/assets/fluss-x-iceberg/banner-1200x510.webp b/blog/assets/fluss-x-iceberg/banner-1200x510.webp
new file mode 100644
index 0000000..611f3ac
Binary files /dev/null and b/blog/assets/fluss-x-iceberg/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_announcement/banner-1200x510.webp b/blog/assets/fluss_announcement/banner-1200x510.webp
new file mode 100644
index 0000000..de01cd7
Binary files /dev/null and b/blog/assets/fluss_announcement/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_asf/banner-1200x510.webp b/blog/assets/fluss_asf/banner-1200x510.webp
new file mode 100644
index 0000000..16d2f3f
Binary files /dev/null and b/blog/assets/fluss_asf/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_for_ai/banner-1200x510.webp b/blog/assets/fluss_for_ai/banner-1200x510.webp
new file mode 100644
index 0000000..1b83587
Binary files /dev/null and b/blog/assets/fluss_for_ai/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_fraud_detection/banner-1200x510.webp b/blog/assets/fluss_fraud_detection/banner-1200x510.webp
new file mode 100644
index 0000000..af42b92
Binary files /dev/null and b/blog/assets/fluss_fraud_detection/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_intro/banner-1200x510.webp b/blog/assets/fluss_intro/banner-1200x510.webp
new file mode 100644
index 0000000..e2a9764
Binary files /dev/null and b/blog/assets/fluss_intro/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_logo/banner-1200x510.webp b/blog/assets/fluss_logo/banner-1200x510.webp
new file mode 100644
index 0000000..8d8c72f
Binary files /dev/null and b/blog/assets/fluss_logo/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_rust/banner-1200x510.webp b/blog/assets/fluss_rust/banner-1200x510.webp
new file mode 100644
index 0000000..88af7a5
Binary files /dev/null and b/blog/assets/fluss_rust/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_rust_release/banner-1200x510.webp b/blog/assets/fluss_rust_release/banner-1200x510.webp
new file mode 100644
index 0000000..6321470
Binary files /dev/null and b/blog/assets/fluss_rust_release/banner-1200x510.webp differ
diff --git a/blog/assets/fluss_tlp/banner-1200x510.webp b/blog/assets/fluss_tlp/banner-1200x510.webp
new file mode 100644
index 0000000..926f7bf
Binary files /dev/null and b/blog/assets/fluss_tlp/banner-1200x510.webp differ
diff --git a/blog/assets/hands_on_fluss_lakehouse/banner-1200x510.webp b/blog/assets/hands_on_fluss_lakehouse/banner-1200x510.webp
new file mode 100644
index 0000000..0b827ab
Binary files /dev/null and b/blog/assets/hands_on_fluss_lakehouse/banner-1200x510.webp differ
diff --git a/blog/assets/java_client/banner-1200x510.webp b/blog/assets/java_client/banner-1200x510.webp
new file mode 100644
index 0000000..46753b9
Binary files /dev/null and b/blog/assets/java_client/banner-1200x510.webp differ
diff --git a/blog/assets/partial_updates/banner-1200x510.webp b/blog/assets/partial_updates/banner-1200x510.webp
new file mode 100644
index 0000000..1a2b4fc
Binary files /dev/null and b/blog/assets/partial_updates/banner-1200x510.webp differ
diff --git a/blog/assets/pk_tables/banner-1200x510.webp b/blog/assets/pk_tables/banner-1200x510.webp
new file mode 100644
index 0000000..1e6cd28
Binary files /dev/null and b/blog/assets/pk_tables/banner-1200x510.webp differ
diff --git a/blog/assets/realtime_uv/banner-1200x510.webp b/blog/assets/realtime_uv/banner-1200x510.webp
new file mode 100644
index 0000000..874d5b6
Binary files /dev/null and b/blog/assets/realtime_uv/banner-1200x510.webp differ
diff --git a/blog/assets/rednote_real_time_indexing/banner-1200x510.webp b/blog/assets/rednote_real_time_indexing/banner-1200x510.webp
new file mode 100644
index 0000000..1fc3ad0
Binary files /dev/null and b/blog/assets/rednote_real_time_indexing/banner-1200x510.webp differ
diff --git a/blog/assets/storage_hierarchy/banner-1200x510.webp b/blog/assets/storage_hierarchy/banner-1200x510.webp
new file mode 100644
index 0000000..e661d9f
Binary files /dev/null and b/blog/assets/storage_hierarchy/banner-1200x510.webp differ
diff --git a/blog/assets/taobao_practice/banner-1200x510.webp b/blog/assets/taobao_practice/banner-1200x510.webp
new file mode 100644
index 0000000..99eaa3e
Binary files /dev/null and b/blog/assets/taobao_practice/banner-1200x510.webp differ
diff --git a/blog/assets/taobao_realtime_decisions/banner-1200x510.webp b/blog/assets/taobao_realtime_decisions/banner-1200x510.webp
new file mode 100644
index 0000000..ec480fb
Binary files /dev/null and b/blog/assets/taobao_realtime_decisions/banner-1200x510.webp differ
diff --git a/blog/assets/tiering_service_dd_part1/banner-1200x510.webp b/blog/assets/tiering_service_dd_part1/banner-1200x510.webp
new file mode 100644
index 0000000..5fae369
Binary files /dev/null and b/blog/assets/tiering_service_dd_part1/banner-1200x510.webp differ
diff --git a/blog/assets/tiering_service_dd_part2/banner-1200x510.webp b/blog/assets/tiering_service_dd_part2/banner-1200x510.webp
new file mode 100644
index 0000000..522fa75
Binary files /dev/null and b/blog/assets/tiering_service_dd_part2/banner-1200x510.webp differ
diff --git a/blog/assets/tiering_service_dd_part3/banner-1200x510.webp b/blog/assets/tiering_service_dd_part3/banner-1200x510.webp
new file mode 100644
index 0000000..aec6c37
Binary files /dev/null and b/blog/assets/tiering_service_dd_part3/banner-1200x510.webp differ
diff --git a/blog/assets/unified_lake_stream_arch/banner-1200x510.webp b/blog/assets/unified_lake_stream_arch/banner-1200x510.webp
new file mode 100644
index 0000000..3db2546
Binary files /dev/null and b/blog/assets/unified_lake_stream_arch/banner-1200x510.webp differ
diff --git a/blog/assets/why_fluss/banner-1200x510.webp b/blog/assets/why_fluss/banner-1200x510.webp
new file mode 100644
index 0000000..5a8368a
Binary files /dev/null and b/blog/assets/why_fluss/banner-1200x510.webp differ
diff --git a/blog/releases/0.6.md b/blog/releases/0.6.md
index 287b5cb..09e5283 100644
--- a/blog/releases/0.6.md
+++ b/blog/releases/0.6.md
@@ -2,7 +2,9 @@
title: Announcing Fluss 0.6
authors: [jark]
date: 2025-03-10
-tags: [releases]
+tags: [announcement]
+description: "Fluss 0.6 introduces column compression, merge engines, and prefix lookups, alongside improvements to stability and lakehouse integration."
+image: ./../assets/0.6/banner-1200x510.webp
---
The Fluss community is pleased to announce the official release of **Fluss 0.6.0**. This version has undergone over
diff --git a/blog/releases/0.7.md b/blog/releases/0.7.md
index fd652c7..ae79974 100644
--- a/blog/releases/0.7.md
+++ b/blog/releases/0.7.md
@@ -2,7 +2,9 @@
title: Announcing Fluss 0.7
authors: [jark]
date: 2025-06-18
-tags: [releases]
+tags: [announcement]
+description: "Fluss 0.7 advances production readiness with stability improvements, a new tiering architecture, stronger security, and Java client support."
+image: ./../assets/0.7/banner-1200x510.webp
---

diff --git a/blog/releases/0.8.md b/blog/releases/0.8.md
index b24d626..3468ace 100644
--- a/blog/releases/0.8.md
+++ b/blog/releases/0.8.md
@@ -3,7 +3,9 @@ title: "Announcing Apache Fluss (Incubating) 0.8: Streaming Lakehouse for Data +
sidebar_label: "Announcing Apache Fluss 0.8"
authors: [giannis, jark]
date: 2025-11-09
-tags: [releases]
+tags: [announcement]
+description: "Fluss 0.8 expands the Streaming Lakehouse with Iceberg and Lance integration, Delta Joins, and improvements for production deployments."
+image: ./../assets/0.8/banner-1200x510.webp
---

diff --git a/blog/releases/0.9.md b/blog/releases/0.9.md
index 7345431..ae69201 100644
--- a/blog/releases/0.9.md
+++ b/blog/releases/0.9.md
@@ -3,7 +3,9 @@ title: "Apache Fluss (Incubating) 0.9 Release Announcement"
sidebar_label: "Announcing Apache Fluss 0.9"
authors: [giannis, jark]
date: 2026-03-02
-tags: [releases]
+tags: [announcement]
+description: "Fluss 0.9 brings richer data models, zero-copy schema evolution, storage-level processing, and stronger operational capabilities."
+image: ./../assets/0.9/banner-1200x510.webp
---

diff --git a/blog/releases/1.0.md b/blog/releases/1.0.md
index 9df122e..ee76009 100644
--- a/blog/releases/1.0.md
+++ b/blog/releases/1.0.md
@@ -3,7 +3,9 @@ title: "Announcing Apache Fluss 1.0: Real-Time Data Foundation for AI"
sidebar_label: "Announcing Apache Fluss 1.0"
authors: [keithlee, jark]
date: 2026-09-21
-tags: [releases]
+tags: [announcement]
+description: "Fluss 1.0 strengthens the real-time data foundation for AI with Fluss Gateway, native clients, and deeper streaming and lakehouse integration."
+image: ./../assets/1.0/banner-1200x510.webp
---
import ThemedImage from '@theme/ThemedImage';
diff --git a/blog/tags.yml b/blog/tags.yml
index 5e44131..add3c17 100644
--- a/blog/tags.yml
+++ b/blog/tags.yml
@@ -16,25 +16,19 @@
# limitations under the License.
################################################################################
-releases:
- label: 'releases'
- permalink: '/releases'
- description: 'Content related release announcement.'
-streaming-lakehouse:
- label: 'Streaming Lakehouse'
-apache-iceberg:
- label: 'Apache Iceberg'
-real-time-analytics:
- label: 'Real-time Analytics'
-apache-fluss:
- label: 'Apache Fluss'
-fluss-rust:
- label: 'Fluss Rust'
-fluss-rs:
- label: 'fluss-rs'
-pyfluss:
- label: 'PyFluss'
-fluss-cpp:
- label: 'Fluss C++'
-arrow:
- label: 'Arrow'
\ No newline at end of file
+announcement:
+ label: 'Announcement'
+ permalink: '/announcement'
+ description: 'Releases, project milestones, and official announcements.'
+case-study:
+ label: 'Case Study'
+ permalink: '/case-study'
+ description: 'Enterprise case studies and production practices.'
+engineering:
+ label: 'Engineering'
+ permalink: '/engineering'
+ description: 'Architecture, system internals, and technical deep dives.'
+guides:
+ label: 'Guides'
+ permalink: '/guides'
+ description: 'Getting started, how-to guides, application patterns, and best practices.'