feat: allow internal project links (#157)

main
Óscar 1 year ago committed by GitHub
parent a37756c6fa
commit 5a2161f529
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,7 +2,10 @@
title = "Projectes"
sort_by = "weight"
template = "cards.html"
insert_anchor_links = "left"
[extra]
social_media_card = "img/social_cards/ca_projects.jpg"
social_media_card = "img/ca_projects.jpg"
show_reading_time = false
quick_navigation_buttons = true
+++

@ -2,7 +2,10 @@
title = "Proyectos"
sort_by = "weight"
template = "cards.html"
insert_anchor_links = "left"
[extra]
social_media_card = "img/social_cards/es_projects.jpg"
show_reading_time = false
quick_navigation_buttons = true
+++

@ -2,7 +2,10 @@
title = "Projects"
sort_by = "weight"
template = "cards.html"
insert_anchor_links = "left"
[extra]
social_media_card = "img/social_cards/projects.jpg"
show_reading_time = false
quick_navigation_buttons = true
+++

@ -1,9 +1,29 @@
+++
title = "chu"
description = "Aplicació Flask per a càrregues de fitxers segures, amb eliminació de metadades, compressió, protecció amb contrasenya i més."
description = "Aplicació Flask per pujar arxius de manera segura, amb eliminació de metadades, compressió, protecció amb contrasenya i més."
weight = 2
[extra]
local_image = "img/chu.webp"
link_to = "https://github.com/welpo/chu"
social_media_card = "img/social_cards/ca_projects_chu.jpg"
+++
[**chu**](https://github.com/welpo/chu) és una aplicació per pujar arxius creada amb Python, Flask i uWSGI. Aquest projecte integra diverses tècniques d'optimització per fer que la pujada d'arxius sigui no només més senzilla, sinó també més intel·ligent.
#### [Veure a GitHub](https://github.com/welpo/chu) {.centered-text}
### Característiques tècniques
- **Eficiència a través de la compressió**: Utilitza [compressió Lepton JPEG](https://github.com/microsoft/lepton_jpeg_rust) i [optipng](http://optipng.sourceforge.net/) per assolir un estalvi d'espai d'fins al 22%.
- **Mesures de seguretat**: Implementa límits de grandària de pujada, controls d'extensió i autenticació amb contrasenya.
- **Facilitat d'ús**: Genera una URL per a cada arxiu pujat amb èxit, permetent noms d'arxiu aleatoris o definits per l'usuari.
- **Eliminació de metadades**: Elimina les metadades dels arxius per millorar la privacitat.
- **Grandària de pujada configurable**: Ofereix la possibilitat d'establir límits a la grandària dels arxius pujats.
- **Controls específics d'extensió**: Proporciona configuracions per restringir les pujades a extensions d'arxiu específiques.
- **Resposta d'URL directa**: Després de cada pujada exitosa, retorna una URL que apunta a l'arxiu.

@ -5,5 +5,25 @@ weight = 2
[extra]
local_image = "img/chu.webp"
link_to = "https://github.com/welpo/chu"
social_media_card = "img/es_projects_chu.jpg"
+++
[**chu**](https://github.com/welpo/chu) es un subidor de archivos creado con Python, Flask y uWSGI. Este proyecto integra diversas técnicas de optimización para hacer que la subida de archivos sea no solo más sencilla, sino también más inteligente.
#### [Ver en GitHub](https://github.com/welpo/chu) {.centered-text}
### Características técnicas
- **Eficiencia a través de la compresión**: Utiliza [compresión Lepton JPEG](https://github.com/microsoft/lepton_jpeg_rust) y [optipng](http://optipng.sourceforge.net/) para lograr un ahorro de espacio de hasta el 22%.
- **Medidas de seguridad**: Implementa límites de tamaño de subida, controles de extensión y autenticación con contraseña.
- **Facilidad de uso**: Genera una URL para cada archivo subido con éxito, permitiendo nombres de archivo aleatorios o definidos por el usuario.
- **Eliminación de metadatos**: Elimina los metadatos de los archivos por privacidad.
- **Tamaño de subida configurable**: Ofrece la posibilidad de establecer límites al tamaño de los archivos subidos.
- **Controles específicos de extensión**: Proporciona configuraciones para restringir las subidas a extensiones de archivo específicas.
- **Respuesta de URL directa**: Tras cada subida exitosa, devuelve una URL que apunta al archivo.

@ -1,10 +1,29 @@
+++
title = "chu"
description = "Flask app for secure file uploads, with metadata removal, compression, password protection, and more."
description = "Python-based file uploader using Flask and uWSGI, focused on efficiency and security."
weight = 2
[extra]
local_image = "img/chu.webp"
link_to = "https://github.com/welpo/chu"
social_media_card = "img/projects_chu.jpg"
+++
[**chu**](https://github.com/welpo/chu) is a Python-based file uploader built using Python, Flask, and uWSGI. It integrates multiple optimization techniques to make file uploads not just simpler, but smarter.
#### [View on GitHub](https://github.com/welpo/chu) {.centered-text}
### Technical Features
- **Efficiency Through Compression**: Uses [Lepton JPEG Compression](https://github.com/microsoft/lepton_jpeg_rust) and [optipng](http://optipng.sourceforge.net/) to achieve up to 22% space savings.
- **Security Measures**: Implements upload size limits, extension controls, and password-based authentication.
- **Ease of Use**: Generates a URL for each successfully uploaded file, accommodates either random or user-defined filenames.
- **Metadata Purging**: Removes metadata from files for enhanced privacy.
- **Configurable Upload Size**: Allows users to set limits on the size of uploaded files.
- **Extension-Specific Controls**: Provides settings to restrict uploads to specific file extensions.
- **Direct URL Response**: After each successful upload, returns a URL pointing to the file.

@ -1,9 +1,81 @@
+++
title = "nani"
description = "Script Bash per crear URL públiques a partir de fitxers o text en servidors remots."
description = "Script Bash per crear URLs públiques a partir d'arxius o text en servidors remots."
weight = 3
[extra]
local_image = "img/nani.webp"
link_to = "https://github.com/welpo/nani"
social_media_card = "img/ca_projects_nani.jpg"
+++
Si treballes en un servidor remot, saps que compartir arxius amb altres persones pot ser un procés feixuc. `nani` és un script en Bash dissenyat per simplificar aquesta tasca. Amb una sola comanda, pots convertir arxius locals o URLs en enllaços accessibles, facilitant el procés de compartir directament des del teu servidor.
#### [Veure a GitHub](https://github.com/welpo/nani) {.centered-text}
## Característiques clau
- **Tot tipus d'arxius**: gestiona directoris, arxius FLAC, arxius de text i fins i tot URLs a vídeos.
- **Personalitzable**: adapta els ajustos editant l'script o un arxiu de configuració.
- **Notificacions**: notificacions a l'escriptori i integració amb el portaretrats per a una millor experiència.
## Inici ràpid
1. Col·loca `nani` en un directori dins del teu PATH.
2. Fes que l'script sigui executable.
Per a passos d'instal·lació més detallats, [consulta la documentació completa](https://github.com/welpo/nani#install).
## Ús
```bash
nani Ruta/A/foto.png
https://example.com/nani/hjRGLZB.png
```
Compartir un directori mantenint el seu nom original:
```bash
nani -o Ruta/A/Directori
https://example.com/nani/Directori.zip
```
Pots configurar diverses opcions a través dels paràmetres. Aquí tens la sortida de `nani --help`:
{% wide_container() %}
```
Usage: nani [options] <infile>
Provides public URL from input.
Input handling:
Directory Will be stored using zip (or symbolic link)
FLAC Can be transcoded to MP3
Text (html, php...) Extension can be set to .txt
Other files New copy/hard link/symbolic link at output directory
URL to video (e.g: youtube) Downloaded using yt-dlp
Other URLs Downloaded using wget
Modify the first lines of the script to change how nani behaves: quiet mode,
enabling/disabling transcoding, length of the string, extension truncation...
Settings and options:
-a, --alias Revert the hard link setting
-c, --cleanup Remove all files on /nani/ except index.html
-h, --help Display this help and exit
-i, --insert Open nano to enter text. Saved in output directory as .txt
-k, --keep Output dir becomes /nani/k/, to set different cleanup rules
-l, --list List files in output directory /nani/
-n, --name Use custom name (e.g. nani -n DesiredName <file>)
-N, --notify Revert the notify option
-o, --original Preserve original file name
-p, --push Send push notification
-q, --quiet Revert the quiet setting
-s, --string Force a certain string length (e.g. nani -s 32 <file>)
-t, --transcode Revert the transcode setting
-x, --xclip Revert the xclip setting
-y, --symbolic Create a symbolic link for files and directories
```
{% end %}

@ -1,9 +1,80 @@
+++
title = "nani"
description = "Script Bash para crear URL públicas desde archivos o texto en servidores remotos."
description = "Script Bash para crear URLs públicas a partir de archivos o texto en servidores remotos."
weight = 3
[extra]
local_image = "img/nani.webp"
link_to = "https://github.com/welpo/nani"
social_media_card = "img/es_projects_nani.jpg"
+++
Si trabajas en un servidor remoto, sabrás que compartir archivos con otras personas puede ser un proceso tedioso. `nani` es un script en Bash diseñado para simplificar esta tarea. Con un solo comando, puedes convertir archivos locales en enlaces públicos, facilitando el proceso de compartir directamente desde tu servidor.
#### [Ver en GitHub](https://github.com/welpo/nani) {.centered-text}
## Características clave
- **Todo tipo de archivos**: maneja directorios, archivos FLAC, archivos de texto e incluso URLs a vídeos.
- **Personalizable**: adapta los ajustes editando el script o un archivo de configuración.
- **Notificaciones**: notificaciones en el escritorio e integración con el portapapeles para una mejor experiencia.
## Inicio rápido
1. Coloca `nani` en un directorio dentro de tu PATH.
2. Haz el script ejecutable.
Para pasos de instalación más detallados, [consulta la documentación completa](https://github.com/welpo/nani#install).
## Uso
```bash
nani Ruta/A/foto.png
https://example.com/nani/hjRGLZB.png
```
Compartir un directorio manteniendo su nombre original:
```bash
nani -o Ruta/A/Directorio
https://example.com/nani/Directorio.zip
```
Puedes configurar varias opciones a través de los parámetros. Aquí tienes la salida de `nani` --help:
{% wide_container() %}
```
Usage: nani [options] <infile>
Provides public URL from input.
Input handling:
Directory Will be stored using zip (or symbolic link)
FLAC Can be transcoded to MP3
Text (html, php...) Extension can be set to .txt
Other files New copy/hard link/symbolic link at output directory
URL to video (e.g: youtube) Downloaded using yt-dlp
Other URLs Downloaded using wget
Modify the first lines of the script to change how nani behaves: quiet mode,
enabling/disabling transcoding, length of the string, extension truncation...
Settings and options:
-a, --alias Revert the hard link setting
-c, --cleanup Remove all files on /nani/ except index.html
-h, --help Display this help and exit
-i, --insert Open nano to enter text. Saved in output directory as .txt
-k, --keep Output dir becomes /nani/k/, to set different cleanup rules
-l, --list List files in output directory /nani/
-n, --name Use custom name (e.g. nani -n DesiredName <file>)
-N, --notify Revert the notify option
-o, --original Preserve original file name
-p, --push Send push notification
-q, --quiet Revert the quiet setting
-s, --string Force a certain string length (e.g. nani -s 32 <file>)
-t, --transcode Revert the transcode setting
-x, --xclip Revert the xclip setting
-y, --symbolic Create a symbolic link for files and directories
```
{% end %}

@ -5,5 +5,75 @@ weight = 3
[extra]
local_image = "img/nani.webp"
link_to = "https://github.com/welpo/nani"
social_media_card = "img/projects_nani.jpg"
+++
If you're working on a remote server, you know that sharing files with others can often involve multiple steps. `nani` is a Bash script designed to streamline this process. By executing a single command, you can convert local files or URLs into accessible links, allowing for easier sharing right from your server.
#### [View on GitHub](https://github.com/welpo/nani) {.centered-text}
## Key Features
- **Multiple File Types**: Handles directories, FLAC files, text files, and even URLs to videos.
- **Customisable**: Tailor settings via a config file or runtime flags.
- **Notifications**: Desktop notifications and clipboard integration for a better experience.
## Quick Start
1. Place `nani` in a directory within your PATH.
2. Make the script executable.
For detailed installation steps, [read the full documentation](https://github.com/welpo/nani#install).
## Usage
```bash
nani Path/To/picture.png
https://example.com/nani/hjRGLZB.png
```
**Share a directory keeping its original name**:
```bash
nani -o Path/To/Directory
https://example.com/nani/Directory.zip
```
Additional control is available through flags. Here's the output of `nani --help`:
{% wide_container() %}
```
Usage: nani [options] <infile>
Provides public URL from input.
Input handling:
Directory Will be stored using zip (or symbolic link)
FLAC Can be transcoded to MP3
Text (html, php...) Extension can be set to .txt
Other files New copy/hard link/symbolic link at output directory
URL to video (e.g: youtube) Downloaded using yt-dlp
Other URLs Downloaded using wget
Modify the first lines of the script to change how nani behaves: quiet mode,
enabling/disabling transcoding, length of the string, extension truncation...
Settings and options:
-a, --alias Revert the hard link setting
-c, --cleanup Remove all files on /nani/ except index.html
-h, --help Display this help and exit
-i, --insert Open nano to enter text. Saved in output directory as .txt
-k, --keep Output dir becomes /nani/k/, to set different cleanup rules
-l, --list List files in output directory /nani/
-n, --name Use custom name (e.g. nani -n DesiredName <file>)
-N, --notify Revert the notify option
-o, --original Preserve original file name
-p, --push Send push notification
-q, --quiet Revert the quiet setting
-s, --string Force a certain string length (e.g. nani -s 32 <file>)
-t, --transcode Revert the transcode setting
-x, --xclip Revert the xclip setting
-y, --symbolic Create a symbolic link for files and directories
```
{% end %}

@ -1,9 +1,76 @@
+++
title = "spectro"
description = "Script de Bash per generar espectrogrames, comparar-los, carregar-los a Imgur i proporcionar els corresponents URLs per compartir-los."
description = "Script en Bash per generar espectrogrames, comparar-los, pujar-los a Imgur i proporcionar les URL corresponents per compartir."
weight = 4
[extra]
local_image = "img/spectro.webp"
link_to = "https://github.com/welpo/spectro"
social_media_card = "img/ca_projects_spectro.jpg"
+++
Transforma fitxers d'àudio en espectrogrames amb format BBCode de manera senzilla amb `spectro`. Aquest script en Bash suporta una àmplia varietat de formats d'àudio com Ogg, MP3, FLAC, AAC i més.
{{ full_width_image(src="img/spectrogram.webp", alt="Espectrograma de Jardin du Sommeil Chant d'Amour Sur La Nuit Grandissante, de Tourette") }}
#### [Veure a GitHub](https://github.com/welpo/spectro) {.centered-text}
## Característiques
- **Suport de múltiples formats**: Ogg, MP3, FLAC, AAC, ape, WMA, MP4 i WAV.
- **Sortida en BBCode**: Genera automàticament BBCode per a fòrums o llocs web.
- **Processament per lots**: Pot gestionar directoris sencers o fitxers específics.
- **Extensible**: Opcions per a personalització, incloent l'emmagatzemament local i la pujada a Imgur.
## Inici ràpid
1. Descarrega `spectro` en un directori dins del teu PATH, per exemple, `~/bin`.
2. Atorga permisos d'execució: `chmod +x spectro`.
## Ús
**Generar BBCode per a un directori complet:**
```bash
spectro Path/To/Directory/
```
Sortida:
```
[hide=Spectrograms][size=3]
[url=https://i.imgur.com/ClzzbP8.png]01. Jardin Du Sommeil.flac[/url]
[/size][/hide]
```
**Generar BBCode per a fitxers específics:**
```bash
spectro arxiu1.flac arxiu2.mp3
```
Opcions addicionals i configuracions estan disponibles. Consulta `spectro --help`:
{% wide_container() %}
```
Usage: spectro [options] <audio_files>
Generate BBCode-formatted spectrograms from audio files.
Options:
-c, --compare Create a .gif comparison of spectrograms (requires ImageMagick)
-d, --double Create both zoomed and full spectrograms
-h, --help Display this help and exit
-l, --local Save spectrograms locally
-o, --optipng Reverse optipng setting
-p, --parallel Compatible with 'parallel'
-q, --quiet Suppress 'Uploading' text
-s, --sha Display SHA value
-t, --text Use [url] or [img] tags
-z, --zoom Create zoomed-in spectrogram
Examples:
spectro -ol DirectoryWithMusic/
printf "[hide=Spectrograms][size=3]" && ls | parallel -k spectro -p; printf "[/size][/hide]"
```
{% end %}

@ -1,9 +1,78 @@
+++
title = "spectro"
description = "Script de Bash para generar espectrogramas, compararlos, subirlos a Imgur y proporcionar las correspondientes URLs para compartir."
description = "Script en Bash para generar espectrogramas, compararlos, subirlos a Imgur y proporcionar las URL correspondientes para compartir."
weight = 4
[extra]
local_image = "img/spectro.webp"
link_to = "https://github.com/welpo/spectro"
social_media_card = "img/es_projects_spectro.jpg"
+++
Transforma archivos de audio en espectrogramas con formato BBCode de manera sencilla con `spectro`. Este script en Bash soporta una amplia variedad de formatos de audio como Ogg, MP3, FLAC, AAC y más.
{{ full_width_image(src="img/spectrogram.webp", alt="Espectrograma de Jardin du Sommeil Chant d'Amour Sur La Nuit Grandissante, de Tourette") }}
#### [Ver en GitHub](https://github.com/welpo/spectro) {.centered-text}
## Características
- **Soporte de múltiples formatos**: Ogg, MP3, FLAC, AAC, ape, WMA, MP4 y WAV.
- **Salida en BBCode**: Genera automáticamente BBCode para foros o sitios web.
- **Procesamiento por lotes**: Puede manejar directorios enteros o archivos específicos.
- **Extensible**: Opciones para personalización, incluido el almacenamiento local y la subida a Imgur.
## Inicio rápido
1. Descarga `spectro` en un directorio dentro de tu PATH, por ejemplo, `~/bin`.
2. Otorga permisos de ejecución: `chmod +x spectro`.
Para una guía completa de instalación, [lee la documentación completa](https://github.com/welpo/spectro#install).
## Uso
**Generar BBCode para un directorio completo:**
```bash
spectro Path/To/Directory/
```
Salida:
```
[hide=Spectrograms][size=3]
[url=https://i.imgur.com/ClzzbP8.png]01. Jardin Du Sommeil.flac[/url]
[/size][/hide]
```
**Generar BBCode para archivos específicos:**
```bash
spectro archivo1.flac archivo2.mp3
```
Opciones adicionales y configuraciones están disponibles. Consulta `spectro --help`:
{% wide_container() %}
```
Usage: spectro [options] <audio_files>
Generate BBCode-formatted spectrograms from audio files.
Options:
-c, --compare Create a .gif comparison of spectrograms (requires ImageMagick)
-d, --double Create both zoomed and full spectrograms
-h, --help Display this help and exit
-l, --local Save spectrograms locally
-o, --optipng Reverse optipng setting
-p, --parallel Compatible with 'parallel'
-q, --quiet Suppress 'Uploading' text
-s, --sha Display SHA value
-t, --text Use [url] or [img] tags
-z, --zoom Create zoomed-in spectrogram
Examples:
spectro -ol DirectoryWithMusic/
printf "[hide=Spectrograms][size=3]" && ls | parallel -k spectro -p; printf "[/size][/hide]"
```
{% end %}

@ -5,5 +5,74 @@ weight = 4
[extra]
local_image = "img/spectro.webp"
link_to = "https://github.com/welpo/spectro"
social_media_card = "img/social_cards/projects_spectro.jpg"
+++
Transform audio files into BBCode-formatted spectrograms effortlessly with `spectro`. This Bash script supports a wide array of audio formats such as Ogg, MP3, FLAC, AAC, and more.
{{ full_width_image(src="img/spectrogram.webp", alt="Spectrogram of Jardin du Sommeil Chant d'Amour Sur La Nuit Grandissante, by Tourette") }}
#### [View on GitHub](https://github.com/welpo/spectro) {.centered-text}
## Features
- **Versatile Format Support**: Ogg, MP3, FLAC, AAC, ape, WMA, MP4, and WAV.
- **BBCode Output**: Automatically generates BBCode for forums or websites.
- **Batch Processing**: Can handle entire directories or specific files.
- **Extensible**: Options for customisation including local storage and imgur uploading.
## Quick Start
1. Download `spectro` to a directory within your PATH, for example, `~/bin`.
2. Grant execute permissions: `chmod +x spectro`.
For a complete installation guide, [read the full documentation](https://github.com/welpo/spectro#install).
## Usage
**Generate BBCode for an Entire Directory:**
```bash
spectro Path/To/Directory/
```
Output:
```
[hide=Spectrograms][size=3]
[url=https://i.imgur.com/ClzzbP8.png]01. Jardin Du Sommeil.flac[/url]
[/size][/hide]
```
**Generate BBCode for Specific Files:**
```bash
spectro file1.flac file2.mp3
```
Additional options and configurations are available. See `spectro --help`:
{% wide_container() %}
```
Usage: spectro [options] <audio_files>
Generate BBCode-formatted spectrograms from audio files.
Options:
-c, --compare Create a .gif comparison of spectrograms (requires ImageMagick)
-d, --double Create both zoomed and full spectrograms
-h, --help Display this help and exit
-l, --local Save spectrograms locally
-o, --optipng Reverse optipng setting
-p, --parallel Compatible with 'parallel'
-q, --quiet Suppress 'Uploading' text
-s, --sha Display SHA value
-t, --text Use [url] or [img] tags
-z, --zoom Create zoomed-in spectrogram
Examples:
spectro -ol DirectoryWithMusic/
printf "[hide=Spectrograms][size=3]" && ls | parallel -k spectro -p; printf "[/size][/hide]"
```
{% end %}

@ -1,9 +1,56 @@
+++
title = "tabi"
description = "Un tema de Zola ràpid, lleuger i modern amb JavaScript opcional."
description = "Un tema de Zola ràpid, lleuger i modern amb suport multilingüe."
weight = 1
[extra]
local_image = "img/tabi.webp"
link_to = "https://github.com/welpo/tabi"
social_media_card = "img/ca_projects_tabi.jpg"
+++
[**tabi**](https://github.com/welpo/tabi) és un tema modern i ric en característiques per a [Zola](https://www.getzola.org/), un generador de llocs web estàtics molt ràpid.
{{ full_width_image(src="img/light_dark_tabi.webp", alt="Modes clar i fosc de tabi") }}
#### [Veure a GitHub](https://github.com/welpo/tabi) {.centered-text}
## Característiques
- [Suport multilingüe complet](https://welpo.github.io/tabi/ca/blog/faq-languages/#how-does-tabi-handle-multilingual-support). Afegeix tants idiomes com vulguis.
- [Estableix qualsevol idioma com a predeterminat](https://welpo.github.io/tabi/ca/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site). Configura el teu lloc en xinès, espanyol, francès, hindi... o qualsevol [altre idioma compatible](https://github.com/welpo/tabi/tree/main/i18n). La interfície del tema es traduirà en conseqüència.
- Temes clars i foscos. S'adapta a la configuració del sistema operatiu, amb un interruptor a la barra de navegació.
- Suport per a [comentaris utilitzant giscus, utterances, Hyvor Talk o Isso](https://welpo.github.io/tabi/ca/blog/comments/).
- Puntuació perfecta a Lighthouse (Rendiment, Accessibilitat, Millors Pràctiques i SEO).
- Suport de [KaTeX](https://katex.org/).
- Tot el JavaScript es pot [deshabilitar completament](https://welpo.github.io/tabi/ca/blog/javascript/).
- [Aspectes personalitzables](https://welpo.github.io/tabi/ca/blog/customise-tabi/).
- [Feed estilitzat](https://welpo.github.io/tabi/ca/atom.xml).
- [Pàgina de projectes](https://welpo.github.io/tabi/ca/projects/).
- [Pàgina d'arxiu](https://welpo.github.io/tabi/ca/archive/).
- [Taula de continguts](https://welpo.github.io/tabi/ca/blog/toc/).
- Etiquetes.
- Enllaços socials.
- Disseny responsiu.
- Ressaltat sintàctic del codi.
- [Capçaleres de seguretat personalitzables](https://welpo.github.io/tabi/ca/blog/security/).
- [Shortcodes personalitzats](https://welpo.github.io/tabi/ca/blog/shortcodes/).
## Pràctiques de desenvolupament
- **[Conventional Commits](https://www.conventionalcommits.org) i [Gitmoji](https://gitmoji.dev/)**: els missatges de commit segueixen formats estandarditzats per facilitar la llegibilitat.
- **Seguiment d'incidències**: cada error o nova funcionalitat té el seu propi tiquet, que s'enllaça amb els commits de codi i PRs o problemes relacionats.
- **Comentaris detallats**: els tiquets es documenten amb imatges, vídeos i descripcions detallades per facilitar una comunicació i resolució de problemes efectives.
- **Referències creuades**: enllacem tots els tiquets amb els commits de codi, pull requests o problemes relacionats per a una traçabilitat completa.
## Evolució del projecte
**tabi** va néixer com a disseny per al meu lloc web personal, [osc.garden](https://osc.garden). Malgrat les seves arrels personals, des del principi es van implementar bones pràctiques per assegurar la qualitat i la mantenibilitat. Des d'aleshores, el tema ha aconseguit atraure una comunitat activa de col·laboradors a GitHub.
## Inicia el teu recorregut com a escriptor amb tabi
Tens alguna cosa a dir. Potser vols parlar sobre com els lingüistes encara no han acordat una [definició de "paraula"](https://ca.wikipedia.org/wiki/Mot), o sobre la teva experiència explorant els diferents [palos del flamenc](https://ca.wikipedia.org/wiki/Estils_flamencs), o de com vas aconseguir resoldre un error d'un projecte de codi obert popular.
**tabi** t'ofereix la base ideal per al teu espai d'escriptura, permetent-te centrar-te en les teves paraules mentre Zola i tabi s'encarreguen de l'aspecte tècnic. Submergeix-te en el món dels blogs amb un sistema que fa que cada publicació sigui un plaer escriure i llegir. La teva veu té valor; comparteix-la amb el món.

@ -1,9 +1,56 @@
+++
title = "tabi"
description = "Un tema de Zola rápido, ligero y moderno con JavaScript opcional."
description = "Un tema de Zola rápido, ligero y moderno con soporte multilingüe."
weight = 1
[extra]
local_image = "img/tabi.webp"
link_to = "https://github.com/welpo/tabi"
social_media_card = "img/es_projects_tabi.jpg"
+++
[**tabi**](https://github.com/welpo/tabi) es un tema moderno y rico en funcionalidad para [Zola](https://www.getzola.org/), un generador de sitios web estáticos muy rápido.
{{ full_width_image(src="img/light_dark_tabi.webp", alt="Modos claro y oscuro de tabi") }}
#### [Ver en GitHub](https://github.com/welpo/tabi) {.centered-text}
## Características
- [Soporte multilingüe completo](https://welpo.github.io/tabi/es/blog/faq-languages/#how-does-tabi-handle-multilingual-support). Añade tantos idiomas como desees.
- [Establece cualquier idioma como predeterminado](https://welpo.github.io/tabi/es/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site). Configura tu sitio en chino, español, francés, hindi… o cualquier [otro idioma compatible](https://github.com/welpo/tabi/tree/main/i18n). La interfaz del tema se traducirá en consecuencia.
- Temas claros y oscuros. Se adapta a la configuración del sistema operativo, con un interruptor en la barra de navegación.
- Soporte para [comentarios usando giscus, utterances, Hyvor Talk o Isso](https://welpo.github.io/tabi/es/blog/comments/).
- Puntuación perfecta en Lighthouse (Rendimiento, Accesibilidad, Mejores Prácticas y SEO).
- Soporte de [KaTeX](https://katex.org/).
- Todo el JavaScript se puede [deshabilitar completamente](https://welpo.github.io/tabi/es/blog/javascript/).
- [Skins personalizables](https://welpo.github.io/tabi/es/blog/customise-tabi/).
- [Feed estilizado](https://welpo.github.io/tabi/es/atom.xml).
- [Página de proyectos](https://welpo.github.io/tabi/es/projects/).
- [Página de archivo](https://welpo.github.io/tabi/es/archive/).
- [Tabla de contenido](https://welpo.github.io/tabi/es/blog/toc/).
- Etiquetas.
- Enlaces sociales.
- Diseño responsive.
- Resaltado sintáctico de código.
- [Cabeceras de seguridad personalizables](https://welpo.github.io/tabi/es/blog/security/).
- [Shortcodes personalizados](https://welpo.github.io/tabi/es/blog/shortcodes/).
## Prácticas de desarrollo
- **[Conventional Commits](https://www.conventionalcommits.org) y [Gitmoji](https://gitmoji.dev/)**: los mensajes de commit siguen formatos estandarizados para mejorar la legibilidad.
- **Seguimiento de problemas**: cada error o nueva funcionalidad tiene su propio ticket, que se vincula a los commits de código y PRs o problemas relacionados.
- **Comentarios detallados**: los tickets se documentan con imágenes, vídeos y descripciones detalladas para facilitar una comunicación y resolución de problemas efectivas.
- **Referencias cruzadas**: enlazamos todos los tickets con los commits de código, pull requests o problemas relacionados para una rastreabilidad completa.
## Evolución del proyecto
**tabi** nació como diseño para mi sitio personal, [osc.garden](https://osc.garden/es/). A pesar de sus raíces personales, desde el principio se implementaron buenas prácticas para asegurar la calidad y mantenibilidad. Desde entonces, el tema ha logrado atraer a una comunidad activa de contribuyentes en GitHub.
## Empieza tu aventura escribiendo con tabi
Tienes algo que decir. Tal vez se trate de cómo los lingüistas aún no han acordado una [definición de "palabra"](https://es.wikipedia.org/wiki/Palabra), o sobre tu experiencia explorando los diferentes [palos del flamenco](https://es.wikipedia.org/wiki/Flamenco#Palos), o de cómo lograste resolver un fallo de un proyecto de código abierto popular.
**tabi** te ofrece la base ideal para tu espacio de escritura, permitiéndote centrarte en tus palabras mientras Zola y tabi se encargan del aspecto técnicos. Sumérgete en el mundo de los blogs con un sistema que hace que cada publicación sea un placer escribir y leer. Tu voz tiene valor; compártela con el mundo.

@ -1,9 +1,56 @@
+++
title = "tabi"
description = "A fast, lightweight and modern Zola theme with optional JavaScript."
description = "A fast, lightweight, and modern Zola theme with multi-language support."
weight = 1
[extra]
local_image = "img/tabi.webp"
link_to = "https://github.com/welpo/tabi"
social_media_card = "img/projects_tabi.jpg"
+++
[**tabi**](https://github.com/welpo/tabi) is a modern, feature-rich theme for [Zola](https://www.getzola.org/), a fast static site generator.
{{ full_width_image(src="img/light_dark_tabi.webp", alt="tabi light and dark mode") }}
#### [View on GitHub](https://github.com/welpo/tabi) {.centered-text}
## Features
- [Comprehensive multi-language support](https://welpo.github.io/tabi/blog/faq-languages/#how-does-tabi-handle-multilingual-support). Add as many languages as you wish.
- [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](https://github.com/welpo/tabi/tree/main/i18n). The theme's interface will be translated accordingly.
- Dark and light themes. Defaults to the OS setting, with a switcher in the navigation bar.
- Support for [comments using giscus, utterances, Hyvor Talk, or Isso](https://welpo.github.io/tabi/blog/comments/).
- Perfect Lighthouse score (Performance, Accessibility, Best Practices and SEO).
- [KaTeX](https://katex.org/) support.
- All JavaScript can be [fully disabled](https://welpo.github.io/tabi/blog/javascript/).
- [Customizable skins](https://welpo.github.io/tabi/blog/customise-tabi/).
- [Stylized feed](https://welpo.github.io/tabi/atom.xml).
- [Projects page](https://welpo.github.io/tabi/projects/).
- [Archive page](https://welpo.github.io/tabi/archive/).
- [Table of Contents](https://welpo.github.io/tabi/blog/toc/).
- Tags.
- Social links.
- Responsive design.
- Code syntax highlighting.
- [Customizable secure headers](https://welpo.github.io/tabi/blog/security/).
- [Custom shortcodes](https://welpo.github.io/tabi/blog/shortcodes/).
## Development Practices
- **[Conventional Commits](https://www.conventionalcommits.org) & [Gitmoji](https://gitmoji.dev/)**: Commit messages follow standardised formats to enhance readability.
- **Issue Tracking**: Each bug or new feature has its dedicated ticket, which is linked to any consequent code commits and related PRs or issues.
- **Comprehensive Commentary**: Tickets are documented with images, videos, and detailed descriptions to facilitate effective communication and problem-solving.
- **Cross-Referencing**: We link all tickets to the relevant code commits, pull requests, or related issues for complete traceability.
## Project Evolution
**tabi** was originally designed for my personal website, [osc.garden](https://osc.garden). Despite its origins for personal use, best practices were implemented from the outset to ensure quality and maintainability. The theme has since grown to attract a vibrant community of contributors on GitHub.
## Start Your Writing Journey with tabi
You have something to say. Perhaps it's about how linguists haven't agreed on a [definition of "word"](https://en.wikipedia.org/wiki/Word) yet, or about your journey exploring the different [flamenco palos](https://en.wikipedia.org/wiki/Palo_(flamenco)), or about how you managed to solve a bug in a popular open-source project.
**tabi** provides the ideal foundation for your writing space, letting you focus on your words while Zola and tabi take care of the technical side. Step into the world of blogging with a system that makes each post a joy to write and to read. Your voice has value—share it with the world.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

@ -1,36 +1,31 @@
{%- set rel_attributes = macros_rel_attributes::rel_attributes() | trim -%}
{%- if config.markdown.external_links_target_blank -%}
{%- set blank_target = "target=_blank" -%}
{%- else -%}
{%- set blank_target = "" -%}
{%- endif -%}
<div class="cards">
{%- for page in show_pages %}
<div class="card">
{% if page.extra.link_to %}
<a rel="{{ rel_attributes }}" {{ blank_target }} href={{ page.extra.link_to }}>
{% endif %}
{% if page.extra.local_image %}
{% set meta = get_image_metadata(path=page.extra.local_image, allow_missing=true) %}
<img class="card-image" alt={{ page.extra.local_image }} src="{{ get_url(path=page.extra.local_image) }}" {% if meta.width %}width="{{ meta.width }}" {% endif %} {% if meta.height %}height="{{ meta.height }}" {% endif %}>
{% elif page.extra.remote_image %}
<img class="card-image" alt={{ page.extra.remote_image }} src="{{ page.extra.remote_image }}">
{% else %}
<div class="card-image-placeholder"></div>
{% endif %}
{% if page.extra.link_to %}
</a>
{% endif %}
{# Determine which URL to use, default is page.permalink #}
{%- if page.extra.link_to and config.markdown.external_links_target_blank -%}
{%- set blank_target = "target=_blank" -%}
{%- else -%}
{%- set blank_target = "" -%}
{%- endif -%}
{% set target_url = page.extra.link_to | default(value=page.permalink) %}
<a rel="{{ rel_attributes }}" {{ blank_target }} href="{{ target_url }}">
{% if page.extra.local_image %}
{% set meta = get_image_metadata(path=page.extra.local_image, allow_missing=true) %}
<img class="card-image" alt="{{ page.extra.local_image }}" src="{{ get_url(path=page.extra.local_image) }}" {% if meta.width %}width="{{ meta.width }}" {% endif %} {% if meta.height %}height="{{ meta.height }}" {% endif %}>
{% elif page.extra.remote_image %}
<img class="card-image" alt="{{ page.extra.remote_image }}" src="{{ page.extra.remote_image }}">
{% else %}
<div class="card-image-placeholder"></div>
{% endif %}
</a>
<div class="card-info">
<h2 class="card-title">
{% if page.extra.link_to %}
<a rel="{{ rel_attributes }}" {{ blank_target }} href={{ page.extra.link_to }}>{{page.title}}</a>
{% else %}
<a href={{ page.permalink }}>{{page.title}}</a>
{% endif %}
<a rel="{{ rel_attributes }}" {{ blank_target }} href="{{ target_url }}">{{ page.title }}</a>
</h2>
<div class="card-description">
@ -40,6 +35,5 @@
</div>
</div>
</div>
{% endfor -%}
</div>

Loading…
Cancel
Save