diff --git a/README.md b/README.md
index d58231a..05155ee 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,7 @@ tabi has a perfect score on Google's Lighthouse audit:
- [X] [Set any language as default](https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site). Set your base site to Chinese, Spanish, French, Hindi… or any [other supported language](/i18n). The theme's interface will be translated accordingly.
- [X] [Integration with remote repositories](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#git-repository-integration) on GitHub, GitLab, Gitea & Codeberg for commit history and showing the site source.
+- [X] [Series support](https://welpo.github.io/tabi/blog/series/) for creating sequential content like tutorials, courses, and multi-part stories.
- [X] Dark and light themes. Defaults to the OS setting, with a switcher in the navigation bar.
- [X] Thorough documentation. See [Mastering tabi Settings: A Comprehensive Guide](https://welpo.github.io/tabi/blog/mastering-tabi-settings/).
- [X] Perfect Lighthouse score (Performance, Accessibility, Best Practices and SEO).
diff --git a/config.toml b/config.toml
index b39f191..de4bf80 100644
--- a/config.toml
+++ b/config.toml
@@ -157,6 +157,16 @@ show_date = true
# "both" - Show both the original date and the last updated date.
post_listing_date = "date"
+# Show "Jump to posts" link next to series' title.
+# By default, the link appears automatically when a series description exceeds 2000 characters.
+# Can be set at page or section levels, following the hierarchy: page > section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
+# show_jump_to_posts = true
+
+# Determines if indexes should be increasing (false) or decreasing (true) in series' posts list.
+# It has only effect if the section uses indexes metadata (which is only the case for series as of now).
+# Can be set at section levels, following the hierarchy: section > config. See: https://welpo.github.io/tabi/blog/mastering-tabi-settings/#settings-hierarchy
+post_listing_index_reversed = false # Defaults to false.
+
# DEPRECATED!
# Use Zola's built-in `bottom_footnotes = true` in the [markdown] section instead. (Available since v0.19.0)
# Adds backlinks to footnotes (loads ~500 bytes of JavaScripts).
diff --git a/content/blog/mastering-tabi-settings/img/jump_to_series_posts_dark.webp b/content/blog/mastering-tabi-settings/img/jump_to_series_posts_dark.webp
new file mode 100644
index 0000000..4790470
Binary files /dev/null and b/content/blog/mastering-tabi-settings/img/jump_to_series_posts_dark.webp differ
diff --git a/content/blog/mastering-tabi-settings/img/jump_to_series_posts_light.webp b/content/blog/mastering-tabi-settings/img/jump_to_series_posts_light.webp
new file mode 100644
index 0000000..4fee0d6
Binary files /dev/null and b/content/blog/mastering-tabi-settings/img/jump_to_series_posts_light.webp differ
diff --git a/content/blog/mastering-tabi-settings/index.ca.md b/content/blog/mastering-tabi-settings/index.ca.md
index 8963629..45eee50 100644
--- a/content/blog/mastering-tabi-settings/index.ca.md
+++ b/content/blog/mastering-tabi-settings/index.ca.md
@@ -267,6 +267,34 @@ Si configures `tag_sorting = "frequency"`, s'ordenaran segons el nombre de publi
---
+### Sèries
+
+Per a una explicació detallada, consulta la [documentació de sèries](@/blog/series/index.ca.md).
+
+#### Enllaç per saltar a les publicacions
+
+| Pàgina | Secció | `config.toml` | Segueix la jerarquia | Requereix JavaScript |
+|:------:|:-------:|:-------------:|:------------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+Per defecte, apareix automàticament un enllaç "Salta a les publicacions" al costat del títol de la sèrie quan una sèrie té un contingut de més de 2000 caràcters:
+
+{{ dual_theme_image(light_src="blog/series/img/jump_to_series_posts_light.webp", dark_src="blog/series/img/jump_to_series_posts_dark.webp" alt="enllaç per saltar a les publicacions de la sèrie", full_width=true) }}
+
+Estableix `show_jump_to_posts = true` per forçar l'activació de la funció i `show_jump_to_posts = false` per desactivar-la.
+
+#### Indexació de pàgines de sèries
+
+| Pàgina | Secció | `config.toml` | Segueix la jerarquia | Requereix JavaScript |
+|:------:|:-------:|:-------------:|:------------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+Per defecte, les pàgines de sèries s'indexen (usant una indexació basada en 1) segons el `sort_by` de la secció de sèries.
+
+Estableix `post_listing_index_reversed = true` per invertir aquest índex.
+
+---
+
## Integració amb repositoris Git
| Pàgina | Secció | `config.toml` | Segueix la jerarquia | Requereix JavaScript |
diff --git a/content/blog/mastering-tabi-settings/index.es.md b/content/blog/mastering-tabi-settings/index.es.md
index 5bf1e6b..bb7a610 100644
--- a/content/blog/mastering-tabi-settings/index.es.md
+++ b/content/blog/mastering-tabi-settings/index.es.md
@@ -267,6 +267,34 @@ Si configuras `tag_sorting = "frequency"`, se ordenarán según el número de pu
---
+### Series
+
+Para una explicación detallada, consulta la [documentación de series](@/blog/series/index.es.md).
+
+#### Enlace para saltar a las publicaciones
+
+| Página | Sección | `config.toml` | Sigue jerarquía | Requiere JavaScript |
+|:------:|:-------:|:-------------:|:------------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+Por defecto, aparece automáticamente un enlace "Saltar a publicaciones" junto al título de la serie cuando una serie tiene un contenido de más de 2000 caracteres:
+
+{{ dual_theme_image(light_src="blog/series/img/jump_to_series_posts_light.webp", dark_src="blog/series/img/jump_to_series_posts_dark.webp" alt="enlace para saltar a las publicaciones de la serie", full_width=true) }}
+
+Establece `show_jump_to_posts = true` para forzar la activación de la función y `show_jump_to_posts = false` para desactivarla.
+
+#### Indexación de páginas de series
+
+| Página | Sección | `config.toml` | Sigue la jerarquía | Requiere JavaScript |
+|:------:|:-------:|:-------------:|:------------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+Por defecto, las páginas de series se indexan (usando una indexación basada en 1) según el `sort_by` de la sección de series.
+
+Establece `post_listing_index_reversed = true` para invertir el índice.
+
+---
+
## Integración con repositorios Git
| Página | Sección | `config.toml` | Sigue la jerarquía | Requiere JavaScript |
diff --git a/content/blog/mastering-tabi-settings/index.md b/content/blog/mastering-tabi-settings/index.md
index ee880bc..341a3bc 100644
--- a/content/blog/mastering-tabi-settings/index.md
+++ b/content/blog/mastering-tabi-settings/index.md
@@ -272,6 +272,34 @@ Setting `tag_sorting = "frequency"` will sort them by number-of-posts (descendin
---
+### Series
+
+For a detailed explanation of the series feature, see the [series documentation](@/blog/series/index.md).
+
+#### Jump to posts link
+
+| Page | Section | `config.toml` | Follows Hierarchy | Requires JavaScript |
+|:----:|:-------:|:-------------:|:-----------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+By default, a "Jump to posts" link automatically appears next to the series title when a series has a content over 2000 characters:
+
+{{ dual_theme_image(light_src="blog/series/img/jump_to_series_posts_light.webp", dark_src="blog/series/img/jump_to_series_posts_dark.webp" alt="jump to series posts link", full_width=true) }}
+
+Set `show_jump_to_posts = true` to force the feature on and `show_jump_to_posts = false` to force it off.
+
+#### Series pages indexation
+
+| Page | Section | `config.toml` | Follows Hierarchy | Requires JavaScript |
+|:----:|:-------:|:-------------:|:-----------------:|:-------------------:|
+| ❌ | ✅ | ✅ | ✅ | ❌ |
+
+By default, series page are indexed (using a 1-based indexing) as per the series section `sort_by`.
+
+Set `post_listing_index_reversed = true` to reverse this index.
+
+---
+
## Git Repository Integration
| Page | Section | `config.toml` | Follows Hierarchy | Requires JavaScript |
diff --git a/content/blog/series/img/jump_to_series_posts_dark.webp b/content/blog/series/img/jump_to_series_posts_dark.webp
new file mode 100644
index 0000000..d88a292
Binary files /dev/null and b/content/blog/series/img/jump_to_series_posts_dark.webp differ
diff --git a/content/blog/series/img/jump_to_series_posts_light.webp b/content/blog/series/img/jump_to_series_posts_light.webp
new file mode 100644
index 0000000..22f5e78
Binary files /dev/null and b/content/blog/series/img/jump_to_series_posts_light.webp differ
diff --git a/content/blog/series/img/series_dark.webp b/content/blog/series/img/series_dark.webp
new file mode 100644
index 0000000..89223d0
Binary files /dev/null and b/content/blog/series/img/series_dark.webp differ
diff --git a/content/blog/series/img/series_light.webp b/content/blog/series/img/series_light.webp
new file mode 100644
index 0000000..780e2f2
Binary files /dev/null and b/content/blog/series/img/series_light.webp differ
diff --git a/content/blog/series/img/series_reversed_dark.webp b/content/blog/series/img/series_reversed_dark.webp
new file mode 100644
index 0000000..112a853
Binary files /dev/null and b/content/blog/series/img/series_reversed_dark.webp differ
diff --git a/content/blog/series/img/series_reversed_light.webp b/content/blog/series/img/series_reversed_light.webp
new file mode 100644
index 0000000..2a1dd0e
Binary files /dev/null and b/content/blog/series/img/series_reversed_light.webp differ
diff --git a/content/blog/series/index.ca.md b/content/blog/series/index.ca.md
new file mode 100644
index 0000000..e56375f
--- /dev/null
+++ b/content/blog/series/index.ca.md
@@ -0,0 +1,424 @@
++++
+title = "Guia completa sobre sèries"
+date = 2024-11-08
+description = "Aprèn a organitzar les teves publicacions en sèries seqüencials, perfectes per a tutorials, cursos i històries de diverses parts."
+
+[taxonomies]
+tags = ["funcionalitat", "tutorial", "preguntes freqüents", "sèries"]
+
+[extra]
+quick_navigation_buttons = true
+toc = true
+mermaid = true
+social_media_card = "social_cards/ca_blog_series.jpg"
++++
+
+Una sèrie organitza publicacions relacionades en ordre seqüencial, similar als capítols d'un llibre. A diferència de les etiquetes, que simplement agrupen contingut relacionat, les sèries suggereixen un ordre específic de lectura de principi a fi.
+
+Les publicacions dins d'una sèrie no necessiten publicar-se de forma consecutiva; la funció de sèries reuneix publicacions temàticament vinculades en una seqüència coherent.
+
+El següent diagrama il·lustra com les publicacions de la sèrie (3, 5 i 8) existeixen dins del flux principal del blog mentre mantenen la seva pròpia seqüència ordenada dins de Sèrie 1.
+
+{% mermaid(full_width=true) %}
+flowchart
+ subgraph main[BLOG]
+ P1[Post 1]
+ P2[P2]
+ P3[P3]
+ P4[P4]
+ P5[P5]
+ P6[P6]
+ P7[P7]
+ P8[P8]
+ P9[P9]
+ end
+ subgraph series1[SÈRIE 1]
+ PS1["Post Sèrie 1 (=P3)"]
+ PS2["Post Sèrie 2 (=P5)"]
+ PS3["Post Sèrie 3 (=P8)"]
+ end
+ P3 o-.-o PS1
+ P5 o-.-o PS2
+ P8 o-.-o PS3
+{% end %}
+
+## Inici ràpid
+
+1. Crea un directori per a la teva sèrie
+2. Crea `_index.md` al directori de la sèrie
+3. Configura el front matter de `_index.md`:
+
+ {{ add_src_to_code_block(src="series/_index.md") }}
+
+ ```toml
+ title = "Aprenent Rust"
+ template = "series.html"
+ sort_by = "slug"
+ transparent = true
+
+ [extra]
+ series = true
+ ```
+
+4. Crea els teus articles de la sèrie en aquest directori
+
+Vols saber-ne més? Continua llegint!
+
+## Com funcionen les sèries?
+
+Una sèrie és simplement una secció que tabi gestiona de manera especial. Per a més detalls sobre seccions, consulta la [documentació de Zola](https://www.getzola.org/documentation/content/section/).
+
+Prenent l'exemple del diagrama anterior, l'estructura de directoris seria així:
+
+```txt
+content/
+ _index.md
+ blog/
+ _index.md
+ post1/
+ index.md
+ post2/
+ index.md
+ post4/
+ index.md
+ post6/
+ index.md
+ post7/
+ index.md
+ post9/
+ index.md
+ serie1/
+ _index.md
+ post3/
+ index.md
+ post5/
+ index.md
+ post8/
+ index.md
+```
+
+Per crear una sèrie, necessites:
+
+1. Utilitzar la plantilla `series.html`
+2. Establir `series = true` a la configuració `[extra]` de la secció
+3. Activar `transparent = true` per integrar les publicacions de la sèrie amb la secció del blog principal
+
+La pàgina principal de la sèrie mostra un resum seguit d'una llista de totes les publicacions a la sèrie:
+
+{{ dual_theme_image(light_src="blog/series/img/series_light.webp", dark_src="blog/series/img/series_dark.webp" alt="una sèrie", full_width=true) }}
+
+## Saltar a les publicacions
+
+Si el contingut d'una sèrie (el Markdown després del frontmatter a `_index.md`) supera els 2000 caràcters, apareix un enllaç "Salta a les publicacions" al costat del títol de la sèrie.
+
+{{ dual_theme_image(light_src="blog/series/img/jump_to_series_posts_light.webp", dark_src="blog/series/img/jump_to_series_posts_dark.webp" alt="enllaç per saltar a les publicacions de la sèrie", full_width=true) }}
+
+Per forçar l'activació o desactivació d'aquesta funció, configura `show_jump_to_posts` a la secció `[extra]` de la teva secció de sèries o a `config.toml`. Aquesta configuració segueix [la jerarquia](@/blog/mastering-tabi-settings/index.ca.md#jerarquia-de-configuracio).
+
+## Pàgines de sèries i ordre
+
+Totes les pàgines a la secció de sèries seran pàgines de sèrie. Les pàgines s'ordenaran segons el `sort_by` de la secció.
+
+Tot i que les sèries mantenen el seu propi ordre intern, romanen independents del flux cronològic de la secció principal (per exemple, `blog/`) gràcies a la configuració `transparent`.
+
+### Opcions d'ordre
+
+Tria entre aquests mètodes d'ordre, cadascun amb els seus avantatges:
+
+{% wide_container() %}
+
+`sort_by` | avantatges | desavantatges
+---------|------------|---------------
+`slug` | L'ordre de les pàgines és explícit a la ruta (per exemple, `example.com/blog/series1/01-series-post-un`). | Cada pàgina de la sèrie ha de tenir el prefix corresponent.
+`weight` | L'ordre de les pàgines és fàcil de configurar de forma transparent.
La primera publicació té pes `1`, la segona pes `2` i així successivament. | Cada pàgina de la sèrie ha de tenir el seu pes configurat.
+`date` | L'ordre de les pàgines es pot configurar una sola vegada a la configuració de la secció. No cal fer res a cada pàgina. | L'ordre de les pàgines s'ha d'invertir perquè la primera pàgina sol ser la més antiga. Això només es pot aconseguir paginant la secció (`paginate_by = 9999`) i invertint el seu ordre (`paginate_reversed = true`).
+
+{% end %}
+
+{{ admonition(type="danger", title="Versió de Zola per ordenar per data", text="Per invertir correctament les dates, es requereix Zola v0.19.3+ (no publicada) perquè la informació de paginació estigui disponible a través de la funció `get_section`. En cas contrari, qualsevol cosa que depengui de l'ordre de les pàgines de la sèrie no serà correcta (per exemple, pàgina anterior/següent, llistes ordenades i no ordenades...) Vegeu [Zola PR #2653](https://github.com/getzola/zola/pull/2653).") }}
+
+### Indexació de pàgines
+
+Les pàgines en una sèrie s'indexen començant des d'1, seguint el seu ordre `sort_by`. Per invertir la indexació (fent que la primera pàgina tingui l'índex més alt), afegeix aquesta configuració a `_index.md` o `config.toml`:
+
+```toml
+[extra]
+post_listing_index_reversed = true # Per defecte és false si no es configura
+```
+
+{{ dual_theme_image(light_src="blog/series/img/series_reversed_light.webp", dark_src="blog/series/img/series_reversed_dark.webp" alt="una sèrie amb índexs invertits", full_width=true) }}
+
+Aquesta configuració segueix [la jerarquia](@/blog/mastering-tabi-settings/index.ca.md#jerarquia-de-configuracio).
+
+## Plantilles d'introducció i conclusió
+
+Els articles d'una sèrie poden tenir seccions automàtiques d'introducció i conclusió. Aquestes es configuren al `_index.md` de la teva sèrie. Un exemple bàsic:
+
+{{ add_src_to_code_block(src="series/_index.md") }}
+
+```toml
+[extra.series_intro_templates]
+default = "Aquest article és part de la sèrie $SERIES_HTML_LINK."
+
+[extra.series_outro_templates]
+default = "Gràcies per llegir la part $SERIES_PAGE_INDEX de $SERIES_HTML_LINK!"
+```
+
+Les seccions d'introducció i conclusió tenen les seves pròpies classes CSS (`series-page-intro` i `series-page-outro`), que et permeten personalitzar la seva aparença mitjançant [CSS personalitzat](@/blog/mastering-tabi-settings/index.ca.md#estils-css-personalitzats).
+
+### Tipus de plantilles
+
+El sistema de sèries utilitza diferents plantilles segons la posició de l'article a la sèrie:
+
+- `next_only` - Utilitzat per al primer article (té article següent però no anterior)
+- `middle` - Utilitzat per a articles amb articles anterior i següent
+- `prev_only` - Utilitzat per a l'últim article (té article anterior però no següent)
+- `default` - Plantilla per defecte utilitzada quan no existeix una plantilla específica per a la posició
+
+El sistema determina automàticament quina plantilla utilitzar segons la posició de l'article. Les plantilles es defineixen a la configuració de la sèrie (`_index.md`), com `extra.series_intro_templates` i `extra.series_outro_templates`:
+
+{{ add_src_to_code_block(src="series/_index.md") }}
+
+```toml
+[extra.series_intro_templates]
+next_only = "Benvingut a la part 1! Següent: $NEXT_HTML_LINK"
+middle = "Anterior: $PREV_HTML_LINK | Següent: $NEXT_HTML_LINK"
+prev_only = "El capítol final! Anteriorment: $PREV_HTML_LINK"
+default = "Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER"
+```
+
+Totes les plantilles són opcionals. La selecció de plantilles segueix un sistema de prioritat:
+
+1. Si existeix una plantilla específica per a la posició (`next_only`, `middle`, o `prev_only`), s'utilitzarà aquesta
+2. Si no, s'utilitza la plantilla `default`
+3. Si no es defineix cap plantilla, no es mostrarà informació de la sèrie
+
+Mira l'[exemple de plantilla](#exemple-de-plantilla) per veure un exemple més elaborat.
+
+### Ubicació al contingut
+
+Per defecte:
+
+- Les introduccions de sèrie apareixen a l'inici del teu article
+- La conclusió apareix al final (abans de les notes al peu, si n'hi ha)
+
+Pots controlar exactament on apareixen utilitzant `` i `` al teu Markdown:
+
+```markdown
+Aquest paràgraf apareix abans de la introducció de la sèrie.
+
+
+
+Contingut principal de l'article.
+
+
+
+## Recursos d'aprenentatge
+
+Contingut addicional...
+
+[^1]: Les notes al peu sempre apareixeran al final.
+```
+
+## Variables
+
+Les plantilles de sèries utilitzen un sistema flexible de variables que et permet:
+
+1. Fer referència a informació de la sèrie (títol, enllaços)
+2. Afegir navegació entre articles
+3. Mostrar indicadors de progrés
+4. Incloure informació personalitzada utilitzant les teves pròpies variables
+
+Les variables són marcadors que comencen amb `$` i es reemplacen amb contingut real quan es construeix el teu lloc. Per exemple, `$SERIES_HTML_LINK` es converteix en un enllaç clicable a la pàgina índex de la teva sèrie.
+
+Hi ha tres tipus de variables:
+
+- [Variables bàsiques de sèrie](#variables-basiques-de-serie): Informació general sobre la sèrie
+- [Variables de navegació](#variables-de-navegacio): Enllaços a articles anterior/següent
+- [Variables personalitzades](#variables-personalitzades): Els teus propis marcadors per a informació addicional
+
+### Variables bàsiques de sèrie
+
+{% wide_container() %}
+
+| Variable | Disponibilitat | Retorna | Descripció | Exemple d'ús | Exemple de sortida |
+|----------|---------------|----------|------------|--------------|-------------------|
+| `$SERIES_TITLE` | Sempre | Text | Títol de la sèrie en text pla | `Part de $SERIES_TITLE` | Part d'Aprenent Rust |
+| `$SERIES_PERMALINK` | Sempre | Text | URL a l'índex de la sèrie | `[Veure totes les publicacions]($SERIES_PERMALINK)` | [Veure totes les publicacions](/series/learn-rust) |
+| `$SERIES_HTML_LINK` | Sempre | HTML | Enllaç llest per usar a la sèrie | `Benvingut a $SERIES_HTML_LINK!` | Benvingut a Aprenent Rust! |
+| `$SERIES_PAGES_NUMBER` | Sempre | Nombre | Total d'articles a la sèrie | `Una sèrie de $SERIES_PAGES_NUMBER parts` | Una sèrie de 5 parts |
+| `$SERIES_PAGE_INDEX` | Sempre | Nombre | Posició de l'article actual | `Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER` | Part 3 de 5 |
+| `$SERIES_PAGES_OLIST` | Sempre | HTML | Llista ordenada de tots els articles | `Articles a la sèrie: $SERIES_PAGES_OLIST` | Articles a la sèrie: