Guía
La guía de tug
El original en inglés de esta página ha cambiado desde que se tradujo, así que esta versión puede estar desactualizada. Léela en inglés
tug es un framework web para aplicaciones en Go cuyo frontend es Inertia.js: los handlers de Go renderizan páginas de React, Vue o Svelte con props, sin una API de por medio, y toda la aplicación se distribuye como un único binario. Esta guía va de una aplicación nueva a una desplegada. La documentación de cada paquete, en pkg.go.dev, tiene el resto de los detalles.
- Primeros pasos
instalar tug, crear una aplicación, ejecutarla y añadirle una página y un formulario.
- Rutas y handlers
la App, las rutas, los enlaces absolutos y firmados, los grupos, los middleware, entre ellos los de las cabeceras de seguridad, la ruta que respondió, la dirección del cliente detrás de un proxy,
Ctx, archivos, descargas, streams y eventos, el binding de peticiones y los errores. - Páginas
las páginas de Inertia y sus props, la plantilla raíz y su nonce, las props que se calculan más tarde, las props compartidas, las redirecciones, las descargas y los eventos en una página, las páginas de error, Vite y las DevTools de Inertia.
- Renderizado en el servidor
páginas renderizadas en el servidor para una primera visita, por Node junto a la aplicación, y el paquete
ssr. - Formularios y sesiones
la validación, reglas propias de la aplicación, formularios que comprueban cada campo al salir de él, los mensajes flash, las sesiones y CSRF.
- Idiomas
lo que dicen tug y la aplicación, en el idioma de la petición, a partir de un archivo por idioma, el paquete
langytug lang. - Archivos
los archivos subidos, comprobados por su tamaño y por lo que son, guardados en el disco de la aplicación o en S3 con el paquete
storage, y los enlaces a ellos, públicos o firmados. - Cuentas
el kit de inicio de autenticación, en SQLite, Postgres o MySQL, sus tokens de API y notificaciones, y los paquetes
authymail, con copias, archivos adjuntos y un enlace para darse de baja con un clic. - Migraciones
las tablas de la base de datos, creadas y modificadas por archivos SQL que se ejecutan una vez cada uno, en orden, al arrancar la aplicación y con su comando
migrate, contug migrate newpara crear el siguiente, y el paquetemigrate. - Autorización
lo que un usuario puede hacer con algo, las habilidades del paquete
auth, una negativa en forma de 403 que dice por qué, y lo que puede hacer el usuario de una página, en sus props. - Cifrado
la clave de la aplicación, lo que tug cifra y firma con ella, el paquete
crypt, para los valores propios de la aplicación, y la rotación de la clave. - Tareas en segundo plano
el paquete
queue, para el trabajo que dura más que la petición: se vuelve a ejecutar cuando falla, se ejecuta según un horario, también en una zona horaria, queda en cola una sola vez por muchas veces que se pida, o como mucho tantas a la vez o por segundo, en todas las instancias, y avisa cuando ha fallado definitivamente, y cuenta cómo ha ido cada ejecución. - Caché
el paquete
cache, para lo que es lento de calcular, guardado donde lo encuentran todas las instancias de la aplicación, y bloqueos para lo que no debe ejecutarse dos veces a la vez. - Difusión de eventos
el paquete
broadcast, eventos en canales llevados por la base de datos de la aplicación hasta las páginas abiertas en todas las instancias, que recargan lo que cambió. - TypeScript
los tipos que
tug genescribe a partir del código Go. - Pruebas
el paquete
tugtest, el cliente de Inertia para las pruebas en Go de las páginas, los formularios, las subidas de archivos y los inicios de sesión de una aplicación,mailtest, para su correo, y sus eventos. - Despliegue
un único binario, el Dockerfile, el entorno, HTTPS servido por la propia aplicación, con certificados de Let's Encrypt, las cabeceras que dicen qué puede hacer un navegador con las páginas de la aplicación, entre ellas una Content-Security-Policy, los logs y las métricas.
- La CLI
tug new,tug dev,tug gen,tug routes,tug lang,tug migrate,tug buildytug key, en detalle.
La hoja de ruta cuenta cómo se construyó tug, las decisiones que hay detrás y lo que viene después, y los benchmarks, lo que cuesta tug en cada petición, lo que necesita para funcionar una aplicación hecha con él y cómo se midió.