STXT - Semantic Text
Built for humans. Reliable for machines.

Ficheros de configuración

Los ficheros de configuración suelen empezar siendo simples… y acabar convirtiéndose en una mezcla frágil de:

STXT está especialmente pensado para este punto de fricción: configuración legible por humanos, estructurada, y validable sin convertirse en un lenguaje de programación.

Qué tipo de configuraciones

Ejemplos habituales donde STXT encaja bien:

Problemas habituales con otros formatos

En la práctica, los equipos se encuentran con:

STXT busca un equilibrio distinto:

Ejemplo 1 — Configuración de servidor

Configuración legible, editable a mano y estructurada.

Server Config (@com.acme.server):
	Name: api-gateway
	Environment: production

	Network:
		Host: 0.0.0.0
		Port: 8080
		Public url: https://api.acme.com

	Threads:
		Min: 8
		Max: 64

	Timeouts:
		Read ms: 5000
		Write ms: 5000

	Logging:
		Level: INFO
		Format: json

	Features:
		Feature:
			Name: experimental-cache
			Enabled: false
		Feature:
			Name: audit-logging
			Enabled: true

	Description >>
		Configuración principal del gateway de APIs.
		Este fichero se versiona en Git y se despliega junto
		con la aplicación.

		Cambios críticos deben pasar por revisión.

Qué aporta aquí STXT

Ejemplo 2 — Configuración por entorno

Mismo formato, distintos entornos, sin duplicar estructura.

Application Config (@com.acme.app):
	App name: Billing

	Environments:
		Environment:
			Name: dev
			Database:
				Url: jdbc:postgresql://localhost/dev
				Max connections: 5
			Debug: true

		Environment:
			Name: staging
			Database:
				Url: jdbc:postgresql://staging/db
				Max connections: 10
			Debug: false

		Environment:
			Name: prod
			Database:
				Url: jdbc:postgresql://prod/db
				Max connections: 30
			Debug: false

Ventajas frente a “copiar y pegar”

Ejemplo 3 — Feature flags

Un caso clásico donde conviven datos y texto explicativo.

Feature Flags (@com.acme.features):
	Feature:
		Key: new-checkout
		Enabled: false
		Owner: Payments
		Description >>
			Nuevo flujo de checkout.
			Activar progresivamente por entorno.

	Feature:
		Key: rate-limit-v2
		Enabled: true
		Owner: Platform
		Description >>
			Nuevo sistema de rate limiting.
			Reemplaza la versión anterior basada en filtros.

Validación con @stxt.template

En configuración es muy común querer:

Template (@stxt.template): com.acme.server
	Description: Configuración del servidor API
	Structure >>
		Server Config:
			Name: (1)
			Environment: (1) ENUM [dev, staging, production]

			Network: (1)
				Host: (1)
				Port: (1) INTEGER
				Public url: (?)

			Threads: (?)
				Min: (1) NATURAL
				Max: (1) NATURAL

			Timeouts: (?)
				Read ms: (?) NATURAL
				Write ms: (?) NATURAL

			Logging: (?)
				Level: (1) ENUM [DEBUG, INFO, WARN, ERROR]
				Format: (?) ENUM [text, json]

			Features: (?)
				Feature: (*)
					Name: (1)
					Enabled: (1) BOOLEAN

			Description: (?) TEXT

Este template:

Validación con @stxt.schema

Cuando la configuración se convierte en contrato entre sistemas:

un schema ofrece control total y explícito.

En la práctica:

Comparación conceptual

STXT para configuración se sitúa entre:

STXT:

Solo describe estructura + datos + texto.

Recomendaciones de uso

Resumen

Los ficheros de configuración son un caso natural para STXT: